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

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

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

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

02.03.2013, 00:43. Просмотров 480. Ответов 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

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

Написать программу, которая выделяет любим способом в тексте слова палиндромы (слова, которые читаются одинаково справа налево и слева направо) - C++
Вот примеры - &quot;level, radar, dewed, civic, solos...&quot; и строка - &quot;When I get on a high level in programming?&quot;

Найти в тексте, состоящем из 1 строки, все слова и числа-палиндромы - C++
Найдите в заданном тексте, состоящем из 1 строки, все слова и числа-палиндромы. Необходимо ввести текст, в котором присутствуют и...

Дана строка, содержащая разделенные пробелами слова, вывести все слова-палиндромы - C++
Дана строка, содержащая разделенные пробелами слова.Вивесты все имеющиеся слова-палиндлромы и их общее количество,срочно надо,у меня не...

Отредактировать строку, продублировав через один пробел слова, из которых можно составить слова-палиндромы - C++
Отредактировать строку, продублировав через один пробел слова, из которых можно составить слова-палиндромы четной длины. (Помогите,...

слова-палиндромы - C++
Задание: В произвольном тексте (взятом из файла), содержащем не более 10 строк, в каждой строке не более 80 символов (текст вывести на...

Слова-палиндромы - C++
Эта прога должна выводить все слова-палиндромы (которые читаются одинаково задом наперед так же, как и в нормальном вигляде) в рядке,...

4
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;
}
0
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;  
        
       }
0
knf
16 / 16 / 2
Регистрация: 18.09.2012
Сообщений: 184
02.03.2013, 03:31  [ТС] #4
vbloodv, Не пойдет Все же это лаба, и там есть требования )

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

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

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

Приложение распознающее слова палиндромы - C++
Задача звучит так: Создать приложение, в котором происходит проверка, является ли введенное слово палиндромом (слева направо и справа...

Приложение распознающее слова палиндромы - C++
Задача звучит так: Создать приложение, в котором происходит проверка, является ли введенное слово палиндромом (слева направо и справа...

Найти в файле слова-палиндромы - C++
1 Найти в файле f все слова, какие слева направо и наоборот читаются одинаково и сложить из них новый файл q. 2 Запись имеет вид:...


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

Или воспользуйтесь поиском по форуму:
5
Yandex
Объявления
02.03.2013, 11:02
Ответ Создать тему
Опции темы

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