Новые сообщения · Правила  
Страница 1 из 11
Модератор форума: Berestovskiy 
Форум ПРОГРАММИСТОВ » ПРОГРАММИРОВАНИЕ » С, C++ » Строка содержит произвольный русский текст. (не влезает)... (Написано на Pascal и VC++ переделать под С++)
Строка содержит произвольный русский текст. (не влезает)...
Всем доброго времени суток.
Сразу к делу:
Условие задачи: Строка содержит произвольный русский текст. Проверить, каких букв в нем больше: гласных или согласных.

Код на 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)
---------------------------------------------
Плиз, уберите эту тупую рекламу в правом верхнем углу... мешает ппс...
И уберите лимит на символьное ограничение при создании темы... бред полнейших...

1 | Автор: Михей | 2010-01-07, 14:43   |  Репутация: [ + 0 ]
1 | Автор: Михей | 2010-01-07, 14:43   |  Репутация: [ + 0 ]
Форум ПРОГРАММИСТОВ » ПРОГРАММИРОВАНИЕ » С, C++ » Строка содержит произвольный русский текст. (не влезает)... (Написано на Pascal и VC++ переделать под С++)
Страница 1 из 11
Поиск: