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

Циклы для распечатки чисел - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ перемешать массив http://www.cyberforum.ru/cpp-beginners/thread962963.html
Существует такой алгоритм как random_shuffle. Как сделать чтобы работал данный алгоритм в c++ windows forms?
C++ Разложение в ряд Помогите пожалуйста Функция Разложение в ряд Область сходимости http://www.cyberforum.ru/cpp-beginners/thread962961.html
Вставка поиска в програмный код C++
#include <iostream.h> #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <string.h> FILE *fl; typedef struct { char fio;
C++ Отладчик MCVS 2012
Добрый день! Начал читать Создание эффективных вин32 приложений Рихтер. В первой главе рассматривается обработчик ошибок. Авто пишет что нужно добавить в окно watch строку @err,hr и можно будет...
C++ Почему цикл с условием EOF читает последний символ 2 раза? http://www.cyberforum.ru/cpp-beginners/thread962914.html
Данная программа читает двоичную строку и выводит длину самой продолжительной цепочки нулей. Почему мой цикл читает 2 раза последнее число? #include <iostream> #include <fstream> #include...
C++ Структуры из файла Кто знает как правильно считать данные из файла и распределить содержимое между массивом структур. Подразумевается структура с фамилиями, инициалами, датой, месяцем и годом рождения студента. Не могу... подробнее

Показать сообщение отдельно
keks1434
0 / 0 / 0
Регистрация: 24.09.2013
Сообщений: 8
26.09.2013, 20:57  [ТС]
Кому надо вот код с пояснением
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
Распечатать числа в диапазоне от 1 до N, у которых произведение первой и последней цифры равны числу M.
/* подключаем библиотеки */
#include <iostream>
#include <stdio.h>
 
using namespace std;
 
int main ()
{
    int n = -1, //  конечный диапазон чисел, которые нам нужны
                //  устанавливаем начальное значение -1
                //  это нужно для проверки числа, которое ввел пользователь (оно должно быть в диапазоне от 1 до 2000)
 
        m,      //  произведение первой и последней цифры должно быть равно этому числу
                //  начальное значение нам тут не нужно
 
        i = 10, //  счетчик, чтобы бежать по цифрам, по сути это и есть наши цифры (от 1 до N по условию)
                //  но бежать мы начинаем с 10, так как нам нужно найти числа, произведение первой и последней цифры которого равно m
                //  соответственно нам нужно только двузначные числа
 
        b,      //  буферная переменная, чтобы разбирать число на цифры
                //  на каждом шаге цикла в нее записыватся число i и разбирается по цифрам
                //  i нам терять нельзя
 
        o,      //  сюда будет записываться первая цифра числа i (b)
 
        t,      //  сюда последняя
 
        f = 0;  //  флаг
                //  если вдруг не будет чисел, удовлетворяющих нашему условию, то он останетс равен 0
                //  соответственно можно будет вывести сообщение о том, что таких чисел нет
 
    /*
        n должно быть от 1 до 2000
        требуем, чтобы пользователь ввел именно такое число
    */
    while (n < 1 || n > 2000)
    {
        cout << "n=";
        cin >> n;
    }
 
    /*
        вводим число m
        тут никаких ограничений нет, поэтому можно ввести любое число
    */
    cout << "m=";
    cin >> m;
 
    /*
        бежим по нашим числам
        от 10 до n (N)
    */
    while (i <= n)
    {
        b = i;      //  помещаем наше число в буферную переменную, чтобы не потерять его
        t = b%10;   //  берем последнюю цифру нашего числа и пишем ее в переменную t
 
        /*
            разбираем число на цифры
        */
        while (b)       // пока b не станет равным 0, то есть пока мы его полностью не разберем
        {
            o = b%10;   //  отделяем каждую цифру от нашего числа
                        //  в итоге в конце (после выхода из этого while'а) там будет первая (младшая) цифра нашего числа
            b /= 10;    //  делим число на 10, чтобы перейти к следующему шагу цикла (попасть к следующей цифре)
        }
 
        /*
            проверяем, равно ли произведение первой и последней цифры числа введенному числу m
            если такое число есть, то выводим его и присваиваем переменной f (флаг) значение 1,
            чтобы если подобных чисел нет (флаг тогда останется равным 0) вывести потом сообщение об этом
        */
        if (t*o == m)
        {
            printf("%5d", i);
            f = 1;
        }
 
        i++;    //  переходим к следующему числу
    }
 
    /*
        если f (флаг) так и остался равен 0, значит чисел, удовлетворяющих нашему условю, нет
        поэтому нужно вывести сообщение, уведомляющее об этом
    */
    if (f == 0)
        printf("Таких чисел нет");
 
    return 0;
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru