Witam, W ramach ćwiczeń musiałem, napisać program, który prosi o podanie jakiegoś słowa (wystarcza male litery i alfabet angielski), a następnie zlicza, ile słowo ma liter oraz ile razy dana litera występuje w danym słowie. Napisałem taki program:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main()
{
int f = 0; int i=0; int i2=0;
char ch;
char alf[] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' }; //tablica ma 26 elementow
int wynik[26] = {[25] = 0}; // automatycznie wypelnia cala tablice 0
printf("Wpisz jakies slowo (max 99 liter), a ja wypisze, ile razy wystepuje dana litera\n");
printf("Wpisz slowo: \n");
while( (ch = getchar()) != '\n')
{
while(f<1)
{
if(ch == alf[i])
{
wynik[i]++;
f=1;
} i++;
} f=0; i=0;
i2++;
} i=0;
printf("\nPodane slowo ma %d liter\n", i2);
printf("\nZawiera nastepujace litery:\n");
while(i<26)
{
if(wynik[i] == 0)
{
i++;
continue;
}
printf("Litera %c wystepuje %d razy\n", alf[i], wynik[i]);
i++;
}
getchar();
return 0;
}
Generalnie wszystko działa, jednak chciałbym Was poprosić o ocenę algorytmu, jaki wymyśliłem i zastosowałem. Może być coś takiego? Czy nie jest to wg. Was jakiś beznadziejny algorytm (na pewno lepszy niż wypisanie 26 ifów xD)? I czy można to zrobić jakoś lepiej? Generalnie czasami mam problem z algorytmiką, więc chciałbym żeby ten kod ocenił ktoś bardziej doświadczony.
edit: w sumie mniejsza z tym limitem 99 znaków. Tego limitu tutaj jednak ma nie być.