все будет хорошо до определенного момента, как AG будет считаться хорошо.но он ударяет по букве вроде I или H и подбрасывает какое-то сумасшедшее число, например 1,7 миллиарда случаев, а затем пытается распечатать столько звездочек на диаграмме.Я бился головой об этом и не могу понять ... что не так с этим для цикла?рассматриваемый цикл for находится в шаге 2
#include <stdio.h>
#define MAXROWS 100
#define NUM_ALPHABETS 26
int main(){
int count, i, j, k;
char sentence[MAXROWS];
char alphabets[] = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', '$
int frequency[NUM_ALPHABETS];
// step 1:Write a function that reads a sentence from the keyboard (2 pts)
printf("Please enter a sentence: \n");
fgets(sentence, sizeof(sentence), stdin);
// step 2:Find out the frequency of the alphabets in the sentence, ignore uppercase or lowercase in the sentence(4 pts)
for(i = 0; sentence[i] != "\n"; i++) {
for(j = 0; j < NUM_ALPHABETS; j++) {
if(tolower(sentence[i]) == tolower(alphabets[j])) {
frequency[j]++;
}
}
}
// step 3: Print the histogram as shown in the screenshot(4 pts)
printf("%12s%12s%10s\n", "Alphabets", "Frequency", "Histogram");
for(j = 0; j < NUM_ALPHABETS; j++) {
printf("%12c%12d ", alphabets[j], frequency[j]);
for(k = 0; k < frequency[j]; k++) {
printf("*");
}
printf("\n");
}
return 0;
}
, он должен распечатать диаграмму, и он работает до определенной точки.но как только он попадет в какую-то случайную букву (это не одна и та же буква каждый раз), он будет насчитывать около миллиарда или 2 миллиардов вхождений (иногда даже отрицательных)