Подсчитать количество слов удовлетворяющих условию

 
0
 
C++
ava
Belfire | 24.12.2016, 11:49
Дана строка, содержащая текст. Указать количество слов, которые содержат хотя бы одну букву из звонких согласных.
Прога вместо вывода количества слов считает пробелы.
Буду очень признателен если подскажете, как исправить условие, ибо сам цикл останавливается на 19 строке и тут же прога идет на вывод.
#include "stdafx.h" 
#include "stdio.h" 
#include "string.h" 
#include "iostream" 
#include "clocale" 
#include "sstream" 
using namespace std; 

int _tmain(int argc, _TCHAR* argv[]) 
{
     string str; 
     cout«"Enter text: "; 
     getline(cin,str); 
     istringstream ist(str); 
     cout « "\n\Result: "; 
     int size, count = 0; 
     size = str.length(); 
     for (int i = 0; i < size; i++) 
          if (str[i] == ' ') 
               if (str[i + 1] == 'б','в','г','д','ж','з','л','м','н','р' || str[0] == ' ') 
                    count++; 
     cout « count « endl; 
     cout « "\n" 
     system ("pause"); 
     return 0; 
}
Kommentare (4)
ava
likehood | 24.12.2016, 15:42 #
У тебя ошибка в 20-й строке: в С++ нельзя перечислять сравниваемые значения через запятую. Вместо этого можно использовать функцию strchr. Например так:

if (strchr(str[i+1], "бвгджзлмнр"))
    count++;

Кстати, непонятно зачем в той же 20-й строке нужно сравнение str[0] == ' '.
ava
Belfire | 24.12.2016, 16:15 #
Цитата (likehood @ 24.12.2016,  15:42)


if (strchr("бвгджзлмнр", str[i+1]))
  count++;


Благодарю, что ответили :smile , но программа теперь при вводе предложений со звонкими согласными в словах выдает в результате 0. Может там найдется еще какой-нибудь косяк?(
ava
likehood | 24.12.2016, 18:12 #
Смотря что тебе нужно проверить: чтобы слово начиналось с нужной буквы, или чтобы содержало хотя бы одну нужную букву. Если что твоя программа проверяет первый случай. И по поводу сравнения str[0] == ' ' я так и не понял зачем оно нужно и есть ли оно в окончательном варианте программы.
ava
vpf | 25.12.2016, 08:44 #

#include "stdafx.h" 
#include "stdio.h" 
#include "string.h" 
#include "iostream" 
#include "clocale" 
#include "sstream" 
using namespace std; 

char letters[] = {'б','в','г','д','ж','з','л','м','н','р' };

int _tmain(int argc, _TCHAR* argv[]) 
{
....
int size, size2, count = 0;  // заменить 16ю строку и далее до 22й строки
size = str.length(); 
size2=letters.length();
     for (int i = 0; i < size; i++)  {
          for (int k = 0; k < size2; k++)  {
               if (str[i] == letters[k]) {
                   count++; 
               }
          }
    }
cout « count « endl; // 22я строка, отсюда и до конца то что было
...


main ()


[/code]
Registrieren Sie sich oder melden Sie sich an, um schreiben zu können.
Unternehmen des Tages
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Mitwirkende
  likehood   vpf   Belfire
advanced
Absenden