Liczba wystąpień liter w stringu

0

Potrzebuje pomocy z liczeniem wystąpień danych liter w stringu.

jezeli x = "TestString", y = "Tt"
to output powinien byc

T: 1
t: 2

Poniżej jest kod, nie wiem co źle robię.

void counter(string x, string y)
{

    int signs[100];
    int amount = 0;

    for (int i = 0; i < y.length(); i++)
    {

        signs[i] = y[i];
        cout << signs[i];
        for (int j = 0; j < x.length(); j++)
        {
            if (x[i] == y[i])
            {
                amount++;
            }
        }
        cout << y[i] << ":" << amount << endl;
    }
}

    int main()
    {

        string x, y;
        cout << "Wprowadz pierwszy napis: " << endl;
        cin >> x;
        cout << "Wprowadz drugi napis: " << endl;
        cin >> y;

        counter(x, y);
        return 0;
    }
0

Zacznijmy od definiowania funkcji. Piszesz, że chcesz zliczać wystąpienia liter w stringu. Czemu funkcja rzekomo za to odpowiedzialna przyjmuje 2 stringi i nic nie zwraca?

0
void counter(const string &x,const string &y)
{
    int signs[256]={0};
    for(auto ch:y)
    {
        auto fnd=find(begin(x),end(x),ch);
        if(fnd==end(x)) coontinue;
        ++signs[fnd-begin(x)];
    }
    for(int i=0;i<x.size();++i) if(signs[i]) cout<<x[i]<<": "<<signs[i]<<endl;
}
0
void counter(const std::string &x, const std::string &y)
{
    int ch_freq[256] = { 0 };
    
    for(auto ch: x) {
        ++ch_freq[static_cast<unsigned char>(ch)];
    }
    
    for(auto ch: y) {
        std::cout << ch << ": " << ch_freq[static_cast<unsigned char>(ch)] << '\n';
    }
}
0
Descendant napisał(a):

Poniżej jest kod, nie wiem co źle robię.

Ja też nie wiem co robisz źle. Może podaj wynik z tego programu to się razem zastanowimy?

0

Gadacie jakieś głupoty, a jedynym błędem w programie było x[i] zamiast x[j]

1
Descendant napisał(a):

Gadacie jakieś głupoty, a jedynym błędem w programie było x[i] zamiast x[j]

Jeśli uważasz, że ktoś gada głupoty, to możesz poszukać innego forum, na którym ludzie gadają mądre rzeczy. To ty przyszedłeś po pomoc :) .

0
Descendant napisał(a):

Gadacie jakieś głupoty, a jedynym błędem w programie było x[i] zamiast x[j]

Doprawdy?
Ja widzę jeszcze dwa na pierwszy rzut oka.
Oraz kilka natury - wywal a nadal będzie działać.
Zauważ że w naszych głupotach nawet nie ma szans popełnienia podobnych do twoich głupot.

1 użytkowników online, w tym zalogowanych: 0, gości: 1