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

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

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

Задача Эйнштейна - C++

27.07.2015, 19:22. Просмотров 411. Ответов 1
Метки нет (Все метки)

Думаю все вы знаете задачу Эйнштейна:
1. Англичанин живет в красном доме.
2. Швед держит собаку.
3. Датчанин пьет чай.
4. Зеленый дом — налево от белого, и …
5. … его жилец пьет кофе.
6. Курильщик Pall Mall держит птичку.
7. Жилец дома, находящегося в середине, пьет молоко.
8. Жилец желтого дома курит Dunhill.
9. Норвежец живет в первом доме.
10. Курильщик Marlboro живет рядом с владельцем кота.
11. Владелец лошади живет рядом с курильщиком Dunhill.
12. Курильщик Winfield пьет пиво.
13. Дом Норвежца — рядом с синим домом.
14. Немец курит Rothmans.
15. Курильщик Marlboro живет рядом с тем, кто пьет воду.

Так вот. Решил я написать программу, при помощи которой пользователь, по данной ему задаче, будет заполнять информацию. Задачу я написал, просто хочу узнать от опытных пользователей, как можно было написать ее более компактнее)
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
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
 
void out()
{
    printf("1. English man lives in red house\n");
    printf("2. Sweden man has a dog\n");
    printf("3. Denmark man driks tea\n");
    printf("4. Green house located to the left from the white and...\n");
    printf("5. ... His owner drinks coffee\n");
    printf("6. The one who smokes chesterfield has a bird\n");
    printf("7. The one, who lives in the middle, drinks a milk\n");
    printf("8. The one who lives in the yellow house smokes dunhill\n");
    printf("9. Norway man lives in the first house\n");
    printf("10. Man who smokes Marlboro lives near cat owner\n");
    printf("11. Horse owner lives near dunhill smoker\n");
    printf("12. Winfiled smoker drinks beer\n");
    printf("13. Norway house located near blue house\n");
    printf("14. German man smokes boss\n");
    printf("15. Marlboro smoker lives near water consumer\n");
    printf("\n\n\n\n");
 
}
 
 
int main()
{
    const char *c[5], *c1[5];
    const char *n[5], *n1[5];
    const char *d[5], *d1[5];
    const char *a[5], *a1[5];
    const char *t[5], *t1[5];
    c[0] = "Yellow";    c[1] = "Blue";  c[2] = "Red";   c[3] = "Green"; c[4] = "White";
    n[0] = "Norway";    n[1] = "Denmark";   n[2] = "England";   n[3] = "Germany";   n[4] = "Sweden";
    d[0] = "Water";     d[1] = "Tea";   d[2] = "Milk";  d[3] = "Coffee";    d[4] = "Beer";
    a[0] = "Cat";       a[1] = "Horse"; a[2] = "Bird";  a[3] = "Fish";      a[4] = "Dog";
    t[0] = "Dunhill";   t[1] = "Marlboro";  t[2] = "Chesterfield";  t[3] = "Boss";  t[4] = "Winfield";
    int x,y,z,k,g;
    for (z = 0; z < 5; z++)
    {
        c1[z] = "0";
        n1[z] = "0";
        d1[z] = "0";
        a1[z] = "0";
        t1[z] = "0";
    }
    
    out();
    
    do
    {
        
        printf("Choose an option:\n");
        printf("1. Show again\n");
        printf("2. Add infromation\n");
        printf("3. Show information\n");
        printf("4. Check\n");
        scanf("%d", &x);
        switch (x)
        {
        case 1: out();
            break;
        case 2: 
        {
            printf("Choose house number: ");
            scanf("%d", &z);
            z = z - 1;
            printf("What do you want to add?\n");
            printf("1. House color\n");
            printf("2. Liver's nationality\n");
            printf("3. What he drinks\n");
            printf("4. His animal\n");
            printf("5. What he smokes\n");
            scanf("%d", &y);
            switch (y)
            {
            case 1:
            {
                printf("Choose a color: \n");
                printf("1 - Red\n");
                printf("2 - Yellow\n");
                printf("3 - White\n");
                printf("4 - Blue\n");
                printf("5 - Green\n");
                scanf("%d", &k);
                switch (k)
                {
                case 1: c1[z] = c[2]; break;
                case 2: c1[z] = c[0]; break;
                case 3: c1[z] = c[4]; break;
                case 4: c1[z] = c[1]; break;
                case 5: c1[z] = c[3]; break;
                }
                break;
            }
            case 2:
            {
                printf("Choose nationality: \n");
                printf("1 - Denmark\n");
                printf("2 - England\n");
                printf("3 - Norway\n");
                printf("4 - Sweden\n");
                printf("5 - German\n");
                scanf("%d", &k);
                switch (k)
                {
                case 1: n1[z] = n[1]; break;
                case 2: n1[z] = n[2]; break;
                case 3: n1[z] = n[0]; break;
                case 4: n1[z] = n[4]; break;
                case 5: n1[z] = n[3]; break;
                }
                break;
            }
            case 3:
            {
                printf("Choose a drink: \n");
                printf("1 - Beer\n");
                printf("2 - Tea\n");
                printf("3 - Coffee\n");
                printf("4 - Milk\n");
                printf("5 - Water\n");
                scanf("%d", &k);
                switch (k)
                {
                case 1: d1[z] = d[4]; break;
                case 2: d1[z] = d[1]; break;
                case 3: d1[z] = d[3]; break;
                case 4: d1[z] = d[2]; break;
                case 5: d1[z] = d[0]; break;
                }
                break;
            }
            case 4:
            {
                printf("Choose an animal: \n");
                printf("1 - Horse\n");
                printf("2 - Cat\n");
                printf("3 - Dog\n");
                printf("4 - Fish\n");
                printf("5 - Bird\n");
                scanf("%d", &k);
                switch (k)
                {
                case 1: a1[z] = a[1]; break;
                case 2: a1[z] = a[0]; break;
                case 3: a1[z] = a[4]; break;
                case 4: a1[z] = a[3]; break;
                case 5: a1[z] = a[2]; break;
                }
                break;
            }
            case 5:
            {
                printf("Choose ciggarettes: \n");
                printf("1 - Chesterfield\n");
                printf("2 - Boss\n");
                printf("3 - Winfield\n");
                printf("4 - Dunhill\n");
                printf("5 - Marlboro\n");
                scanf("%d", &k);
                switch (k)
                {
                case 1: t1[z] = t[2]; break;
                case 2: t1[z] = t[3]; break;
                case 3: t1[z] = t[4]; break;
                case 4: t1[z] = t[0]; break;
                case 5: t1[z] = t[1]; break;
                }
                break;
            }
            break;
            
            }
            break;
        }
        case 3:
        {
            printf("        1   2   3   4   5\n");
            printf("color:      %s  %s  %s  %s  %s\n", c1[0],c1[1],c1[2],c1[3],c1[4]);
            printf("nation:     %s  %s  %s  %s  %s\n", n1[0],n1[1],n1[2],n1[3],n1[4]);
            printf("drink:      %s  %s  %s  %s  %s\n", d1[0],d1[1],d1[2],d1[3],d1[4]);
            printf("animal:     %s  %s  %s  %s  %s\n", a1[0],a1[1],a1[2],a1[3],a1[4]);
            printf("cig:        %s  %s  %s  %s  %s\n", t1[0],t1[1],t1[2],t1[3],t1[4]);
            break;
        }
        case 4:
            for (z = 0; z < 5; z++)
            {
                g = 0;
                if (c1[z] == c[z] && a1[z] == a[z] && t1[z] == t[z] && d1[z] == d[z] && n1[z] == n[z])
                {   
                    g++;
                }
                
                else
                {
                    printf("Something is not right\n");
                    break;
                }
            }
        }
        
    } while (g != 4);
    printf("Everything is correct\n");
    
    system("pause");
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.07.2015, 19:22
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Задача Эйнштейна (C++):

Загадка Эйнштейна о зебре - C++
Зебра. В трех соседних домах, окрашенных в разные цвета, живут пять человек разных национальностей. У каждого из них есть своё любимое...

задача Эйнштейна, не понимаю какая ошибка. - Prolog
написала несколько вариантов программ на Visual Prolog, но ни одна не работает, ошибка е150. Понятия не имею, в чем проблема... Пожалуйста,...

Загадка Эйнштейна - Lisp
- загадка - решение - обсуждение Добавлено через 16 минут - Clojure - Racket Добавлено через 2 минуты - PicoLisp

Загадка Эйнштейна На Prolog - Prolog
Всем доброго времени суток! Вот недавно только узнал об одной очень извесной головоломки Эйнштейна - &quot;Who has a fish?&quot;. И мне стало...

Загадка Эйнштейна На Prolog и интерфейс - Prolog
Всем доброго времени суток! Я немного знаю Prolog, мне поставили задачу решения загадки Эйнштейна на Prolog, но это не самая большая...

Уравнение Эйнштейна для фотоэффекта - Квантовая и атомная физика
почему иногда вместо кинетической энергии в уравнение Эйнштейна для фотоэффекта подставляем U*е? чем это объяснить?

1
askurandrio
Заблокирован
01.08.2015, 02:15 #2
Например
C++
1
scanf("%d", &x);   cin>>&x;
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.08.2015, 02:15
Привет! Вот еще темы с ответами:

Теория относительности Эйнштейна. Время - СТО
Ответе пожалуйста на вопрос по теории относительности Эйнштейна касательного времени. Вот такой пример: Я стою на месте и есть еще один...

почему в уравнении эйнштейна для внешнего фотоэффекта скорость берется максимальная? - Квантовая и атомная физика
почему в уравнении эйнштейна для внешнего фотоэффекта скорость берется максимальная?

Задача: В некотором государстве ввели компьютерный паспорт гражданина.(задача) - Pascal
Доброго времени суток,форумчане. Хотелось бы попросить помощи в решении одной задачи от умных голов. Задача: В некотором...

Задача на перебор вариантов. Задача Л.Эйлера. Про чиновника - PascalABC.NET
Задача Л.Эйлера. Некий чиновник купил лошадей и быков на сумму 1770 талеров. За каждую лошадь он уплатил по 31 талеру, а за каждого быка по...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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