C/C++

Напишите пожалуйста программу на Си

Ввести текст. Определить, на какую букву оканчивается больше всего слов в тексте.
Код под Visual Studio
 #include  
#include
#include
#define BUFFER 0x400
#define SIZEBOX 0x100
char char_max(const char* box) {
size_t index = 0;
size_t i = 0;
while (++i < SIZEBOX) if (box[i] > box[index]) index = i;
return (char)index;
}
int main(void) {
char line[BUFFER];
gets_s(line, BUFFER);
const char* delim = " ";
char* word = NULL;
char* context = NULL;
char box[SIZEBOX] = { 0 };
char letter;
word = strtok_s(line, delim, &context);
while (word != NULL) {
++box[word[strlen(word) - 1]];
word = strtok_s(NULL, delim, &context);
}
letter = char_max(box);
printf("Letter: %c", letter);
system("pause > nul");
return 0;
}
АК
Али Кайрат
87 358
Лучший ответ
 #include  

const char bukvy[] = "aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ";

int is_bukva(const char c)
{
for(int x = 0; bukvy[x]; x++)
if(c == bukvy[x])
return 1;
return 0;
}

int main()
{
const int size = 1000;
char s[size];
int i,j, count[26] = {0}, max = 0, i_max = 0;

fgets(s,size,stdin);

for(i = 0; s[i]; i++)
{
if(is_bukva(s[i]) && s[i])
while(is_bukva(s[i]) && s[i])
i++;
for(j = 0; bukvy[j]; j++)
if(s[i-1] == bukvy[j])
{
count[(j)/2]++;
}
}

for(j = 0; j < 26; j++)
{
if(max < count[j])
{
i_max = j;
max = count[j];
}
}

printf("%c\n",bukvy[i_max*2]);

return 0;
}
Василий Смирнов Я отредактировал код
 #include  
#include
#include

#define BUFFER_SIZE 512

int main(void)
{
int i;
char buffer[BUFFER_SIZE];
size_t chars['z'] = {0};
char frequent = 'a';

if (fgets(buffer, BUFFER_SIZE, stdin)) {
for (i = 0; i < strlen(buffer); i++) {
switch (buffer[i + 1]) {
case '\0':
case ' ':
chars[buffer[(i++)]]++;
}
}
}

for (i = 'a'; i < 'z'; i++) {
if (chars[frequent] < chars[i])
frequent = i;
}

printf("frequent: %c\n", frequent);
return 0;
}

// one two three four five six seven eight nine ten
// frequent: e