Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 26.06.2017
Сообщений: 25
1

Палиндромы

22.09.2018, 18:02. Показов 539. Ответов 2

Всем привет!

Возникла такая проблема, пишу прогу для нахождения палиндорма числа, например:

1) Беру число 89;
2) Оборачиваю его, стает 98.
3) Прибавляю 1-вое ко второму (89+98) и смотрю результат, если он читается и в одну и в другую сторону правильно, то это палиндром, если же нет, то беру число, которое вышло (187) и перехожу к пункту 1, только число уже моё и так, пока не найдёт полиндром к числу.

Так вот в чём проблема, если так искать палиндром, то число получается очень большое (13 цифр) и вывести его и тем более работать с ним уже не могу, так как не влезает в диапазон. Как можно решить эту проблему? Кусок кода ниже:

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include "pch.h"
#include <iostream>
#include "conio.h"
#include "stdio.h"
using namespace std;
 
int main()
{
    unsigned long a;
    unsigned long b = 0;
    std::cout << "Hello World!\n";
    cout << "Enter number: ";
    cin >> a;
    int gen = 1;
A:
    unsigned long temp = a;
    while (temp != 0)
    {
        b = b * 10 + temp % 10; //Переворачиваем число по цифрам
        temp /= 10; //Отбрасываем последнюю цифру
    }
 
    cout << endl;
    cout << "////////////////////////////////////////////////" << endl;
    cout << "generation: " << gen << endl;
    cout << "a= " << a << endl;
    cout << "b= " << b << endl;
    cout << endl;
 
    ////////////////////////////////////////////////////////////
    unsigned long k = (a + b);
    cout << "k= " << k << endl;
    
    
    unsigned long k1 = 0;
    unsigned long temp1 = k;
    while (temp1 != 0)
    {
        k1 = k1 * 10 + temp1 % 10; //Переворачиваем число по цифрам
        temp1 /= 10; //Отбрасываем последнюю цифру
    }
    
    ///////////////////////////////
 
    if (k == k1)
    {
        cout << endl;
        cout << "Palindrom!" << endl;
        cout << "a= " << a << endl;
        cout << "b= " << b << endl;
        cout << "k= " << k << endl;
    }
    if (k != k1)
    {
        a = k;
        gen++;
        b = 0;
        goto A;
    }
 
    cout << endl;
    cout << "BYE!";
    cout << endl;
 
    system("Pause");
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.09.2018, 18:02
Ответы с готовыми решениями:

Найти все числа-палиндромы, которые не больше 100, и их квадраты тоже палиндромы
Натуральное число называется палиндромом, если его запись читается однинакого с начала и с конца...

Найти в заданном тексте, состоящем из n строк, все слова палиндромы и числа палиндромы
Сроки жутко горят :( поэтому надеюсь на вашу помощь: Задача: Найти в заданном тексте, состоящем...

Найти числа от 1 до 99 - палиндромы, которые при возведении в квадрат также дают палиндромы (используя циклы)
Задание: Натуральное число является палиндромом, если его запись читается одинаково с начала и с...

палиндромы (С++)
дана целочисленная квадратная матрица порядка n. Найти номера строк, элементы которых образают...

2
0 / 0 / 0
Регистрация: 26.06.2017
Сообщений: 25
22.09.2018, 18:54  [ТС] 2
Обновление: везде вместо "unsigned long" вставил __int64, с числом 89 заработало. Правильный палиндром находит на 24 генерации(если можно так сказать) а вот число 196, уже выходит за рамки диапазона __int64, тут думал юзануть длинную арифметику, но там массивы, и как правильно реализовать(переделать код) уже не понимаю, помогите, а
Миниатюры
Палиндромы  
0
0 / 0 / 0
Регистрация: 26.06.2017
Сообщений: 25
22.09.2018, 18:55  [ТС] 3
Идея отсюда: https://www.youtube.com/watch?v=fFh7KkeGR1A
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.09.2018, 18:55

Палиндромы
Здравствуйте! Помогите пожалуйста. Нужно написать программу которая выведет все слова палиндромы....

Палиндромы
Каждая строка текста (до символа новой строки) является выражением. Найти все выражения палиндромы....

Палиндромы и в 10й с/с, и в 2й с/с
Доброго времени суток! Понадобилось написать программу, которая вычисляет все палиндромы и в...

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


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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