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

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

Войти
Регистрация
Восстановить пароль
 
Mars74
1 / 1 / 0
Регистрация: 25.03.2013
Сообщений: 31
#1

Сравнение цифр в n-значном числе - C++

21.11.2014, 17:49. Просмотров 278. Ответов 5
Метки нет (Все метки)

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
    int x, y, n=99;
for(int i = 0; i <= n; i++)  // проход по всем числам в интервале, включая границы
{
x = i / 10; // старший знак - делим на 10. Например 43 / 10 = 4
y = i % 10; // младший знак - остаток от деления на 10. Например 43 % 10 = 3
 
if( (abs( x - y) == 1) & ((x != 0) & (y != 0)) ) // если разница по модулю равна единице и нет нулей
cout << i<< endl;
}
    getchar(); getchar();
    return 0;
Программа печатает все 2х значные числа разница между ними по модулю =1.
Как модифицировать программу чтобы она работала для n значных чисел.
Например:
число 125: сравниваем |1 - 2| = 1, потом сравниваем |2 - 5| > 1. число 125 не подходит
число 121: сравниваем |1 - 2| = 1, потом сравниваем |2 - 1| =1. число 121 подходит
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.11.2014, 17:49     Сравнение цифр в n-значном числе
Посмотрите здесь:

Сравнение цифр в числе C++
C++ не могу никак найти сравнение цифр в числе
Сравнение чисел в трёхзначном числе C++
C++ Сравнение чисел в трёхзначном числе
C++ Найти сумму цифр в 4-х значном числе
C++ сумма цифр в числе
Замена цифр в числе C++
Сложение цифр в числе C++
Нахождение всех симметричных чисел в 4-х значном числе C++
Количество цифр в числе C++
Соседние цифры в N значном числе C++
C++ Найти сумму цифр двух целых двухзначных чисел a и b, написав функцию определения цифр в числе

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nosey
 Аватар для Nosey
1203 / 370 / 106
Регистрация: 22.10.2014
Сообщений: 813
Завершенные тесты: 2
21.11.2014, 18:11     Сравнение цифр в n-значном числе #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
#include "stdafx.h"
#include <iostream>
#include <cmath>
#include <string>
#include <sstream>
 
void main()
{
    int a = 0, b = 100;
    for (; a <= b; ++a)
    {
        std::stringstream stream;
        stream << a;
        std::string valueString;
        stream >> valueString;
        bool sucsess = true;
        for (auto c1 = valueString.begin(), c2 = c1+1, end = valueString.end(); c2 < end && sucsess; ++c1, ++c2)
        {
            sucsess &= abs(*c1 - *c2) <= 1;
        }
        if (sucsess)
        {
            std::cout << valueString << std::endl;
        }
    }
}
Mars74
1 / 1 / 0
Регистрация: 25.03.2013
Сообщений: 31
21.11.2014, 19:33  [ТС]     Сравнение цифр в n-значном числе #3
программа не запускается
выдает ошибку в 17 строке "В списке объявлений спецификатор "auto" должен всегда выводить тот же самый тип "
Nosey
 Аватар для Nosey
1203 / 370 / 106
Регистрация: 22.10.2014
Сообщений: 813
Завершенные тесты: 2
21.11.2014, 20:05     Сравнение цифр в n-значном числе #4
Ну тогда вот так:
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
#include "stdafx.h"
#include <iostream>
#include <cmath>
#include <string>
#include <sstream>
 
void main()
{
    int a = 0, b = 100;
    for (; a <= b; ++a)
    {
        std::stringstream stream;
        stream << a;
        std::string valueString;
        stream >> valueString;
        bool sucsess = true;
        for (std::string::iterator c1 = valueString.begin(), c2 = c1 + 1, end = valueString.end(); c2 < end && sucsess; ++c1, ++c2)
        {
            sucsess &= abs(*c1 - *c2) <= 1;
        }
        if (sucsess)
        {
            std::cout << valueString << std::endl;
        }
    }
}
Mars74
1 / 1 / 0
Регистрация: 25.03.2013
Сообщений: 31
21.11.2014, 20:55  [ТС]     Сравнение цифр в n-значном числе #5
Для 2х значного диапазона (от 0 до 99) не правильно числа выводит... должен выводить только 16 цифр
12 21 23 32 34 43 45 54 56 65 67 76 78 87 89 98
для 3Х от значного диапазона (от 100 до 999) должен печатать
121 123 212 232 234 .... 878 987
Nosey
 Аватар для Nosey
1203 / 370 / 106
Регистрация: 22.10.2014
Сообщений: 813
Завершенные тесты: 2
21.11.2014, 22:07     Сравнение цифр в n-значном числе #6
Mars74, проверьте длину строки valueString(>1). Ну или же измените диапазон перебираемых значений с 10.
Yandex
Объявления
21.11.2014, 22:07     Сравнение цифр в n-значном числе
Ответ Создать тему
Опции темы

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