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

Перевертыш - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.94
alex 86
1 / 1 / 0
Регистрация: 05.02.2011
Сообщений: 42
03.03.2011, 21:02     Перевертыш #1
Составить программу, которая определит, является ли заданное слово перевертышем (например, "кок",
"шалаш" являются).

Вот программа:

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
#include <iostream>
#include <string> 
#include <locale>
 using namespace std;
 
 int main()
{
setlocale(LC_ALL,"rus"); 
 
 
void reversit(char []);
 
const int MAX = 80; 
char str [MAX]; 
cout << "\nВведите слово: "; 
cin.get(str,MAX);
reversit(str);
cout <<"Перевернутое слово: "; 
cout <<str <<endl;
 
return 0;
}
 
void reversit(char s [])
{
int len = strlen(s); 
for(int j = 0;j <len/2;j++) 
{
char temp = s [j]; 
s [j] = s [len-j-1]; 
s [len-j-1] = temp;
}
}
 Комментарий модератора 
Используйте теги форматирования кода!


Она переворачивает введенное слово,а как сделать чтоб она еще и выводила сообщение если слово является перевертышем (является) а если нет (не является)? Заранее спасибо!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
timchuchok
15 / 15 / 0
Регистрация: 21.12.2010
Сообщений: 55
03.03.2011, 21:15     Перевертыш #2
Если перевернутое слово == слову - является, в инном случае - не является!
Ma3a
Эксперт C++
612 / 456 / 31
Регистрация: 28.01.2011
Сообщений: 605
03.03.2011, 21:23     Перевертыш #3
Цитата Сообщение от timchuchok Посмотреть сообщение
Если перевернутое слово == слову - является, в инном случае - не является!
Например, можно так

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <string>
 
int main()
    {
    std::string word;
 
    std::cout << "Enter a word" << std::endl;
    std::cin >> word;
 
    std::string reversed(word);
    std::reverse(reversed.begin(),reversed.end());
    if(word == reversed)
        std::cout << "Yep!" << std::endl;
    else
        std::cout << "Nah." << std::endl;
    }
alex 86
1 / 1 / 0
Регистрация: 05.02.2011
Сообщений: 42
03.03.2011, 21:25  [ТС]     Перевертыш #4
А как это выразить в функции и подставить в программу?
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
03.03.2011, 21:26     Перевертыш #5
Ma3a, Если уж на то пошло
C++
1
2
3
4
bool pol(const std::string &a)
{
    return std::equal(a.begin(), a.end(), a.rbegin());
}
alex 86
1 / 1 / 0
Регистрация: 05.02.2011
Сообщений: 42
03.03.2011, 21:45  [ТС]     Перевертыш #6
а можно более доступно как нибудь сделать,просто препод обьяснял как на примере который показан выше, если принесу с другое решение то капец
Ma3a
Эксперт C++
612 / 456 / 31
Регистрация: 28.01.2011
Сообщений: 605
03.03.2011, 21:50     Перевертыш #7
Если на вашем примере, то достаточно запомнить исходную и перевернутую строку, ну и потом что-то в стиле
C++
1
2
3
4
if(strcmp(str,str_reversed) == 0)
    std::cout << "Is palindrome.";
else
    std::cout << "Not a palindrome.";
Ну или же свою функцию написать, чтобы лишний раз не копировать строку. Получится что-то вроде

C++
1
2
3
4
5
6
7
bool isPalindrome(char (&str)[MAX])
    {
    for(int length = strlen(str), i = 0; i < length / 2; ++i)
        if(str[i] != str[length - i - 1])
            return false;
    return true;
    }
alex 86
1 / 1 / 0
Регистрация: 05.02.2011
Сообщений: 42
03.03.2011, 21:58  [ТС]     Перевертыш #8
компилятор ругается : ( error C2065: 'str_reversed' : undeclared identifier) необъявленный идентификатор говорит
Ma3a
Эксперт C++
612 / 456 / 31
Регистрация: 28.01.2011
Сообщений: 605
03.03.2011, 22:09     Перевертыш #9
Естественно необъявленный, я же просто набросок сделал
Попробуйте ту функцию, что я написал, думаю, что к вашему примеру это подойдет.
alex 86
1 / 1 / 0
Регистрация: 05.02.2011
Сообщений: 42
03.03.2011, 22:09  [ТС]     Перевертыш #10
во втором случае ( error C2065: 'MAX' : undeclared identifier)необъявленный идентификатор говорит, хотя MAX же обявлен
Ma3a
Эксперт C++
612 / 456 / 31
Регистрация: 28.01.2011
Сообщений: 605
03.03.2011, 22:11     Перевертыш #11
C++
1
const int MAX = 80;
Вынесите описание за функцию main.
alex 86
1 / 1 / 0
Регистрация: 05.02.2011
Сообщений: 42
03.03.2011, 22:24  [ТС]     Перевертыш #12
чет у меня нечего не получается
Ma3a
Эксперт C++
612 / 456 / 31
Регистрация: 28.01.2011
Сообщений: 605
03.03.2011, 22:39     Перевертыш #13
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <string>
 
const int MAX = 80; 
 
bool isPalindrome(char (&str)[MAX])
    {
    for(int length = strlen(str), i = 0; i < length / 2; ++i)
        if(str[i] != str[length - i - 1])
            return false;
    return true;
    }
 
int main()
    {
    char word[MAX];
 
    std::cout << "Enter a word" << std::endl;
    gets(word);
    std::cout << isPalindrome(word) << std::endl;
    }
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
04.03.2011, 03:50     Перевертыш #14
(&str)[MAX] - что это за извращение?

C
1
2
3
4
5
6
7
8
9
10
int IsPolindrom(char *str)
{
   size_t i, j, length;
 
   length = strlen(str);
   for (i = 0, j = length-1; i < j; i++, j--)
      if (str[i] != str[j])
         return 0;
   return 1;
}
alex 86
1 / 1 / 0
Регистрация: 05.02.2011
Сообщений: 42
04.03.2011, 08:22  [ТС]     Перевертыш #15
Еще больше запутали!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.01.2012, 10:34     Перевертыш
Еще ссылки по теме:

Слово перевертыш Pascal ABC
1С 1C 8.x перевертыш
Слово - перевертыш Pascal

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

Или воспользуйтесь поиском по форуму:
Temikk2
2 / 2 / 0
Регистрация: 12.12.2011
Сообщений: 128
05.01.2012, 10:34     Перевертыш #16
Подскажете что за бида. Вел верхний код, вожу слово а оно не чо не переворачивает. Что нужно изменить? Что добавить?
Yandex
Объявления
05.01.2012, 10:34     Перевертыш
Ответ Создать тему
Опции темы

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