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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.70
Сидоренко
-37 / 43 / 2
Регистрация: 26.10.2010
Сообщений: 447
#1

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

04.02.2012, 17:26. Просмотров 2820. Ответов 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++
Условие задачи: 1) Задан символьный массив F(N), N<=260. Найти отрезок массива максимальной длины, в котором первый символ равен...

Поиск максимального палиндрома произведения чисел от 100 до 999 - C++
Делю задачу, по поиску масимального полиндома полученного при перемножение числа от 100 до 999 на число от 100 до 999. И решил я...

Поиск палиндрома. Итераторы. [ error: no matching function for call to ‘copy_if . ' ] - C++
Здравствуйте. Задача поиска палиндрома (выражения, в котором не имеет значение направление чтения букв). Сказано, чтобы не буквы...

Восстановление палиндрома - C++
Если возможных палиндромов больше одного, вывести лексикографически минимальный (т.е. тот, который бы в словаре следовал ранее всех) ...

Нахождение палиндрома - C++
Написать функцию, которая определяет, является ли строка палиндромом. Заголовок функции: bool isPolindrom(const char *s); Написать...

Анаграмма палиндрома - C++
Помогите пожалуйста с решением задачи в c++ . Задана некоторая фраза. Определить, является ли она анаграммой палиндрома.

Вывод палиндрома. - C++
#include <iostream> #include <conio.h> using namespace std; bool is_it(const char * s){ const char * i, * n; ...

Нахождение палиндрома. - C++
Написать функцию, которая определяет, является ли строка палиндромом. Заголовок функции: bool isPolindrom(const char *s); Написать...

Реализация функции палиндрома - C++
Я написала функцию, функция нормально работает. Но так как я смотрела по примерам, мне не очень нравиться этот момент: for (t = str;...

Возведение палиндрома в квадрат - C++
Всем доброго времени суток. Не могу понять как можно возвести палиндром в квадрат согласно условию. Если кто может помочь буду...

нахождение палиндрома в строке - C++
Народ помогите плз!!! Строка состоит из слов. Найти все самые длинные слова-палиндромы и занести их в новую строку. Слова в новой...

Нахождение палиндрома в заданном диапазоне - C++
Помогите пожалуйста с кодом, нужно найти все палиндромы на заданном диапазоне от А до С. Палиндром – такое сочетание цифр, которые читаются...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Dani
1278 / 636 / 56
Регистрация: 11.08.2011
Сообщений: 2,277
Записей в блоге: 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     Поиск Палиндрома
Ответ Создать тему
Опции темы

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