Zliczanie liter w pobranym z pliku ciągu znaków

0

Witam
Dopiero zaczynam przygodę z programowaniem ale mam do zrobienia program który :

  1. Odczyta z pliku litery : u mnie np. AjsKLSjjshaaaaaa i wyświetli je na ekranie.
  2. Wypisze ile było liter (odróżni wielkie litery od małych) : np. "A" = 1, "a" = 6.

Pierwszy podpunkt już mam ale niestety nie wiem jak zrobić drugi podpunkt :( szukałem na wielu stronach ale znalazłem tylko wypisywanie ilości wszystkich liter np. AjsKLSjjshaaaaaa i wychodziło : Plik zawiera 20 liter.

Prosiłbym o pomoc

0

@Fusion789 zapoznaj sie z tablicą ASCII i if'em

2
int tb[52]={0};
char ch=fgetc(file);
if(isupper(ch)) ++tb[ch-'A'];
else if(islower(ch)) ++tb[26+ch-'a'];
0

ASCII tutaj nic do tego (szczególnie, że C nie gwarantuje użycia tego konkretnego standardu).

Najprościej tutaj chyba będzie zrobić tablicę wystąpień dla każdej możliwej wartości zmiennej char (trzeba ją tylko traktować jako unsigned) i ją inkrementować w przypadku wystąpienia tej literki (wystapienia[literka]++). Potem możesz wyświetlić wszystkie niezerowe, czy inne pożądane, wartości.

1

robisz tablicę liczb tylo elementową ile różnych jest znaków (256 dla jednobajtowych znaków)
a potem wystarczy że odczytasz chara i zwiększysz liczbę na identycznym indeksie tablicy

tablica[znak]++

na końcu przeleć po tablicy i wypisz te znaki które mają liczbę > 0

0

Chciałbym zaznaczyć jedną ale to chyba najbardziej istotną rzecz w tym temacie : " Dopiero zaczynam przygodę z programowaniem ".

Przepraszam was bardzo ale chyba po to wrzuciłem temat w kategorii "Newbie" żebyście chociaż trochę po ludzku mi to wytłumaczyli.

Nie proszę was o gotowy kod ale tylko o to żeby wytłumaczyć problem osobie która zaczyna programowanie a nie takiej co już trochę tego programowania liznęła.

1

http://edu.i-lo.tarnow.pl/inf/alg/003_sort/0023.php
Tutaj elementami, które zliczamy są znaki, które w C mają też swój odpowiednik liczbowy, np '0' jest równy 48, '1' równy 49 itd.
Jeśli char literka = 'A'; to literka - 'A' daje wynik 0, co wykorzystał @_13th_Dragon. U niego 'A' jest zliczany pod indeksem 0, 'B' pod indeksem 1 itd.
A do małych liter dodaje 26, żeby 'a' było pod indeksem 26, 'b' pod indeksem 27.

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