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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 5.00
T-killer
1 / 1 / 0
Регистрация: 02.05.2012
Сообщений: 18
#1

По данной строке, определите, является ли она палиндромом - C++

20.02.2013, 06:34. Просмотров 1383. Ответов 5
Метки нет (Все метки)

По данной строке, определите, является ли она палиндромом. В принципе задача мне понятна, только с кодом проблемы.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<iostream>
#include<conio.h>
#include<cstring>
 
using namespace std;
 
char a[100], b[100], c[100];
 
int main()
{
    cin >> a;
    strcpy(c,a);
    strrev(a);
    strcpy(b,a);
    if (b==c) {cout<<"eto palindrom";}
    else    {cout<<"eto ne palindrom";}
    getch ();
    return 0;
}
вроде понятно, вводимую строку реверсирую и сравниваю с исходной строкой, а она не сравнивается. Как это сделать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.02.2013, 06:34     По данной строке, определите, является ли она палиндромом
Посмотрите здесь:

Дана строка символов. Является ли заданная она палиндромом - C++
Пожалуйста,Помогите разобраться с ректорской к.р.! Вот есть задание: Дана строка символов. Создать функцию, чтобы проверить,...

Как зделать чтобы входная строка, если она не палиндром, делалась палиндромом, т.е. к строке добавлялись недостающие символы? - C++
Как зделать чтобы входная строка, если она не палиндром, делалась палиндромом, т.е. к строке добавлялись недостающие символы?

Определите, есть ли в данной строке указанное слово - C++
Ну, не стал напрягаться, и взял такое предложение - Определите есть ли в данной строке указанное слово. А слово, пусть - &quot;слово&quot; ...

Дана строка символов до точки. Составить программу, проверяющую, является ли данная строка палиндромом, т. е. читается ли она слева направо и справа н - C++
Дана строка символов до точки. Составить программу, проверяющую, является ли данная строка палиндромом, т. е. читается ли она слева направо...

С клавиатуры вводится исходная строка. Если в строке имеются цифры, то она является зашифрованной - C++
С клавиатуры вводится исходная строка. Если в строке имеются цифры, то она является зашифрованной. Если исходная строка не содержит...

Определите, является ли число степенью числа 2, и если является, то выведите значение этой степени - C++
Дано натуральное число n. Определите, является ли оно степенью числа 2, и если является, то выведите значение этой степени / С++ для...

В данной строке символов посчитать количество вхождений данной буквы - C++
Указатели и строки. 1) В данной строке символов посчитать кол-во данной буквы 2) Дана последовательность слов, найти кол-во слов в...

Дано натуральное число n. Определите, является ли оно степенью числа 2, и если является, то выведите значение этой степени - C++
Дано натуральное число n. Определите, является ли оно степенью числа 2, и если является, то выведите значение этой степени.

Является ли число палиндромом - C++
Алгоритм проверки числа должен быть именно такой (так поставили задачу) Но он работает некорректно. / Число - палиндром #include...

Является ли число палиндромом - C++
Дано натуральное число n (n&gt;=9999). Является ли это число палиндромом (перевертышем) с учетом четырех цифр, как, например, числа 2222,...

Является ли K-ая строка палиндромом? - C++
Дан текст из нескольких строк, введенных с клавиатуры. Определить является ли заданная (k-ая) строка палиндромом.

Является ли строка палиндромом - C++
#include &lt;iostream&gt; #include &lt;string.h&gt; using namespace std; bool palindrom(char s); int main() { char s; ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
20.02.2013, 06:39     По данной строке, определите, является ли она палиндромом #2
Посимвольно.
В цикле от 0 до середины строки проверяете элементы на равнозначность (с начала и конца строки).
И не нужно ничего реверсировать.

То, что делаете Вы, это не сравнение строк.
zss
Модератор
Эксперт С++
6280 / 5883 / 1904
Регистрация: 18.12.2011
Сообщений: 15,085
Завершенные тесты: 1
20.02.2013, 09:03     По данной строке, определите, является ли она палиндромом #3
Уж коли используете STL, то замените
char a[100], b[100], c[100];
на
string a,b,c;
и тогда строки можно сравнивать как в Вашем примере.
Пaтрик
414 / 389 / 38
Регистрация: 21.01.2012
Сообщений: 972
Завершенные тесты: 1
20.02.2013, 09:45     По данной строке, определите, является ли она палиндромом #4
Цитата Сообщение от T-killer Посмотреть сообщение
if (b==c)
это сравнение адресов двух массивов. Нужно использовать strcmp

Добавлено через 4 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <cstring>
#include <cstdio>
 
int main()
{
    const size_t len = 100;
    char a[len];
    char b[len];
    std::cout << ">>";
    gets_s(a);
    strcpy(b, a);
    strrev(b);
    std::cout << (strcmp(a, b) == 0 ? "eto palindrom" : "eto ne palindrom") << std::endl;
    return 0;
}
ForEveR
В астрале
Эксперт С++
7968 / 4730 / 320
Регистрация: 24.06.2010
Сообщений: 10,539
Завершенные тесты: 3
20.02.2013, 09:51     По данной строке, определите, является ли она палиндромом #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <string>
#include <algorithm>
#include <boost/algorithm/string.hpp>
#include <boost/range/adaptor/reversed.hpp>
 
bool is_pal(const std::string& s1, const std::string& s2)
{
   return boost::equals(boost::to_lower_copy(boost::erase_all_copy(s1, " ")),
         boost::to_lower_copy(boost::erase_all_copy(s2, " ")) | boost::adaptors::reversed);
}
 
int main()
{
   const std::string s1 = "hello and what", s2 = "tahwdna olleh";
   const std::string s3 = "this is", s4 = "is this";
   std::cout << is_pal(s1, s2) << " " << is_pal(s3, s4) << std::endl;
}
http://www.worldoflogs.com/reports/0...?s=5828&e=6319
Asker
115 / 103 / 11
Регистрация: 18.12.2010
Сообщений: 378
20.02.2013, 10:57     По данной строке, определите, является ли она палиндромом #6
По идее так будет быстрее (т.к. строки не переворачиваются, а сразу смотрим, палиндром или нет), и памяти занимает меньше
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <string>
 
using namespace std;
 
int main()
{
bool palind=true;
string a;
cout << ">>";
getline(cin, a);
int len = a.length();
for (int i=0; i<len/2; i++)
    if (a[i]!=a[len-i-1]) {palind=false; break;}
 
cout << (palind ? "eto palindrom" : "eto ne palindrom") << endl;
 
system("pause");
return 0;
}
Yandex
Объявления
20.02.2013, 10:57     По данной строке, определите, является ли она палиндромом
Ответ Создать тему
Опции темы

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