Форум программистов, компьютерный форум 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 и можно будет увидеть описание последней API ошибки в текущем потоке. В нете еще пишут команда r0,hr идентично работает. Так вот не могу добавить никакую строку в watch окно. (Консольное win32 приложение, debug версия )...
C++ Почему цикл с условием EOF читает последний символ 2 раза? http://www.cyberforum.ru/cpp-beginners/thread962914.html
Данная программа читает двоичную строку и выводит длину самой продолжительной цепочки нулей. Почему мой цикл читает 2 раза последнее число? #include <iostream> #include <fstream> #include <stdio.h> using namespace std; int main (){ char a; int i1,i2; i1 = 0;
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;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru