|
Главная | Правила | Регистрация | Дневники | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
|
Опции темы | Опции просмотра |
24.03.2019, 21:33 | #1 (permalink) |
Новичок
Регистрация: 24.03.2019
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Определить слово с самым большим количеством заглавных букв
Подскажите пожалуйста как все слова вывести Вроде понимаю Завести массив строк и счетчик, изначально в нем 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; } |
24.03.2019, 21:33 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Вот вам темы по аналогичным проблемам Сформировать числовой массив с количеством букв в строке на Си Чтобы вводя слово в строку, набирая первые буквы уже появлялось слово целиком? Программа для обработки массивов с разным количеством элементов. Pascal Разработка циклической программы с неизвестным количеством повторений в чем отличие i5 и i3 с одними частотами и количеством ядер? |
24.03.2019, 21:47 | #2 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
К сожалению, на СИ не пишу, но может быть другой алгоритм попробовать, если с этим проблемы? Например, так: проходим файл 2 раза, на первом проходе ищем максимальное количество заглавных букв, содержащихся в словах (просто число!), а на втором — выводим слова, содержащие найденное количество указанных букв. Как встречаем такое слово, так сразу и выводим. Не?
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
Опции темы | |
Опции просмотра | |
|
|