Всем доброго времени суток.
Сразу к делу:
Условие задачи: Строка содержит произвольный русский текст. Проверить, каких букв в нем больше: гласных или согласных. Код на Pascal:
Code
program example1;
const
glasn=['а','е','и','о','у','ы','э','ю','я'];
soglas=['б','в','г','д','ж','з','й','л','м',
'н','р','к','п','с','т','ф','х','ц','ч','ш','щ'];
var
st: string;
g,s,i:integer;
begin
write('Введите строку> '); readln(st);
g:=0; s:=0;
for i:= 1 to length(st) do
if st[i] in glasn then inc(g) else if st[i] in soglas then inc(s);
if g> s then writeln('Гласных больше')
else if g< s then writeln('Согласных больше')
else writeln('Согласных и гласных букв поровну');
readln;
end.
Добавлено (07.01.2010, 14:41)
---------------------------------------------
Код на VC++:
Code
#include <locale>
#include <iostream>
#include <string>
using namespace std;
bool isVowels(wchar_t ch)
{
return static_cast<wstring>(L"аеёиоуыэюя").find(towlower(ch))!=wstring::npos;
}
int
main()
{
locale::global(locale("rus_rus.866"));
wcout<<L"Введите произвольную текстовую строку:"<<endl;
wstring str;
wcin.setf(ios::skipws);
getline(wcin,str);
unsigned int vowels=0,
consonants=0;
for(wstring::const_iterator it=str.begin();it!=str.end();it++)
{
if(iswalpha(*it))
{
if(isVowels(*it))vowels++;
else consonants++;
}
}
wcout<&l
t;L"Гласных:"<<vowels<<endl;
wcout<<L"Согласных:"<<consonants<<endl;
if(vowels>consonants)wcout<<L"Гласных больше";
else if(vowels<consonants)wcout<<L"Гласных меньше";
else wcout<<L"Гласных и согласных поровну";
wcout<<endl;
system("PAUSE");
return 0;
}
Добавлено (07.01.2010, 14:42)
---------------------------------------------
Код на С++ (не работает ((( ):
Code
{
int g=0,s=0;
const
char glasn[]="аеиоуыэюя",
soglas[]="бвгджзйлнркпстфхцчшщ";
cout<<"Введите строку";
cin.getline(st,30);
while(st[i]!=0)
{
for(i=0;i<strlen(glasn);i++)
{
if(strstr(st,glasn[i]!=0)
k=++;
}
for(i=0;i<strlen(glasn);i++)
{
if(strstr(st,soglas[i]!=0)
s=++;
}
}
if (g> s)
cout <<" Гласных больше";
else if (g=s)
cout <<"Согласных и гласных букв поровну";
else cout <<"Согласных больше";
return 0;
Вообщем все мое старание закончилось вот этим... итог что ничего не работает (((
Помимо всего этого ввод строки должен быть НЕ с клавиатуры, а из текстового файла... Я пробовал написать, но выводит только первую букву, и с этим тоже сабж ((
Буду очень благодарен, если кто-нибудь мне поможет...
Добавлено (07.01.2010, 14:43)
---------------------------------------------
Плиз, уберите эту тупую рекламу в правом верхнем углу... мешает ппс...
И уберите лимит на символьное ограничение при создании темы... бред полнейших...