Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.11.2011, 16:49   #1
Twisterr
Пользователь
 
Регистрация: 25.09.2011
Сообщений: 10
По умолчанию Строки

Сделал .

Последний раз редактировалось Twisterr; 09.11.2011 в 14:38.
Twisterr вне форума Ответить с цитированием
Старый 08.11.2011, 17:21   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Как-то всё сложно.
Если слово может быть пустым, то:
Читаем символ. Если это буква, плюс один к количеству букв; если это цифра-знак_препинания-пробел, плюс один к количеству слов; если это решётка - плюс один к количеству слов и вывести K/P.
Если слово не может быть пустым, то завести дополнительный флаг "текущее слово пустое", изначально взведённый, и управлять его состоянием.
Код:
float GetAverageWordLengthInStdin(void){
    char c;
    int words=0, letters=0;
    bool wordIsEmpty=true;
    while(scanf("%c", &c)==1){
        if(isalpha(c)) {wordIsEmpty=false; ++letters;}
        else if(IsDelimiter(c)) {if(!wordIsEmpty) ++words; wordIsEmpty=true;}
        else if(IsEndSign(c)) {if(!wordIsEmpty) ++words; break;}
        else return 0;
    }
    return (words==0)?0:(float)letters/(float)words;
}

inline bool IsDelimiter(char c){
    static const char delimiters[] = " 0123456789,.?!-";
    for(int i=0; i<16; ++i) if(delimiters[i]==c) return true;
    return false;
}

inline bool IsEndSign(char c){
    return c=='#';
}
Abstraction вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сделать в гриде строки выше, чтобы не растягивать строки до бесконечности kris__tina БД в Delphi 1 09.06.2011 15:31
Даны строки S и S0. Удалить из строки S все подстроки, совпадающие с S0 . Если совпадающих подстрок нет, Шпунюся Помощь студентам 1 16.12.2010 21:02
Создание пустой строки и копирование в неё содержимое предыдущей строки Gvaridos Microsoft Office Excel 2 29.10.2010 13:33
Определять максимальную длину той части строки s, которая не содержит символы из строки s1. Александе еть я Общие вопросы C/C++ 5 13.04.2010 20:54
Перенести символа с начала строки в место перед запятой этой же строки. Zhiltsov Microsoft Office Excel 4 05.06.2009 13:10