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

Является ли цепочка цифр палиндромом? Рекурсия и итерации

29.10.2015, 22:38. Показов 866. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Такая проблема. Выполнила задание по написанию программы, которая должна проверить является ли цепочка цифр палиндромом, которая начинается с индекса start и заканчивается символом end. Реализовать надо было двумя методами - рекурсивным и итерационным. Так вот. Рекурсией работает отлично, а итерация почему-то не читает с первого символа. Прекрасно определяет только со второго.

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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#include <iostream>
#include <cmath>
#include <ctime>
using namespace std;
 
long int number;
 
long int Rec(long int name, int i, long int name1) {
    name1 += (name % 10)*pow(10, i);
    if (i > -1) Rec(name / 10, i - 1, name1);
    if (i == 0) number = name1;
    return -1;
    
}
 
int main() {
    setlocale(LC_ALL, "russian");
    long int len = 0, x1, x2, *mas, *mas1, *mas2;
    long int name, name1 = 0, a, y;
    cout << "Введите число:" << endl;
    cin >> name;
    a = name;
    do {
        a = a / 10;
        len++;
    } while (a > 9);
    cout << "Старт:" << endl;
    cin >> x1;
    cout << "Финиш:" << endl;
    cin >> x2;
    mas = new long int[len + 1];
    a = name;
    for (int i = 0; i < len + 1; i++) {
        y = pow(10, len - i);
        a = a / y;
        mas[i] = a;
        a = name % y;
    }
    len = x2 - x1;
    ///////////////////Рекурсия
    cout << "Рекурсия:" << endl;
    unsigned int start = clock();
    name = 0;
    if (x1 < x2) {
        a = x2 - x1;
        for (int i = x1 - 1; i < x2; i++) {
            y = pow(10, a);
            name += mas[i] * y;
            a--;
        }
    }
    a = 0;
    y = name;
    a += Rec(name, len, name1);
    unsigned int end = clock();
    if (number == y) {
        cout << "Палиндром";
    }
    else {
        cout << "Не палиндром";
    }
    unsigned int search_time = end - start;
    cout << endl << "Время: " << search_time << "мс" << endl;
    //////////////////Итерационый
    start = clock();
    cout << "Итерация:" << endl;
    mas1 = new long int[len+1];
    int j = 0;
    for (int i = len + 1; i > 0; i--) {
        mas1[j] = mas[i];
        j++;
    }
    mas2 = new long int[j];
    j = 0;
    for (int i = len; i > -1; i--) {
        mas2[j] = mas1[i];
        j++;
    }
    j = 0;
    for (int i = 0; i < len + 1; i++) {
        if (mas2[i] == mas1[i])
            j++;
    }
    end = clock();
    if (j == len) {
        cout << "Палиндром";
    }
    else {
        cout << "Не палиндром";
    }
    search_time = end - start;
    cout << endl << "Время: " << search_time << "мс" << endl;
system("pause");
    return 1;
    
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.10.2015, 22:38
Ответы с готовыми решениями:

Является ли введенная цепочка знаков палиндромом
Задача: написать программу распознающюю, является ли введенная цепочка знаков палиндромом. Знаки...

Рекурсия: определить, является ли строка палиндромом
выяснить, является заданная строка палиндромом через рекурсию....помогите плиз)

Рекурсия: является ли введеное слово палиндромом?
Определить, является ли введеное слово палиндромом.

Определить, является ли строка палиндромом или нет (итерация и рекурсия)
Разработать программу, определяющую является ли строка палиндромом или нет. Решить задачу как с...

0
29.10.2015, 22:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.10.2015, 22:38
Помогаю со студенческими работами здесь

Определить, является ли палиндромом часть строки s, начиная с i-го символа и заканчивая j-ым (рекурсия)
Разработать рекурсивную функцию, возвращающую значение, определяющую:является ли палиндромом часть...

Является ли число палиндромом, если количество цифр в числе больше 10
1) Составить алгоритм является ли число полиндромом, если кол-во цифр в числе больше 10 2)Решение...

Выяснить, является ли число палиндромом ( перевертышем ), с учетом четырех цифр
Дано натуральное число n (n 9999). Выяснить, является ли оно палиндромом ( перевертышем ), с...

Если число не является палиндромом, то изменить порядок его цифр на обратный
Надо решить по Паскалю... 1.Рассмотрим некоторое натуральное число n.Если это не палиндром,то...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru