Мне нужно написать программу, которая учитывает все гласные в тексте & выдает процент каждого гласного для всего текста. По какой-то причине нам не разрешено использовать массивы, но вместо этого нужно делать это с помощью getchar().Подсчет гласных в тексте без массивов (C)
#include <stdio.h>
#include <ctype.h>
int main() {
int current;
int cntAll = 0;
int cntA = 0, cntE = 0, cntI = 0, cntO = 0, cntU = 0;
int pA = 0, pE = 0, pI = 0, pO = 0, pU = 0;
printf("Enter Text: ");
while ((current = getchar()) != EOF){
if (isspace(current)) continue; // check for whitespace, if whitespace continue
else {
switch (current) { // check for vowel & increase vowelcount
case 'a':
cntA += 1;
case 'A':
cntA += 1;
case 'e':
cntE += 1;
case 'E':
cntE += 1;
case 'i':
cntI += 1;
case 'I':
cntI += 1;
case 'o':
cntO += 1;
case 'O':
cntO += 1;
case 'u':
cntU += 1;
case 'U':
cntU += 1;
}
}
cntAll++;
}
pA = (cntA/cntAll) * 100;
pE = (cntE/cntAll) * 100;
pI = (cntI/cntAll) * 100;
pO = (cntO/cntAll) * 100;
pU = (cntU/cntAll) * 100;
printf("\nLetters: %d\nPercentage A: %d\nPercentage E: %d\nPercentage I: %d\nPercentage O: %d\nPercentage U: %d\n",cntAll,pA,pE,pI,pO,pU);
system("PAUSE");
return 0;
}
Увеличение значения cntAll работает без проблем, но по какой-либо причине оно не учитывает отдельные гласные. Поблагодарили бы за помощь!
Отредактировано:
#include <stdio.h>
#include <ctype.h>
int main() {
int current;
int cntAll = 0;
int cntA = 0, cntE = 0, cntI = 0, cntO = 0, cntU = 0;
double pA = 0, pE = 0, pI = 0, pO = 0, pU = 0;
printf("Enter Text: ");
while ((current = getchar()) != EOF){
if (isspace(current)) continue;
else {
switch (current) {
case 'a':case 'A':
cntA += 1;
break;
case 'e':case 'E':
cntE += 1;
break;
case 'i':case 'I':
cntI += 1;
break;
case 'o':case 'O':
cntO += 1;
break;
case 'u':case 'U':
cntU += 1;
break;
}
}
cntAll++;
}
pA = 100.0 * cntA/cntAll;
pE = 100.0 * cntE/cntAll;
pI = 100.0 * cntI/cntAll;
pO = 100.0 * cntO/cntAll;
pU = 100.0 * cntU/cntAll;
printf("\nLetters: %d\nPercentage A: %.2lf\nPercentage E: %.2lf\nPercentage I: %.2lf\nPercentage O: %.2lf\nPercentage U: %.2lf\n",cntAll,pA,pE,pI,pO,pU);
system("PAUSE");
return 0;
}
веселит
вы забыли «перерыв» между случаями. – Art
Все ваши переменные являются ints, поэтому деление будет целочисленным. Проценты, вероятно, лучше всего делать как float (которые вы можете форматировать как ints с 'printf'). – Joe
Кажется, домашнее задание – csblo