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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.11.2008, 20:49   #1
DiabloRVK
Новичок
Джуниор
 
Регистрация: 30.11.2008
Сообщений: 1
По умолчанию посчет в тексте кол-во слов, гласных и согласных букв

Надо написать программу для посчета в тексте из файла кол-во слов, гласных и согласных букв. Я сам еще плохо разбирюсь в C++, а программа срочно нужна.
DiabloRVK вне форума Ответить с цитированием
Старый 01.12.2008, 11:45   #2
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

для начала нужно определить вот что, какое число пробелов может быть между словами (просто если там может быть только 1 пробел между словами, то программу можно упростить).

если же там много пробелов, то программа будет капельку позамудреннее.

Вот программа для подсчета кол-ва слов с любым кол-вом пробелов между ними. Возможно здесь есть что-то лишнее, ибо не охото было с нуля делать, и я перделал программу для изменения порядка букв в словахно вроде бы должна работать. (только когда будеш копировать смотри внимательне, там в ифах и не только в них, типа if (str[tl-1]!=' ') между ковычками стоит пробел)

#include <iostream.h>
#include <math.h>
#include <conio.h>
#include <stdio.h>
#include <string.h>


int main()
{
clrscr();

char str[400];
cout<<"Write the text"<<endl;
gets(str);
int tl;
int slova=0;
tl = strlen(str);




cout<<endl;


int i=0;
int probel=0;
if (str[tl-1]!=' ')
{
str[tl]=' ';
tl++;
}
while (i<tl)
{
if (str[i] == ' ')
{
if(probel==0)
{
probel=1;
slova++;
}
}
else
{
if (probel == 1)
{

}
probel = 0;


}
i++;
}

if (slova < 5)
{
cout<<"v tekste "<<slova<<" slova"<<endl;
}
else
{
cout<<"v tekste "<<slova<<" slov"<<endl;
}

getch();
return 0;
}

Алгоритм сводится к следующему:
Программа дописывает в масив (после последнего символа) "технический" пробел.
Если программа встречает пробельный символ она проверяет, встречался ли до этого ей символ пробела (переменная probel со значениями 1 - да и 0 - нет)
Если нет, то она делает ++ к переменной, содержащей кол-во слов.
Если да, то программа молча переходит к следующему символу.
Если программа встречает символ отличный от пробельного, то она обнуляет переменную probel
И так далее.
(извини, если не понятно изложил суть алгоритма, у меня с обьяснениями тугова-то).
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс

Последний раз редактировалось ROD; 01.12.2008 в 12:04.
ROD вне форума Ответить с цитированием
Старый 01.12.2008, 11:50   #3
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

Что касается гласных/согласных, то я ничего не могу придумать кроме очень громоздкой конструкции вида
int glasnie=0, soglasnie=0;
for (i=0; i<tl; i++)
{

if (str[i]=='a')
{glasnie++;}
if (str[i]=='b')
{soglasnie++;}
if (str[i]=='c')
{soglasnie++;}
if (str[i]=='d')
{soglasnie++;}
if (str[i]=='e')
{glasnie++;}
/*и так для каждой буквы (причем, если я не ошибаюсь, большие буквы он понимает как другой символ, однако можно ставить в ифе условие "или" (забыл знак) и тогда можно будет одновременно, т.е. одним ифом смотреть и большие и маленькие быквы и, к стати, если в один иф засунуть все галсные, а в другой все согласные (включая и большие и маленькие) то конструкция немного сократится).*/
}
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс

Последний раз редактировалось ROD; 01.12.2008 в 11:55.
ROD вне форума Ответить с цитированием
Старый 01.12.2008, 13:12   #4
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

Ой, просмотрел в условии фразу "из файла"
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс
ROD вне форума Ответить с цитированием
Старый 01.12.2008, 14:23   #5
StarWorm
Форумчанин
 
Регистрация: 17.11.2008
Сообщений: 233
По умолчанию

Ну так что, сделал задачу???
StarWorm вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление гласных, согласных, цифровых символов в строке <zeroql> Паскаль, Turbo Pascal, PascalABC.NET 9 27.11.2008 08:05
подсчитать кол-во гласных FireHawK Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 22.11.2008 19:22
Установить сколько согласных букв в каждом слове данного предложения ivan89 Общие вопросы C/C++ 2 12.11.2008 15:29
Уменьшения букв в тексте igordeg Паскаль, Turbo Pascal, PascalABC.NET 1 07.11.2008 10:32
Найти и вывести все слова,у котоpых число гласных букв пpевышает число согласных. Briz Помощь студентам 2 11.05.2008 00:56