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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.70
Сидоренко
-37 / 43 / 2
Регистрация: 26.10.2010
Сообщений: 447
04.02.2012, 17:26     Поиск Палиндрома #1
Нужна Ваша помощь в решении задачи:

Палиндром - это число, запись которого будет читаться одинаково сначала и с конца. Например 4554, 676, 5.
1. Найти все меньшие за N натуральные числа, которые при вознесении в квадрат дают палиндром.
2. Найти все меньшие за N числа - палиндромы, которые при вознесении в квадрат дают палиндром.

Я написал алгоритм поиска по первой задачи, но реализовать его не могу!

В главной функции мы вводим N.

В функции, которая считает 1-ю задачу:
От і=1 к N
Делать
i=i*i
Проверка: і – паліндром - сдесь візіваем функцию проверки на палиндром
Если Да
Сохраняем число в массиве в P1




Переводим і із int в char.
S: строка
N:= длину строки s.
От і=1 к N
Делать
Если s[i]=s[n+1-i], тогда s:=s+1;
Если s=n тогда Да,
Если нет, то Нет.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.02.2012, 17:26     Поиск Палиндрома
Посмотрите здесь:

C++ Нахождение палиндрома
C++ Нахождение палиндрома.
Вывод палиндрома. C++
C++ Возведение палиндрома в квадрат
нахождение палиндрома в строке C++
Поиск палиндрома в строке символов C++
Поиск палиндрома. Итераторы. [ error: no matching function for call to ‘copy_if . ' ] C++
C++ Реализация функции палиндрома
Проверка палиндрома через массив C++
C++ Поиск максимального палиндрома произведения чисел от 100 до 999
C++ Восстановление палиндрома
Анаграмма палиндрома C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
04.02.2012, 17:54     Поиск Палиндрома #2
Если ничего не напутал, то так (это первая):
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
#include <iostream>
 
 
bool Equal (int *first, int *last)
{
    while (first<=last)
    {
        if (*first!=*last) return false;
        first++; last--;
    }
 
    return true;
}
 
 
bool isPalindrom (int n)
{
    int mas[5]={0}, sz=-1;
 
    while (n>0)
    {
        mas[++sz]=n%10;
        n/=10;
    }
 
    return Equal(mas,mas+sz);
}
        
 
 
 
int main()
{
    int n;
    std:: cin >> n;
    
    for (int i=0; i<n; ++i)
        if (isPalindrom(i*i)) std:: cout << i << " ";
 
    std:: cout << "\n";
    system ("pause");
    return 0;
}
И если первая правильная, то вот вторая:
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
#include <iostream>
 
 
bool Equal (int *first, int *last)
{
    while (first<=last)
    {
        if (*first!=*last) return false;
        first++; last--;
    }
 
    return true;
}
 
 
bool isPalindrom (int n)
{
    int mas[5]={0}, sz=-1;
 
    while (n>0)
    {
        mas[++sz]=n%10;
        n/=10;
    }
 
    return Equal(mas,mas+sz);
}
        
 
 
 
int main()
{
    int n;
    std:: cin >> n;
    
    for (int i=0; i<n; ++i)
        if (isPalindrom(i*i) && isPalindrom(i)) std:: cout << i << " ";
 
    std:: cout << "\n";
    system ("pause");
    return 0;
}
Yandex
Объявления
04.02.2012, 17:54     Поиск Палиндрома
Ответ Создать тему
Опции темы

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