0 / 0 / 0
Регистрация: 02.10.2020
Сообщений: 9
1

Определение по заданному году соответствующего животного по китайскому гороскопу

02.10.2020, 10:50. Показов 9177. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Составьте программу определения по заданному пользователем году
названия соответствующего животного по китайскому гороскопу. Название
животного выбирается в зависимости от остатка деления года на 12 по следующей
схеме: 0 – Обезьяна, 1 – Петух, 2 – Собака, 3 – Кабан, 4 – Крыса, 5 – Бык, 6 – Тигр,
7 – Кролик или Кот, 8 – Дракон, 9 – Змея, 10 – Лошадь, 11 – Овца.
.
.
.
.
.
.
.
я написала так,но все равно выдает ошибку со скобками и требует while,а при их добавлении появляются другие ошибки
.
.
.
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
int main()
    using namespace std;
    int main();
    {
        {
            do
            {
                int y, k;
                cout << "Введите год : ";
                cin >> y;
                k = 11 - abs(2000 - y) % 11;
                switch (k) {
                case 11:
                    cout << "Овца" << endl; break;
                case 10:
                    cout << "Лошадь" << endl; break;
                case 9:
                    cout << "Змея" << endl; break;
                case 8:
                    cout << "Дракон" << endl; break;
                case 7:
                    cout << "Кролик" << endl; break;
                case 6:
                    cout << "Тигр" << endl; break;
                case 5:
                    cout << "Бык" << endl; break;
                case 4:
                    cout << "Крыса" << endl; break;
                case 3:
                    cout << "Кабан" << endl; break;
                case 2:
                    cout << "Собака" << endl; break;
                case 1:
                    cout << "Петух" << endl; break;
                case 0:
                    cout << "Обезьяна" << endl; break;
                }
                return 0;
            }
        }
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.10.2020, 10:50
Ответы с готовыми решениями:

Определение соответствующего заданному году номера столетия
Дан номер некоторого года (целое положительное число&gt;1000). Определить соответствующий ему номер...

Определить кто человек по китайскому гороскопу
Написать программу, которая просит пользователя ввести год его рождения, а затем выводит, кто он по...

По дате рождения сосчитать знак Зодиака и знак по китайскому гороскопу
По дате рождения сосчитать знак Зодиака и знак по китайскому гороскопу (все в форме). Все условия...

Определение века по заданному году
Здравствуйте, помогите пожалуйста, нужно написать программу, определяющую век по заданному году. Я...

12
Модератор
Эксперт С++
13502 / 10754 / 6409
Регистрация: 18.12.2011
Сообщений: 28,701
02.10.2020, 10:57 2
Лучший ответ Сообщение было отмечено Silence02ru как решение

Решение

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
#include <iostream>
#include <clocale>
using namespace std;
int main() // !!!!!!!!  ; не ставится
{
    setlocale(LC_ALL, "Rus");
    while (true)
    {
        int y, k;
        cout << "Введите год : ";
        cin >> y;
        if (y <= 0)break; // условие завершения
        k = 11 - abs(2000 - y) % 11;
        switch (k) {
        case 11:
            cout << "Овца" << endl; break;
        case 10:
            cout << "Лошадь" << endl; break;
        case 9:
            cout << "Змея" << endl; break;
        case 8:
            cout << "Дракон" << endl; break;
        case 7:
            cout << "Кролик" << endl; break;
        case 6:
            cout << "Тигр" << endl; break;
        case 5:
            cout << "Бык" << endl; break;
        case 4:
            cout << "Крыса" << endl; break;
        case 3:
            cout << "Кабан" << endl; break;
        case 2:
            cout << "Собака" << endl; break;
        case 1:
            cout << "Петух" << endl; break;
        case 0:
            cout << "Обезьяна" << endl; break;
        }
    }
    return 0;
}
1
0 / 0 / 0
Регистрация: 02.10.2020
Сообщений: 9
05.10.2020, 11:41  [ТС] 3
Написала код,все работает ,но выдает ошибку именно в правильности года животного,т.е.,пишу 2000 и выдает овцу,а это на самом деле дракон. Не знаю даже где ошибка



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
using namespace std;
int main()
{
    setlocale(LC_ALL, "Rus");
    while (true)
    {
        int y, k;
        cout << "Введите год : ";
        cin >> y;
        if (y <= 0)break;
        k = 11 - abs(2000 - y) % 11;
        switch (k) {
        case 11:
            cout << "Овца" << endl; break;
        case 10:
            cout << "Лошадь" << endl; break;
        case 9:
            cout << "Змея" << endl; break;
        case 8:
            cout << "Дракон" << endl; break;
        case 7:
            cout << "Кролик" << endl; break;
        case 6:
            cout << "Тигр" << endl; break;
        case 5:
            cout << "Бык" << endl; break;
        case 4:
            cout << "Крыса" << endl; break;
        case 3:
            cout << "Кабан" << endl; break;
        case 2:
            cout << "Собака" << endl; break;
        case 1:
            cout << "Петух" << endl; break;
        case 0:
            cout << "Обезьяна" << endl; break;
        }
    }
    return 0;
}
0
0 / 0 / 0
Регистрация: 02.10.2020
Сообщений: 9
05.10.2020, 12:09  [ТС] 4
Выдает не верных животных: ввожу 2000 - овца,а это дракон ,ввожу 1998 - змея,а это тигр.
0
из племени тумба-юбма
2467 / 1790 / 417
Регистрация: 29.11.2015
Сообщений: 8,690
Записей в блоге: 15
05.10.2020, 13:03 5
Ну программа по крайней мере работает исправно, перебирая все года, значит ошибка у вас, именно в названии года.
Кликните здесь для просмотра всего текста

Введите год : 2000
Овца
Введите год : 2001
Лошадь
Введите год : 2002
Змея
Введите год : 2003
Дракон
Введите год : 2004
Кролик
Введите год : 2005
Тигр
Введите год : 2006
Бык
Введите год : 2007
Крыса
Введите год : 2008
Кабан
Введите год : 2009
Собака
Введите год : 2010
Петух
Введите год : 2011
Овца
Введите год :


Добавлено через 1 минуту
хотя стоп, программа вводит 11 животных, а их 12, значит 1 год вылетает.
1
0 / 0 / 0
Регистрация: 02.10.2020
Сообщений: 9
05.10.2020, 13:07  [ТС] 6
их 12,я до 0 вводила.
Мне кажется ошибка именно в формуле,но додумать другую чот не могу
0
из племени тумба-юбма
2467 / 1790 / 417
Регистрация: 29.11.2015
Сообщений: 8,690
Записей в блоге: 15
05.10.2020, 13:18 7
так у вас и годи животных идут не по порядку календаря
1
Just Do It!
3840 / 2286 / 636
Регистрация: 23.09.2014
Сообщений: 7,061
Записей в блоге: 2
05.10.2020, 14:23 8
Цитата Сообщение от Silence02ru Посмотреть сообщение
k = 11 - abs(2000 - y) % 11;
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
        #include <string>
#include <iostream>
#include <cmath>
 
using namespace std;
int main()
{   setlocale(LC_ALL, "Rus");
    while (true)
    {   int y; cout << "Введите год : "; cin >> y;
        if (y <= 0) break;
        int k = abs(2000-y) % 12;
        
        switch (k)
        {   case  0: cout << "Год Дракона"  << endl; break;
            case  1: cout << "Год Змеи"     << endl; break;
            case  2: cout << "Год Лошади"   << endl; break;
            case  3: cout << "Год Козы"     << endl; break;
            case  4: cout << "Год Обезьяны" << endl; break;
            case  5: cout << "Год Петуха"   << endl; break;
            case  6: cout << "Год Собаки"   << endl; break;
            case  7: cout << "Год Свиньи"   << endl; break;
            case  8: cout << "Год Крысы"    << endl; break;
            case  9: cout << "Год Быка"     << endl; break;
            case 10: cout << "Год Тигра"    << endl; break;
            case 11: cout << "Год Кролика"  << endl; break;
        }
    }
    return 0;
}
Добавлено через 6 минут
лучше:
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
#include <string>
#include <iostream>
#include <cmath>
 
using namespace std;
int main()
{   setlocale(LC_ALL, "Rus");
    while (true)
    {   int y; cout << "Введите год : "; cin >> y;
        if (y <= 0) break;
        int k = abs(2000-y) % 12;
        
        const char* const m[] =
        {   "Дракона" ,
            "Змеи"    ,
            "Лошади"  ,
            "Козы"    ,
            "Обезьяны",
            "Петуха"  ,
            "Собаки"  ,
            "Свиньи"  ,
            "Крысы"   ,
            "Быка"    ,
            "Тигра"   ,
            "Кролика"
        };
        
        cout << "Год " << m[k] << '\n';
    }
    return 0;
}
1
0 / 0 / 0
Регистрация: 02.10.2020
Сообщений: 9
05.10.2020, 15:37  [ТС] 9
для чего нужно условие завершения " if (y <= 0) break"? Она ведь из этого работает или в чем фишка ?
0
из племени тумба-юбма
2467 / 1790 / 417
Регистрация: 29.11.2015
Сообщений: 8,690
Записей в блоге: 15
05.10.2020, 15:44 10
Цитата Сообщение от Silence02ru Посмотреть сообщение
для чего нужно условие завершения " if (y <= 0) break"?
чтоб выйти из цикла while
XLAT, код не верно работает:
Кликните здесь для просмотра всего текста
Введите год : 2000
Год Дракона
Введите год : 2001
Год Змеи
Введите год : 1999
Год Змеи
Введите год : 0

--------------------------------
Process exited after 21.9 seconds with return value 0
Для продолжения нажмите любую клавишу . . .
2
Just Do It!
3840 / 2286 / 636
Регистрация: 23.09.2014
Сообщений: 7,061
Записей в блоге: 2
05.10.2020, 15:49 11
мама Стифлера, спасибо а то у меня было ощущение что что-то тут не так,
вы помогли чётко сформулировать что именно тут не так
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
#include <string>
#include <iostream>
 
using namespace std;
int main()
{   setlocale(0, "");
    while (true)
    {   int y; cout << "Введите год : "; cin >> y;
        if (y <= 0) break;
        int k = y % 12;
        
        const char* const m[] =
        {   
            "Обезьяны",
            "Петуха"  ,
            "Собаки"  ,
            "Свиньи"  ,
            "Крысы"   ,
            "Быка"    ,
            "Тигра"   ,
            "Кролика" ,
            "Дракона" ,
            "Змеи"    ,
            "Лошади"  ,
            "Козы" 
        };
        
        cout << "Год " << m[k] << '\n';
    }
    return 0;
}
1
из племени тумба-юбма
2467 / 1790 / 417
Регистрация: 29.11.2015
Сообщений: 8,690
Записей в блоге: 15
05.10.2020, 16:59 12
вы полностью пересортировали названия
но можно было вместо k = abs(2000-y) % 12; написать так
C++
1
k = y > 1999 ? abs(2000-y) % 12 : 12 - abs(2000-y) % 12;
1
Just Do It!
3840 / 2286 / 636
Регистрация: 23.09.2014
Сообщений: 7,061
Записей в блоге: 2
05.10.2020, 17:42 13
Цитата Сообщение от мама Стифлера Посмотреть сообщение
вы полностью пересортировали названия
если вы про порядок в списке, то так:
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
#include <string>
#include <iostream>
 
int main()
{   setlocale(0, "");
    while (true)
    {   int y; std::cout << "Введите год : "; std::cin >> y;
        if (y <= 0) break;
        int k = (y+4) % 12;
        
        const char* const m[] =
        {   "Дракона" ,
            "Змеи"    ,
            "Лошади"  ,
            "Козы"    ,
            "Обезьяны",
            "Петуха"  ,
            "Собаки"  ,
            "Свиньи"  ,
            "Крысы"   ,
            "Быка"    ,
            "Тигра"   ,
            "Кролика"
        };
        
        std::cout << "Год " << m[k] << '\n';
    }
    return 0;
}
или хз в каком смысле,
но городить городушки - зачем?


Добавлено через 5 минут
кстати:
Цитата Сообщение от мама Стифлера Посмотреть сообщение
Ну программа по крайней мере работает исправно, перебирая все года, значит ошибка у вас, именно в названии года.
там обезьяны нету.
1
05.10.2020, 17:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.10.2020, 17:42
Помогаю со студенческими работами здесь

По введенному году определить знак по китайскому календарю
Как с помощью языка VBA написать программу, которая по введенному году определила бы твой знак по...

По году рождения определить, в год какого животного по восточному календарю родился человек
2.Составит программу определяющую по введенному году рождения в год какого животного по восточному...

Программа, которая бы позволяла по заданному году и порядковому номеру дня в году определять день недели
Ребята, помогите доработать код=) день недели выводится не правильно, примерно после 50 года=(...

Определение принадлежности животного к определенному виду
Задание звучит так: &quot;определение принадлежности животного к определенному виду, типу, семейству&quot;....

По заданному году и порядковому номеру дня в году определять день недели и месяц этого дня
Задачу не можем решить 3 людьми. ______________________________ Написать программу, которая бы...

По заданному числу (1 - 12) вывести название соответствующего ему месяца
Помогите пожалуйста! составить программу, которая по данному числу (1-12) выводит название...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru