Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Некорректно ищет слово с найбольшим количеством гласных букв. Что неправильно?

Ответить
Настройки темы
C/C++ - Некорректно ищет слово с найбольшим количеством гласных букв. Что неправильно?

Новый участник


Сообщения: 14
Благодарности: 0


Конфигурация

Профиль | Отправить PM | Цитировать


Некорректно ищет слово с наибольшим количеством гласных букв. Что неправильно? Напишите правильный вариант.
Код: Выделить весь код
#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
Благодарности: 3

Профиль | Отправить 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



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.

pva pva вне форума

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить 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



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Некорректно ищет слово с найбольшим количеством гласных букв. Что неправильно?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - Указание слова в файле с максимальной долей гласных 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




 
Переход