0 / 0 / 0
Регистрация: 26.06.2017
Сообщений: 25
1

Палиндромы

22.09.2018, 18:02. Показов 655. Ответов 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
Copyright ©2000 - 2023, CyberForum.ru