cpp_pointers.cpp

Shkarkuar 622 herë. Ngarkuar më Mars 2010

pointer
pointers
c++
cpp
int
char
pchar
string
det
Shkarko Kthehu ne C++
#include <iostream>
#include <string>

using namespace std;

/**
 *  kthen gjatesine e stringut s
 *
 *  @param stringu te cilit do i gjendet gjatesia
 *  @return gjatesia e stringut s
 */
int len(string s)
{
    // gjatesia fillestare eshte 0
    int l = 0;

    // marrim nje Pointer per te karakteri
    // i pare i stringut S.
    char * p = &s[0];

    // Per sa kohe vlera ne te cilen
    // shenjon p eshte e ndryshme
    // nga 0...
    //
    // 0 eshte nulli. karakteri i cili
    // shenon fundin e c'do stringul
    while (*p != 0)
    // rrisim l (e cila mban gjatesine)
    // rrisim p ne menyre qe te shenjoje te
    // karakteri pasardhes
        (l++, p++);

    // nese kemi ardhur ketu do te thote qe
    // cikli ka ndaluar sepse kemi hasur ne
    // nje null.
    return l;
}

/**
 * kthen pozicionin e karakterit find ne stringun where
 *
 * @param char find eshte karakteri i cili do kerkohet
 * @param string where eshte stringu ne te cilin do kerkohet
 * karakteri find
 *
 * @return pozicioni i karakterit find ne stringun where.
 * nese karakteri find nuk gjendet funksioni kthen -1
 */
int strpos(char find, string where)
{
    // bejme nje cikel mbi te gjithe stringun
    for (int i = 0; i < len(where); i++)
    {
        // nese karakteri i tanishem eshte i njejte
        // me ate qe po kerkojme
        //
        // kthejme si vlere te funksionit numrin I
        if (where[i] == find)
            return i;
    }

    // Nese kemi arritur ketu do te thote qe karakteri
    // find nuk eshte gjetur.
    //
    // prandaj kthejme -1
    return -1;
}

/**
 * heq karakteret e perseritura te stringu s
 * kerkimi eshte case-sensitive
 *
 * @param s stringu i cili do kerkohet
 * @return stringu i ri me karakteret e perseritura te hequr
 *
 */
string stripduplicates(string s)
{
    // stringu result do mbaje vleren
    // e kthimit te funksionit
    string result = "";

    for (int i = 0; i < len(s); i++)
    {
        // ruajme pozicionin e karakterit
        // te i-te te stringut s ne stringun s
        int pos = strpos(s[i], s);

        // nese ky karakter eshte gjetur
        // gje qe duhet te ndodhe
        // dhe pozicioni i tij
        // eshte i barabarte me I,
        // pra nuk eshte gjetur me para
        // atehere e shtojme kete karakter
        // ne stringun qe funksioni do ktheje
        if (pos == i)
            result += s[i];
    }

    return result;
}

string stripduplicates2(string s)
{
    // result eshte stringu i cili
    // do mbaje vleren e kthimit te funksionit
    string result = "";

    for (int i = 0; i < len(s); i++)
    {
        // nese karakteri i i-te i stringut
        // s nuk ekziston ne stringun rezultant
        // atehere e shtojme ate
        if (strpos(s[i], result) == -1)
            result += s[i];
    }

    return result;
}

int main()
{
    string str = "Hello World from C++";

    cout << "Heqim karakteret e perseritura nga \"" << str << "\"\n\n";

    cout << "Menyra 1 : " << stripduplicates(str) << endl;
    cout << "Menyra 2 : " << stripduplicates2(str) << endl;

    return 0;
}