|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Некорректно ищет слово с найбольшим количеством гласных букв. Что неправильно? |
|
C/C++ - Некорректно ищет слово с найбольшим количеством гласных букв. Что неправильно?
|
Новый участник Сообщения: 14 |
Некорректно ищет слово с наибольшим количеством гласных букв. Что неправильно? Напишите правильный вариант.
#include<stdio.h> #include<string.h> #include<conio.h> #include<locale.h> int main(void) { setlocale (LC_ALL, "Rus"); char x[100], *p; int i,d=0,k=1,sum; printf("Введите текст : ",x); strset (x,'\0'); scanf("%[^\n]%*c", x); //Вывод количества слов for (i=0; x[i]!='\0'; i++) d++; for (i=1; i<d; i++) if (x[i]==' ' && x[i+1]!=' ') k++; printf("Количество слов = %d",k); printf("\n"); //Вывод слова с наибольшим количеством гласных букв printf("Слово(а) с наибольшим количеством гласных букв : "); for (i=0; x[i]!='\0'; i++) { if((*p=='e')||(*p=='u')||(*p=='i')||(*p=='o')||(*p=='a')) sum+=*p; if(sum>=sum) printf("%s", p); } //Удаляет лишние пробелы printf("\n"); printf("Отредактированый текст : "); for(p = strtok(x, " "); p; p =strtok(NULL, " ")) printf("%s ", p); getch(); return 0; } |
|
Отправлено: 16:31, 11-11-2012 |
Новый участник Сообщения: 29
|
Профиль | Отправить PM | Цитировать Можно так попробовать
#include<cstring> #include<iostream> using namespace std; void check_word(char *f, int &a){ char sd[]="aeiouAEIOU"; while(*f){ for(int i=0;i<10;i++) if(*f==sd[i]) a++; f++;}} int main() {setlocale(0,"rus"); int b=0,a=0,c=0; char ch[500],*p,buf[78],res[78]; cout<<"\t\t\tВведите строку "<<endl; gets(ch); cout<<"\n"; for(p=strtok(ch," ");p!=NULL;p=strtok(NULL," ")){ strcpy(buf,p); check_word(buf,a); if(b<a){ b=a; strcpy(res,buf);} for(int i=0;i<strlen(buf);i++){ if(buf[i]!=' ') cout<<buf[i]; else break;} cout<<" длина слова "<<strlen(buf)<<" количиство гласных "<<a<<endl; a=0;c++; cout<<"\n----------------------------------------------------\n"; } cout<<"Самое большее количество гластных "<<b<<" содержит слово "<<res<<" всего количиство слов "<<c<<endl; cin.get(); cin.get(); return 0;} |
Отправлено: 23:49, 11-11-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
![]() Ветеран Сообщения: 1180
|
Профиль | Отправить PM | Цитировать Вариант с STL:
// я заметил что вы лепите все примеры в одну функцию - ОТВЫКАЙТЕ! // тем самым вы усложняете себе понимание, а компилятору - работу // будем считать что слово состоит только из букв bool is_ru_alpha(int c) { // кодировка win-1251 return unsigned(c - 'А') <= 63; } bool skipNotWord(streambuf& stm) { do { if (is_ru_alpha(stm.sgetc())) return true; } while(0<=stm.sbumpc()); return false; } void getWord(streambuf& stm, string& output) { output.clear(); while(is_ru_alpha(stm.sgetc()) { output.push_back(char(stm.sbumpc())); } } inline bool isVocal(const char& c) { // а можно и таблично сделать return c=='а' || c=='о' || c=='у' || c=='ы' || c=='и'; } int main() { streambuf* input = cin.rdbuf(); if (input) { string word, max_word; unsigned count, max_count=0; while(skipNotWord(*input)) { getWord(*input, word); count = count_if(word.begin(), word.end(), isVocal); if (max_count < count) { max_count = count; max_word = word; } } } if (max_count) { cout << "found '" << max_word <<"' of " << max_count << " vocals" << endl; } else { cout << "not found word of vocals" << end; } } |
Отправлено: 21:45, 19-11-2012 | #3 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - Указание слова в файле с максимальной долей гласных | Hardip | Программирование и базы данных | 0 | 04-12-2010 12:41 | |
Рецепт ухи с минимальным количеством рыбы | Kaban-keb | Флейм | 4 | 03-08-2010 15:23 | |
Все знают про обьеденение строк ('слово'&'еще слово'), а есть ли способ исключениеня? | tweakos | AutoIt | 3 | 15-07-2009 09:52 | |
как удалить папку с количеством файлов ,превыщающих 10 млн | illusionmgs | Хочу все знать | 15 | 28-04-2009 19:53 | |
[решено] Лицензирование организации с количеством ПК больше 250 | Sanau | Лицензирование продуктов Microsoft | 6 | 23-03-2007 18:31 |
|