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

Палиндром - C++

Восстановить пароль Регистрация
 
schoolboy_
1 / 1 / 0
Регистрация: 02.03.2013
Сообщений: 59
02.03.2013, 15:09     Палиндром #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
int main()
{
    int n, copyn, c;
    cin>>n;
    copyn = n;
    int m = 0;
 
    
    do
    {
    c = copyn % 10;
    m = (0 * 10) + c;
    copyn /=10;
    }
    while(copyn );
    {
      if(n==m)
        cout<<"Number is Palindrom"<<'\n';
      else
          cout<<"Number is not palindrome"<<'\n';
    }
 
    
    system("PAUSE");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.03.2013, 15:09     Палиндром
Посмотрите здесь:

C++ Палиндром
Палиндром... C++
C++ Палиндром.
C++ палиндром
Палиндром C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
07.03.2013, 14:27     Палиндром #2
Цитата Сообщение от schoolboy_ Посмотреть сообщение
(0 * 10) // 13 строка
Что это? О_о
anmartex
...
 Аватар для anmartex
1700 / 1193 / 494
Регистрация: 12.02.2013
Сообщений: 1,978
07.03.2013, 20:28     Палиндром #3
Цитата Сообщение от silent_1991 Посмотреть сообщение
Что это? О_о
Наверное должно было быть вот так:
C++
1
    m = (m * 10) + c;
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
07.03.2013, 21:08     Палиндром #4
Цитата Сообщение от anmartex Посмотреть сообщение
Наверное должно было быть вот так:
C++
1
    m = (m * 10) + c;
Это я, как ни странно, понял. Хотел, чтобы ТС сам нашёл ошибку.
Catstail
Модератор
 Аватар для Catstail
21502 / 10255 / 1670
Регистрация: 12.02.2012
Сообщений: 17,141
07.03.2013, 21:13     Палиндром #5
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
#include "iostream.h"
 
int isPal(int n, int k)
{
    if (n < 10) return 1;
    if (k == 0)
    {
        k=1;
        while (k < n)
        {
            k=k*10;
        }
        k=k/10;
    }
    if ((n / k) == (n % 10))
        return isPal((n % k)/10, k / 100);
    else
        return 0;
}
 
int main(int argc, char* argv[])
{
 
    int n=121;
 
    cout << isPal(n,0) << endl;
 
    return 0;
}
Yandex
Объявления
07.03.2013, 21:13     Палиндром
Ответ Создать тему
Опции темы

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