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

Вывести на экран все числа-палиндромы (числа, которые одинаково читаются как слева так и справа) - C++

Восстановить пароль Регистрация
 
WillieWonka
0 / 0 / 0
Регистрация: 16.11.2014
Сообщений: 18
25.11.2014, 09:01     Вывести на экран все числа-палиндромы (числа, которые одинаково читаются как слева так и справа) #1
Вывести на экран все числа палиндромы (т.е числа которые читаются одинаково как слева, так и справа) из заданного интервала натурального ряда [n1,n2] на языке С++
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.11.2014, 09:01     Вывести на экран все числа-палиндромы (числа, которые одинаково читаются как слева так и справа)
Посмотрите здесь:

Найдите сумму всех одиннадцати простых чисел, которые можно укорачивать как слева направо, так и справа налево. C++
Найти все числа-палиндромы, которые не больше 100, и их квадраты тоже палиндромы C++
подскажите: как вывести на экран числа от 0 до 20.... и еще одна: вывести все четные числа от 0 до 20... C++
C++ Написать программу, которая выделяет любим способом в тексте слова палиндромы (слова, которые читаются одинаково справа налево и слева направо)
C++ Даны натуральные числа N, K, L (K<L). Вывести на экран все делители числа N, которые меньше K или больше L
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Aloir
 Аватар для Aloir
216 / 216 / 13
Регистрация: 17.12.2010
Сообщений: 688
25.11.2014, 10:53     Вывести на экран все числа-палиндромы (числа, которые одинаково читаются как слева так и справа) #2
используйте поиск.
D_in_practice
 Аватар для D_in_practice
330 / 330 / 159
Регистрация: 02.10.2014
Сообщений: 666
25.11.2014, 11:07     Вывести на экран все числа-палиндромы (числа, которые одинаково читаются как слева так и справа) #3
Код на С++
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
#include <iostream>
 
int main(){
    
    int n1, n2;
    do{
        std::cin >> n1 >> n2;
    }while(n1 < 1 || n2 < n1);
    
    for (int i = n1; i <= n2; ++i){
        
        int buf = i;
        int n = 1;
        while ((buf /= 10) > 0)
            ++n;
        
        int flag = 1;
        for (int j = 1; j <= n/2; ++j){
            
            int p_10_n_j = 1;
            for (int k = 1; k <= n - j; ++k)
                p_10_n_j *= 10;
            
            int p_10_j_1 = 1;
            for (int k = 1; k <= j - 1; ++k)
                p_10_j_1 *= 10;
                
            if ((i/p_10_n_j) % 10 != (i/p_10_j_1) % 10){
                flag = 0;
                break;
            }
        }
            
        if (flag == 1)
            std::cout << i << std::endl;        
    }
}
WillieWonka
0 / 0 / 0
Регистрация: 16.11.2014
Сообщений: 18
12.12.2014, 08:48  [ТС]     Вывести на экран все числа-палиндромы (числа, которые одинаково читаются как слева так и справа) #4
Можете объяснить?
D_in_practice
 Аватар для D_in_practice
330 / 330 / 159
Регистрация: 02.10.2014
Сообщений: 666
12.12.2014, 10:18     Вывести на экран все числа-палиндромы (числа, которые одинаково читаются как слева так и справа) #5
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
#include <iostream>
 
int main(){
    
    int n1, n2;
    do{
        std::cin >> n1 >> n2;
    }while(n1 < 1 || n2 < n1);//ввод начального и конечного значений
                              //пока начальное < 1 и конечное меньше начального
    
    for (int i = n1; i <= n2; ++i){//для всех чисел от n1 до n2
        
        int buf = i;//запишем число в новую переменную, чтобы не потерять его
        
        int n = 1;//считаем сколько цифр содержит число
        while ((buf /= 10) > 0)//их столько, сколько раз число делится на 10
            ++n;
        
        int flag = 1;//флаг = 1 если число палиндром
        for (int j = 1; j <= n/2; ++j){//проверим первую половину цифр
            
            int p_10_n_j = 1;//получаем 10^(n - j)
            for (int k = 1; k <= n - j; ++k)
                p_10_n_j *= 10;
            
            int p_10_j_1 = 1;//получаем 10^(j - 1)
            for (int k = 1; k <= j - 1; ++k)
                p_10_j_1 *= 10;
                
            if ((i/p_10_n_j) % 10 != (i/p_10_j_1) % 10){//если n-j-я цифра
                flag = 0;//не равна j-1-й цифре, установим флаг в 0
                break;//и выйдем из цикла
            }
        }
            
        if (flag == 1)//если число палиндром выведем его на экран
            std::cout << i << std::endl;        
    }//для всех чисел от n1 до n2
}
Yandex
Объявления
12.12.2014, 10:18     Вывести на экран все числа-палиндромы (числа, которые одинаково читаются как слева так и справа)
Ответ Создать тему
Опции темы

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