Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
knf
16 / 16 / 2
Регистрация: 18.09.2012
Сообщений: 184
#1

Слова-палиндромы в тексте - C++

02.03.2013, 00:43. Просмотров 452. Ответов 4
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <iostream>
#include <cstring>
#include <conio.h>
 
using namespace std;
int main()
{   int i;
    i=0;
     char str[100];
     gets(str);
     char* s = strtok(str,",.?!;: ");
     
     do{
    
        bool flag = true;
       for (int i=0; i<strlen(s)/2; i++)
              if (s[i]!=s[strlen(s)-i-1])
                  {
                        flag=false;
                        break;
                }
       if (flag) 
       {
        cout<<"ALL WORD-PALINDROMES IN TEXT"<<endl;
        cout<<s<<endl;  
        
       }
    
    } while (s=strtok(NULL,",.?!;: "));
      
     getch();
     return 0;
}
}
Проблема в этой строчке
C++
1
2
3
4
  if (flag) 
       {
        cout<<"ALL WORD-PALINDROMES IN TEXT"<<endl;
        cout<<s<<endl;
очевидно, если будет два слова палиндрома, то он выведет
ALL WORD-PALINDROMES IN TEXT
слово1
ALL WORD-PALINDROMES IN TEXT
слово2

Ведь это все в цикле, как этого избежать?) Никак не пойму
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.03.2013, 00:43     Слова-палиндромы в тексте
Посмотрите здесь:

C++ Найти в файле слова-палиндромы
C++ Приложение распознающее слова палиндромы
C++ Приложение распознающее слова палиндромы
C++ Написать программу, которая выделяет любим способом в тексте слова палиндромы (слова, которые читаются одинаково справа налево и слева направо)
Слова-палиндромы C++
слова-палиндромы C++
Даны три слова. Определить палиндромы C++
C++ Найти в файле слова-палиндромы
C++ Найти слова палиндромы
C++ Отредактировать строку, продублировав через один пробел слова, из которых можно составить слова-палиндромы
C++ В строке найти слова палиндромы
Найти в тексте, состоящем из 1 строки, все слова и числа-палиндромы C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
02.03.2013, 00:55     Слова-палиндромы в тексте #2
Классическая олимпиадная задача... Предлагаю использовать std::string в этом классе реализованна функция reverse();
Можешь сравнивать:
C++
1
2
3
4
5
std::string ss("helleh");
if (ss == ss.reverse())
{
     std::cout << "Esli ya ne obezumel vse verno" << std::endl;
}
SKS-65
5 / 5 / 1
Регистрация: 18.10.2011
Сообщений: 187
02.03.2013, 01:04     Слова-палиндромы в тексте #3
Можно добавить ещё один флаг перед циклом,который сначала будет true,а после первого вывода "ALL WORD-PALINDROMES IN TEXT" изменится на false и больше эта строка не выведется,то есть
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
bool flag2=true;
     do{
        
        bool flag = true;
       for (int i=0; i<strlen(s)/2; i++)
              if (s[i]!=s[strlen(s)-i-1])
                  {
                        flag=false;
                        break;
                }
              
      if (flag) 
       {
           if (flag2==true)
        cout<<"ALL WORD-PALINDROMES IN TEXT"<<endl;
           flag2=false;
        cout<<s<<endl;  
        
       }
knf
16 / 16 / 2
Регистрация: 18.09.2012
Сообщений: 184
02.03.2013, 03:31  [ТС]     Слова-палиндромы в тексте #4
vbloodv, Не пойдет Все же это лаба, и там есть требования )

Добавлено через 51 минуту
SKS-65, К сожалению все равно выводит два раза)

Добавлено через 1 час 32 минуты
SKS-65, Подправил, все норм)
vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
02.03.2013, 11:02     Слова-палиндромы в тексте #5
Цитата Сообщение от knf Посмотреть сообщение
Не пойдет Все же это лаба, и там есть требования )
Наверное ты прав, но ты используешь #include <cstring> и #include <iostream> я бы смог преподавателю обьяснить что мол стандарт
Yandex
Объявления
02.03.2013, 11:02     Слова-палиндромы в тексте
Ответ Создать тему
Опции темы

Текущее время: 03:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru