liczenie znaków

0

Witam
Posiadam, zadanko następującej treści.

  1. Dla podanego ciągu znaków program wypisuje statystykę znaków w łańcuchu, tzn. ile razy każda litera wystąpiła w tekście.
    Nie wiem nawet jak sie za to zabrac.
    Muszę, pobrać znak za pomocą strchr a później iterowac łańcuch i porównywać każdy kolejny i jeśli natrafi to zwiększać licznik później to wypisywać ale jak pozniej zeby wziasc druga, i przede wszystkim jak zrobic zeby sie nic nie powtorzylo bylbym bardzo wdzieczny za nakreślenie jakiegoś konkretnego sposobu działania w tym zadaniu.
    Pozdrawiam.
2

Zadeklaruj tablicę elementów typu int od długości odpowiadającej ilości znaków w tabeli ASCII i inicjalizujesz ją zerami.
Iterujesz po pobranym łańcuchu znaków i powiększasz o jeden wartość elementu spod indeksu odpowiadającemu
wartości kodu danego znaku z tabeli ASCII.
Na koniec wypisujesz kolejno wszystkie znaki, czyli numer indeksu castowany na char i wartość elementu,
określającą liczbę wystąpień danego znaku.

Jeszcze to: http://www.cplusplus.com/reference/cstring/strchr/, bo chyba nie do końca zrozumiałem problem.
Może tutaj będzie rozwiązanie.

0

Nie jestem pewny czy dobrze zrozumiałem.
Biore sobie ta tabelke z załącznika i tam każda literka ma swoja wartosc w systemie dziesiątkowym, po kolei sprawdzam caly lancuch ile razy ma "a" i wyświetlam później zeruje zmienna która przechowuje ilość wystąpień "a" i zwiększamy wartość o 1 zeby przejść teraz na "b" i znowu liczę wyświetlam i tak sobie kręcę aż nie dojde do "z" nw czy dobrze zrozumialem.

0

Nadmiarowe kręcenie pętlami, ale tak, o to chodziło.

0

dzięki wielkie

1

Taki przykład do przejrzenia

const char* str = "napis testowy";
   int chars_count[256] = {};
   for (size_t i = 0; i < strlen(str); ++i) {
      ++chars_count[str[i]];
   }

   for (size_t i = 97; i <= 122; ++i) {
      if (chars_count[i]) {
         printf("%c: %d \n", i, chars_count[i]);
      }
   } 

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