Zliczanie znaków w tablicy char

0

Witam,

Nie wiem jak zliczyć ilość znaków w tablicy to której parametry były wprowadzane za pomocą

cin.getline()

Mam tablice t[9] do której wpisuje np. abc, starałem się to zrobić tak:

for(int i=0;i<9;i++)
	{
		if(t[i]>=97 && t[i]<=122);
		{
		l++;
		}
	}

Chciałem użyć tu kodów ASCII lecz wynikiem tego jest l=9, a powinno być 3. Tu pojawia się moje pytanie, jak powinienem poprawić moją funkcje? Lub jeżeli istnieje inny sposób na rozwiązanie mojego problemy to z chęcią go poznam :)

0

A na końcu tablicy znaków ustawiasz \0 ?

0

Nie wiem, mam tą funkcje

cin.getline(t,9)

a zaraz pod nią tą pętle do zliczania znaków. Więc co powinienem poprawić ?

1

A tak ogólnie to po co zliczasz znaki? Jest do tego gotowa funkcja strlen()

0

Na końcu muszę wypisać ile razy dana litera wystąpi w innej tablicy np.
a:4
b:3
c:2

Zrobiłem to w pętli for, i przydała by mi się ta liczba żeby wyświetlał tylko te 3 elementy a ja mam takie coś:

a:4
b:3
c:2
:2
:2
....
i tak 9x.

Funkcja strlen() podziałała lecz gdy ją wpisze w for'a:

for(int d=0;d<strlen(t1);d++)

to wypisuje mi:
a:0
b:0
c:0
a gdy zmienię na

for(int d=0;d<l;d++)

to poprawnie wyświetla lecz to moje l=9, troszkę dziwne :/

1

Jeżeli masz rozróżniać duże i małe litery to po prostu deklarujesz sobie tablicę 57 elementów, zerujesz ją a potem przy napotkaniu litery zwiększasz komórkę w tablicy o indeksie równym wartości litery w kodzie ASCII - 65 (żeby dla A było 0)

Potem jeśli komórka w tablicy jest różna od zera, wypisujesz sobie i tyle, czyli coś takiego:

for(int i = 0; i < strlen(t); ++i)
    wartosci[t[i]-65] += 1;
for(int i = 0; i < 57; ++i)
    if(wartosci[i] != 0)
        cout << (char)i+65 << "  " << wartosci[i] << "\n";
0

Jeśli chodzi Ci o to aby sprawdzić ile razy wystąpiła dana litera(od a do z) w danym napisie to najlepiej przygotowac pojemnik dla każdej litery, pojemniki zainicjalizowac wartością 0, następnie przeleciec przez napis i inkrementowac odpowiedni pojemnik

0

Ok już się z tym uporałem wielkie dzięki :)

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