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

Школа и дом Петра находятся на одной стороне улицы, надо узнать их номера. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Составить программу для проверки утверждения: «Результатами вычислений по формуле х2 +х+ 17 при 0<х< 15 являют http://www.cyberforum.ru/cpp-beginners/thread1185745.html
Составить программу для проверки утверждения: «Результатами вычислений по формуле х2 +х+ 17 при 0<х< 15 являются простые числа». Все результаты вывести на экран.
C++ Составить программу, реализующую эпизод применения компьютера в книжном магазине Составить программу, реализующую эпизод применения компьютера в книжном магазине. Компьютер запрашивает стоимость книг, сумму денег, внесенную покупателем; если сдачи не требуется, печатает на... http://www.cyberforum.ru/cpp-beginners/thread1185742.html
Для заданной последовательности найти числа с минимальной и максимальной суммой цифр (Pascal->C++) C++
Я сделал прогу на turbo pascal, но в C++ плохо понимаю , помогите перевести:) Составить процедуру (или функцию) для вычисления суммы десятичных цифр некоторого числа N. Для заданной...
Нарисовать аналоговые часы C++
Изобразить на экране ЭВМ рисунок
C++ Найти сумму элементов массива между двумя нулями http://www.cyberforum.ru/cpp-beginners/thread1185715.html
Помогите дан одномерный массив из n элементов, найти сумму элементов между двумя нулями. template <class T> T Sum_mej(T *b, int n, int k) { int min, i; for (i = 0; i < n; i++) {if (b==0) ...
C++ Решение системы линейных уравнений методом простой итерации Это программа для решения системы линейных уравнений методом Зейделя. Что нужно изменить, чтобы решить систему методом простой итерации? #include <iostream> #include <math.h> #include... подробнее

Показать сообщение отдельно
Mr.X
Эксперт С++
3049 / 1694 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
24.05.2014, 05:31
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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
/////////////////////////////////////////////////////////////////////////////////////////
// Школа и дом Петра находятся на одной стороне улицы. Од*нажды по дороге в школу он стал 
//складывать номера домов, мимо которых проходил на своей стороне улицы, начиная с номера 
//своего дома. Когда сумма номеров оказалась равной 
//  99, 
//Петр пе*решел через поперечную улицу. 
//После этого он начал заново скла*дывать номера домов, мимо которых проходил, и при сумме 
//  117 
//перешел через еще одну поперечную улицу. Петр и в следующем квартале складывал номера домов. 
//Сумма номеров домов третьего квартала оказалась равной 
//  235, 
//включая номер дома школы. 
//Каков номер дома Петра? Каков номер дома школы? 
/////////////////////////////////////////////////////////////////////////////////////////
#include <conio.h>
#include <iostream>
/////////////////////////////////////////////////////////////////////////////////////////
int const   BUILD_NUM_STEP  =   2;
/////////////////////////////////////////////////////////////////////////////////////////
bool  successfully_completed_block
    (
        int         first_num_in_block,
        int         block_sum,
        int     &   last_num_in_block
    )
{
    bool    bool_res;
    int     sum         =   0;
 
    for (
            int
            cur_num     =   first_num_in_block;
            sum         <=  block_sum;
            cur_num     +=  BUILD_NUM_STEP
        )
    {
        sum         +=  cur_num;
        bool_res    =   sum == block_sum;
 
        std::cout   <<  "#"
                    <<  cur_num
                    <<  '\t'
                    <<  "sum = "
                    <<  sum
                    <<  std::endl;
 
        if( bool_res )
        {
            std::cout           <<  std::endl;
            last_num_in_block   =   cur_num;
            break;
        }//if
    }//for
 
    return  bool_res;
}
/////////////////////////////////////////////////////////////////////////////////////////
bool  successfully_from_3_block_sums_get_Peter_and_school_building_numbers
    (
        int         block_sum_1,
        int         block_sum_2,
        int         block_sum_3,
        int     &   Peter_building_number,
        int     &   school_building_number
    )
{
    bool    bool_res    =   false;
 
    int     sum_1       =   0;
    int     sum_2       =   0;
    int     sum_3       =   0;
 
    for (
            Peter_building_number   =   1;
            Peter_building_number   <   block_sum_1; 
            ++Peter_building_number
        )
    {
        int     last_num_in_first_block     =   0;
        int     last_num_in_second_block    =   0;
 
        std::cout   <<  std::endl
                    <<  std::endl
                    <<  std::endl
                    <<  std::endl
                    <<  "Очередной заход Петра:"
                    <<  std::endl;
 
        bool_res    =       successfully_completed_block
                                (
                                    Peter_building_number,
                                    block_sum_1,
                                    last_num_in_first_block
                                )
 
                        &&  successfully_completed_block
                                (
                                    last_num_in_first_block + BUILD_NUM_STEP,
                                    block_sum_2,
                                    last_num_in_second_block
                                )
 
                        &&  successfully_completed_block
                                (
                                    last_num_in_second_block + BUILD_NUM_STEP,
                                    block_sum_3,
                                    school_building_number
                                );
 
        if( bool_res )
        {
            break;
        }
    }//for
 
    return  bool_res;
}
/////////////////////////////////////////////////////////////////////////////////////////
int  main()
{
    std::locale::global(std::locale(""));
 
    int     block_sum_1             =   99;
    int     block_sum_2             =   117;
    int     block_sum_3             =   235;
 
    int     Peter_building_number   =   0;
    int     school_building_number  =   0;
 
    if  (
            successfully_from_3_block_sums_get_Peter_and_school_building_numbers
                (
                    block_sum_1,
                    block_sum_2,
                    block_sum_3,
                    Peter_building_number,
                    school_building_number
                )
        )
    {
        std::cout   <<  "Петр живет в доме под номером\t\t"
                    <<  Peter_building_number
                    <<  std::endl
                    <<  "Школа находится в доме с номером\t"
                    <<  school_building_number
                    <<  std::endl;
    }
    else
    {
        std::cout   <<  "Решение не найдено."
                    <<  std::endl;
    }//else
 
    getch();
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru