Liczenie samoglosek jezyk C

0

Witam, napisalem program, ktory zlicza samogloski w ciagu znakow. Moim problemem jest to, ze nie wiem jak zrobic aby po wcisnieciu ENTERu a nie po wpisaniu ciagu skladajacego sie z 5 znakow, program przechodzil dalej. Oto kod:

 #include <stdio.h>
#include <stdlib.h>
#define ROZMIAR 5
int main()
{
    char tablica[ROZMIAR];
    char a,e,i,u,y,o,b;
    int index,wynik=0;
    printf("Podaj ciag znakow: ");
    for(index=0;index<ROZMIAR;index++){
        scanf("%c",&tablica[index]);
            if(tablica[index]=='a' || tablica[index]=='A' || tablica[index]=='e' || tablica[index]=='E' || tablica[index]=='i' || tablica[index]=='I' || tablica[index]=='o' || tablica[index]=='O' || tablica[index]=='u' || tablica[index]=='U' || tablica[index]=='y' || tablica[index]=='Y'){
                wynik+=1;
            }
    }
printf("\nLiczba samoglosek w ciagu to: %d",wynik);
return 0;
}
1

Napisz o co ci chodzi jeszcze raz bo nie idzie zrozumieć twojego pytania.
Ale z tego co się domyślam to po prostu użyj getchar.

0
  1. Zadeklaruj tablicę większą niż 5-elementową.
  2. Wczytaj całość raz scanf("%s", tablica), a nie pojedyncze literki w pętli.
  3. Te samogłoski też trzymaj w jakiejś drugiej tablicy i potem sprawdzasz czy literka występuje w tej drugiej tablicy. Te ify są słabe.
2
#include <stdio.h>
#include <ctype.h>
int main(int argc, char* argv) {
    int numberOfVowels=0;
    int c;
    while( (c=tolower(getchar()))!='\n' )
        if(c=='a'||c=='e'||c=='i'||c=='o'||c=='u'||c=='y')
            ++numberOfVowels;
    printf("%d\n", numberOfVowels);
}

Jako funkcja:

int fun(char *text) {
    int numberOfVowels=0;
    int i, c;
    for(i=0; i<=strlen(text); tolower(c=text[i++]))
         if(c=='a'||c=='e'||c=='i'||c=='o'||c=='u'||c=='y')
            ++numberOfVowels;
    return numberOfVowels;
0

Wlasnie mi brakowalo tego getchar. Dzieki :)

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