Файл содержит набор символов. Слово - произвольная последовательность латинских символов, разделители-любые другие символы.Определить слово с самым большим количеством заглавных букв. Если таких несколько вывести все
Подскажите пожалуйста как все слова вывести
Вроде понимаю Завести массив строк и счетчик, изначально в нем 0. Если в слове нужных букв меньше, чем в уже найденном максимальном - ничего не делать. Если равно - добавить слово в массив, инкрементировать счетчик. Если больше - записать слово в первый элемент массива, в счетчик - единицу.
Но реализовать не могу
Код:
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#define N 100
#define DELIM " \t\n"
int upper_letters(const char * word) {
int uppers = 0;
for ( ; *word; ++word )
uppers += !!isupper(*word);
return uppers;
}
int main(int argc, char const *argv[])
{
char buf[N];//обьявление строкового массива
int i=0,max=0;
FILE *filP;
filP=fopen("file.txt","r");
fgets(buf,N,filP);
fgets(buf,N,filP);
char * str = buf, * maxWord, * curWord;
int maxUppers, curUppers;
for ( ; *str; ++str )
if ( ! isalpha(*str) )
*str = ' ';
maxWord = strtok(buf, DELIM);
maxUppers = upper_letters(maxWord);
while ( ( curWord = strtok(NULL, DELIM) ) ) {
curUppers = upper_letters(curWord);
if ( curUppers > maxUppers ) {
maxWord = curWord;
maxUppers = curUppers;
}
}
printf("First word with max. upper letters: %s\n", maxWord);
fclose(filP);
return 0;
}