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

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

Восстановить пароль Регистрация
 
amarok05
Сообщений: n/a
23.05.2014, 11:34     Школа и дом Петра находятся на одной стороне улицы, надо узнать их номера. #1
Школа и дом Петра находятся на одной стороне улицы. Од*нажды по дороге в школу он стал складывать номера домов, мимо которых проходил на своей стороне улицы, начиная с номера своего дома. Когда сумма номеров оказалась равной 99, Петр пе*решел через поперечную улицу. После этого он начал заново скла*дывать номера домов, мимо которых проходил, и при сумме 117 перешел через еще одну поперечную улицу. Петр и в следующем квартале складывал номера домов. Сумма номеров домов третьего квартала оказалась равной 235, включая номер дома школы. Каков номер дома Петра? Каков номер дома школы?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.05.2014, 11:34     Школа и дом Петра находятся на одной стороне улицы, надо узнать их номера.
Посмотрите здесь:

Где находятся номера деталей ПК? C++
C++ Добавить в программу фрагмент в котором определяется расстояние между судами если они находятся на одной долготе)
Заменить отрицательные элементы суммой номера столбца и номера строки, в которых они находятся C++
C++ На какой стороне улицы проживает больше жителей?
Побитовые операции: зная IP, определить, находятся ли компьютеры в одной сети C++
C++ Выведете на экран номера тех ячеек массива, в которых находятся отрицательные числа
C++ Находятся ли ip-адреса в одной сети
Определить на какой стороне улицы проживает больше жителей C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mr.X
Эксперт С++
 Аватар для Mr.X
2796 / 1572 / 246
Регистрация: 03.05.2010
Сообщений: 3,648
24.05.2014, 05:31     Школа и дом Петра находятся на одной стороне улицы, надо узнать их номера. #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
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();
}
Yandex
Объявления
24.05.2014, 05:31     Школа и дом Петра находятся на одной стороне улицы, надо узнать их номера.
Ответ Создать тему
Опции темы

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