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

Симметричные числа - C++

Восстановить пароль Регистрация
 
glushara
0 / 0 / 0
Регистрация: 20.04.2012
Сообщений: 33
04.06.2013, 17:44     Симметричные числа #1
Здравствуйте
нужно найти все симметричные числа на промежутке от а до b
не могу реализовать.
симметричные числа - это, например, 1221.
помогите кто то.
я так понимаю, нужно проверить или числа - палиндромы.
по форуму искал, но толком не нашел подходящего.спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.06.2013, 17:44     Симметричные числа
Посмотрите здесь:

C++ Напечатать симметричные слова из строки
Симметричные элементы матрицы. C++
Симметричные слова в Visual c++ C++
Напечатать симметричные слова из текста C++
C++ Найти все симметричные натуральные числа в промежутке от a до b
C++ Найти симметричные слова строки и указать их количество
симметричные числа C++ C++
C++ Вывести симметричные слова

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
04.06.2013, 17:49     Симметричные числа #2
Переводите число в строку, строку проверяете палиндром ли она. На форуме примеров масса. Плохо искали.
Мимино
 Аватар для Мимино
180 / 151 / 5
Регистрация: 22.05.2013
Сообщений: 435
Записей в блоге: 1
04.06.2013, 18:09     Симметричные числа #3
Можно просто отщеплять разряды и сравнивать. Вот нашел когда то сделанный учебный пример для определения палиндрома. Работает только для 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
#include "stdafx.h"
#include <iostream>
using namespace std;
 
 
int main()
{
    int number = 0;
 
    while (number != -1)
    {
        cout << "Vvedite 5-teznashnoe chislo (-1 dl'a vuhoda): ";
        cin >> number;
        if (number == -1)
            break;
        if (number / 10000 == number % 10 && (number % 10000) / 1000 == (number % 100) / 10)
            cout << "Chislo " << number << " palindrom." << endl << endl;
        else
            cout << "Chislo " << number << " ne palindrom." << endl << endl;
    }
 
    system("pause");
    return 0;
}
А вот еще нашел функцию, которая отрывает разряды от числа любой разрядности. Служит для "переворачивания" числа (12345 --> 54321)

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
unsigned long rever(unsigned long number)
{
    unsigned long x = number, y = 1, sum = 0;
 
    if (number < 10)
        return number;
 
    while (number / y > 0)
    {
        x /= 10;
        y *= 10;
 
    } 
 
    y /= 10;
 
    for (unsigned long i = 10; i <= number; i *= 10)
    {
        sum += ((number % i) / (i / 10)) * y;
        y /= 10;
        x = i;
    }
 
    return sum + number / x;
}
Если эти 2 кода грамотно "склеить" и результат "положить" в цикл for, получится решение Вашей задачи.
Yandex
Объявления
04.06.2013, 18:09     Симметричные числа
Ответ Создать тему
Опции темы

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