#include <stdio.h>
int main (void)
{
int n;
printf("Give the number of words you want to input.");
scanf("%d",&n);
int letters[n],i,j,count,key,k;
char str[100];
//Scans each word, counts it's letters and stores it in the next available
//position in "letters" array.
for (i=0;i<n;i++)
{
j=0;
printf("Give the next word.");
do{
str[j] = getchar();
j++;
}while (str[j-1]!='\n');
str[j-1] = '\0';
letters[i] = j;
}
//Compacts the data by figuring out which cells have the same number of letters
for (i=0;i<n;i++)
{
key = letters[i];
count = 0;
for (j=i+1;j<=n;j++)
{
if (key==letters[j])
{
count += 1;
letters[j] = 0;
}
}
letters[i] = count;
}
//creates a histogram
i=0;
do{
printf("%d|",i);
for (j=1;j<=letters[i];j++)
{
printf("*");
}
printf("\n");
i++;
}while ((i<=n));
return 0;
}
Я понимаю, что getchar(); читает, первый ввод (\n) пользователь нажимает, чтобы указать количество слов, которые он хочет ввести, и, таким образом, ожидает на одно слово меньше.
Кроме того, я получаю бесконечный цикл по какой-то причине в конце. Любая помощь и идеи будут оценены. Заранее спасибо.
getchar()
возвращаетint
, которое является либо значениемchar
(обрабатывается как беззнаковое), либо отрицательным значением (условно -1), указывающим EOF. Это на одно значение больше, чем может поместиться вchar
, поэтому возвращаемый тип —int
. Я не смотрел, что еще не так. - person Jonathan Leffler   schedule 22.01.2014