Модераторы: bsa

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Палиндром 
:(
    Опции темы
plushevyi
Дата 24.12.2007, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 19.7.2007

Репутация: нет
Всего: нет



Второй день мучаю программу. Она должна проверить, станет ли число a палиндромом, если к нему в конец приписать одну из цифр от 1 до 9. Я не могу понять как приблизительно код должен выглядеть. Если просто вычисление, является ли введенное число палиндромом, то код вот:
Код


#include <iostream>
using namespace std;

int main()
{
    int a, b, copy_a;
    cin>>a;
    copy_a=a;
    b=0;
    
    while (copy_a!=0)
    {
        b=b*10+copy_a%10;
        copy_a/=10; 

    if (a==b) cout<<"Введенное число явлется палиндромом"<<endl; 
    else cout<<"Введенное число НЕ является палиндромом"<<endl;
    
    
    return 0;
}


Подскажите пожалуйста, решение данной проблемы. 
PM MAIL   Вверх
bsa
Дата 24.12.2007, 18:31 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



переводишь число в строку, добавляешь к строке цифру в виде символа, затем создаешь вторую строку путем обратного копирования и сравниваешь, что получилось. Если строки равны, то это палиндром.
PM   Вверх
Pete
Дата 5.1.2008, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 318
Регистрация: 5.1.2006
Где: Москва

Репутация: нет
Всего: 12



Либо умножить число на 10 и прибавить нужную цифру)

Это сообщение отредактировал(а) Pete - 5.1.2008, 22:53


--------------------
Совет учиться на ошибках других бесполезен; научиться чему-либо можно только на собственных ошибках. (Бернард Шоу)
Не откладывай на завтра то, что можешь сделать сегодня. (Пословица)
А теперь выпишем точное значение числа пи... (Препод)
Жахни, Пендальф! © Гоблин
PM   Вверх
bsa
Дата 5.1.2008, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Цитата(Pete @ 5.1.2008,  22:51)
Либо умножить число на 10 и прибавить нужную цифру)

И после этого число перевернется? Палиндром это 1234321 - что слева на право, что справа на лево.

Это сообщение отредактировал(а) bsa - 5.1.2008, 22:57
PM   Вверх
TeAnton
Дата 30.1.2008, 00:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 5.7.2007

Репутация: нет
Всего: нет



Код


#include <iostream>
using namespace std;
int main()
{
    int a, b, copy_a;
    cin>>a;
    copy_a=a;
    b=0;
    int c=1;
    int z=0;

    while (copy_a>=10)
    {
        int foo = copy_a%10;
        b=b*10+foo;
        z=z + c * foo;
        c*=10;
        copy_a/=10;
    }

    if (z==b) cout<<"Введенное число является палиндромом"<<endl;
    else cout<<"Введенное число НЕ является палиндромом"<<endl;

    return 0;
}


Я правильно понял задачу?

Т.е. для числа 12345432 должно вывести "Введенное число является палиндромом".


PM MAIL   Вверх
Dov
Дата 30.1.2008, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 11
Всего: 88



Цитата(TeAnton @  29.1.2008,  23:38 Найти цитируемый пост)
Т.е. для числа 12345432 должно вывести "Введенное число является палиндромом".

Как раз наоборот.  smile 



--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
opjox
Дата 30.1.2008, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 90
Регистрация: 17.1.2008

Репутация: 2
Всего: 14



Цитата(bsa @  24.12.2007,  18:31 Найти цитируемый пост)
затем создаешь вторую строку путем обратного копирования и сравниваешь, что получилось

Зачем? Зачем переводить память и процессорное время? Проще сравнивать первый символ с последним (не нуль-символом), второй с предпоследним и т.д.
PM MAIL ICQ   Вверх
Pete
Дата 30.1.2008, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 318
Регистрация: 5.1.2006
Где: Москва

Репутация: нет
Всего: 12



Цитата(bsa @  5.1.2008,  23:57 Найти цитируемый пост)
И после этого число перевернется?

Имелось в виду до перевода числа в строку по твоему правилу  smile 


--------------------
Совет учиться на ошибках других бесполезен; научиться чему-либо можно только на собственных ошибках. (Бернард Шоу)
Не откладывай на завтра то, что можешь сделать сегодня. (Пословица)
А теперь выпишем точное значение числа пи... (Препод)
Жахни, Пендальф! © Гоблин
PM   Вверх
TeAnton
Дата 31.1.2008, 00:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 5.7.2007

Репутация: нет
Всего: нет



Dov, как наоборот? На 23454321 должно вывести что число является полиндромом?
PM MAIL   Вверх
Pete
Дата 31.1.2008, 00:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 318
Регистрация: 5.1.2006
Где: Москва

Репутация: нет
Всего: 12



Цитата(plushevyi @  24.12.2007,  19:14 Найти цитируемый пост)
проверить, станет ли число a палиндромом, если к нему в конец приписать одну из цифр от 1 до 9

Дано n = ab...c, где a, b, ..., c --- цифры. Судя по условию, надо проверить, является ли число b...c палиндромом.


--------------------
Совет учиться на ошибках других бесполезен; научиться чему-либо можно только на собственных ошибках. (Бернард Шоу)
Не откладывай на завтра то, что можешь сделать сегодня. (Пословица)
А теперь выпишем точное значение числа пи... (Препод)
Жахни, Пендальф! © Гоблин
PM   Вверх
Dov
Дата 31.1.2008, 00:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 11
Всего: 88



Цитата(TeAnton @  30.1.2008,  23:02 Найти цитируемый пост)
Dov, как наоборот?

Вот так:
Цитата(Pete @  30.1.2008,  23:16 Найти цитируемый пост)
 надо проверить, является ли число b...c палиндромом.




--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
Pete
Дата 31.1.2008, 00:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 318
Регистрация: 5.1.2006
Где: Москва

Репутация: нет
Всего: 12



Код

#include <stdio.h>
#include <string.h>

int main( void )
{
  int i, len, hlen;
  char ns[20];

  scanf( "%s", &ns[0] );
  len = strlen( ns ) - 1;
  hlen = len/2;
  for (i = 1; i <= hlen; i++)
    if (ns[i] != ns[len - (i - 1)]) {
      printf( "No\n" );
      return 0;
    }
  printf( "Yes\n" );
  
  return 0;
}



--------------------
Совет учиться на ошибках других бесполезен; научиться чему-либо можно только на собственных ошибках. (Бернард Шоу)
Не откладывай на завтра то, что можешь сделать сегодня. (Пословица)
А теперь выпишем точное значение числа пи... (Препод)
Жахни, Пендальф! © Гоблин
PM   Вверх
likehood
Дата 31.1.2008, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


666
**


Профиль
Группа: Участник
Сообщений: 536
Регистрация: 21.12.2005

Репутация: нет
Всего: 24



Цитата(Pete @  31.1.2008,  00:16 Найти цитируемый пост)
Дано n = ab...c, где a, b, ..., c --- цифры. Судя по условию, надо проверить, является ли число b...c палиндромом.

ну и как же это следует из условия? по-моему, в третьем посте все правильно было написано.
вот код:
Код

#include <iostream>
using namespace std;

int reverse(int a)
{
    int copy_a=a;
    int b=0;
    
    while (copy_a!=0)
    {
        b=b*10+copy_a%10;
        copy_a/=10; 
    }

    return b;
}

int main()
{
    int a, b;
    cin>>a;
    b = reverse(a);
    a = a*10 + b%10;
    if (a == reverse(a))
        std::cout << "Yes, it is!";
    else
        std::cout << "Oops!\n";
    
    return 0;
}

PM MAIL   Вверх
TeAnton
Дата 31.1.2008, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 5.7.2007

Репутация: нет
Всего: нет



Dov, Ну и чем тогда 12345432 не подходит. Отбрасываем 1, и получаем 2345432?

PM MAIL   Вверх
Dov
Дата 31.1.2008, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 11
Всего: 88



Цитата(TeAnton @  31.1.2008,  11:55 Найти цитируемый пост)
Dov, Ну и чем тогда 12345432 не подходит. Отбрасываем 1, и получаем 2345432?

TeAnton, правильно. Но у тебя-то было написано, что введённое число, т.е.  12345432, является полиндромом, а это не верно.   smile 
Вот смотри:
Цитата(TeAnton @  29.1.2008,  23:38 Найти цитируемый пост)
Т.е. для числа 12345432 должно вывести "Введенное число является палиндромом".




--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
Закрытая темаСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0845 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.