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

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

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

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

21.11.2014, 17:49. Просмотров 325. Ответов 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 подходит
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.11.2014, 17:49
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сравнение цифр в n-значном числе (C++):

Найти сумму цифр в 4-х значном числе - C++
Пожалуйста помогите. С простенькой задачкой. Язык С. Задание: Вводится с клавиатуры 4-х значное число, а программа должна вывести ...

Сравнение цифр в числе - C++
Подскажите, как сравнивать цифры в числе. Пытался в массив перевести, но не получилось. Пытался просто число в символьный перевести и...

Соседние цифры в N значном числе - C++
Для n-значных чисел печатать только те, цифры которых являются соседними в натуральном ряду. Программа правильно работает только с 2х...

Нахождение всех симметричных чисел в 4-х значном числе - C++
Пример 1331,7667 Не понимаю с чего начать вообще программу, есть идея разбить на отдельные числа, но не понимаю как это реализовать,...

не могу никак найти сравнение цифр в числе - C++
народ помогите с индексами в массиве, надо сделать задачку в массиве из 4 индексов например 13 2 45 19 нужно из каждого индекса найти...

Определить количество цифр в числе n и сумму всех его цифр - C++
Дано натуральное n , определить количество цифр в числе n и сумму всех его цифр. Значение n ввести с клавиатуры. Добавлено через...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Nosey
1348 / 399 / 107
Регистрация: 22.10.2014
Сообщений: 861
Завершенные тесты: 2
21.11.2014, 18:11 #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;
        }
    }
}
0
Mars74
1 / 1 / 0
Регистрация: 25.03.2013
Сообщений: 31
21.11.2014, 19:33  [ТС] #3
программа не запускается
выдает ошибку в 17 строке "В списке объявлений спецификатор "auto" должен всегда выводить тот же самый тип "
0
Nosey
1348 / 399 / 107
Регистрация: 22.10.2014
Сообщений: 861
Завершенные тесты: 2
21.11.2014, 20:05 #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;
        }
    }
}
0
Mars74
1 / 1 / 0
Регистрация: 25.03.2013
Сообщений: 31
21.11.2014, 20:55  [ТС] #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
0
Nosey
1348 / 399 / 107
Регистрация: 22.10.2014
Сообщений: 861
Завершенные тесты: 2
21.11.2014, 22:07 #6
Mars74, проверьте длину строки valueString(>1). Ну или же измените диапазон перебираемых значений с 10.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.11.2014, 22:07
Привет! Вот еще темы с ответами:

Рекурсия: количество цифр в числе, сумма цифр и реверс числа - C++
Вот задание: Написать программу, которая запрашивает у пользователя целое число, на экран выводит сколько цифр в числе, их сумму и...

Определить сколько цифр в заданном числе, найти сумму цифр, и последнюю цифру - C++
дано натуральное число n (n&lt;10000). определить сколько цифр, найти сумму цифр, и последнюю цифру. Не могу сообразить где косяк вышел ...

Напишите программу, выводящую на экран количество цифр в этом числе и сумму этих цифр - C++
я начинающий! помогите! мне на екзам! Дано натуральное число а (a&lt;100). Напишите программу, выводящую на экран количество цифр в этом...

С клавиатуры вводится положительное натуральное число. Определить количество цифр в числе (сумму цифр) - C++
С клавиатуры вводится положительное натуральное число. Определить количество цифр в числе (сумму цифр)


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
21.11.2014, 22:07
Ответ Создать тему
Опции темы

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