Загрузка данных


Обработка заняла 4s

Да. Я сверил именно твою практическую №2 и лекцию 4.  

Сделаю максимально простым способом: обычные a, b, c, if, else if, while, do while, for, break, continue, без лишних наворотов. Без комментариев, как ты просил.

Но в заданиях 3 и 5 в условии есть данные, которых нет: цены напитков и способ случайного загадывания числа. Поэтому я не буду притворяться, что это есть в лекции — для 3-го поставлю простые цены, а в 5-м возьмём число 7, чтобы код оставался на уровне пройденного материала.

1

#include <iostream>
using namespace std;

int main() {
    int a, b;

    do {
        cin >> a;

        if (a == 0)
            break;

        cin >> b;

        if (a < 5)
            cout << "Вход запрещен: слишком маленький возраст" << endl;
        else if (a <= 12 && b == 2)
            cout << "Вход разрешен: детский билет" << endl;
        else if (a <= 49 && (b == 1 || b == 4))
            cout << "Вход разрешен" << endl;
        else if (a <= 64 && b != 2)
            cout << "Вход разрешен" << endl;
        else if (a >= 65 && (b == 3 || b == 4))
            cout << "Вход разрешен" << endl;
        else
            cout << "Вход запрещен" << endl;

    } while (a != 0);

    return 0;
}

Ввод, например:

20 1
60 2
0

Вывод:

Вход разрешен
Вход запрещен


---

2

#include <iostream>
using namespace std;

int main() {
    int a, b, c;

    do {
        cin >> a;

        if (a == -1)
            break;

        cin >> b >> c;

        a = a + b * 3;

        if (c == 1)
            a = a + 15;

        if (a > 100)
            a = 100;

        if (a >= 90)
            cout << "Отлично" << endl;
        else if (a >= 75)
            cout << "Хорошо" << endl;
        else if (a >= 60)
            cout << "Удовлетворительно" << endl;
        else
            cout << "Неудовлетворительно" << endl;

    } while (a != -1);

    return 0;
}

Здесь:

a — основной балл

b — количество дополнительных заданий

c — бонус: 1 есть, 0 нет

-1 — выход.


Например:

80 2 1
-1

Считается:

80 + 2 * 3 + 15 = 101

Но максимум 100, поэтому:

Отлично


---

3

Здесь сделаем совсем простой вариант через switch, потому что switch есть в лекции и он как раз удобен для выбора напитка. 

Цены возьмём:

эспрессо — 100

капучино — 150

латте — 140

чай — 80

горячий шоколад — 130


#include <iostream>
using namespace std;

int main() {
    int a, c;
    char b;
    double d;

    do {
        cin >> a;

        if (a == 0)
            break;

        switch (a) {
            case 1:
                cout << "Эспрессо" << endl;
                d = 100;
                break;
            case 2:
                cout << "Капучино" << endl;
                d = 150;
                break;
            case 3:
                cout << "Латте" << endl;
                d = 140;
                break;
            case 4:
                cout << "Чай" << endl;
                d = 80;
                break;
            case 5:
                cout << "Горячий шоколад" << endl;
                d = 130;
                break;
            default:
                cout << "Ошибка" << endl;
                continue;
        }

        cin >> b;

        if (b == 'M')
            d = d * 1.3;
        else if (b == 'L')
            d = d * 1.5;
        else if (b != 'S') {
            cout << "Ошибка" << endl;
            continue;
        }

        cin >> c;

        if (c == 1)
            cout << "Без добавок" << endl;
        else if (c == 2) {
            cout << "Молоко" << endl;
            d = d + 10;
        }
        else if (c == 3) {
            cout << "Сироп" << endl;
            d = d + 15;
        }
        else if (c == 4) {
            cout << "Сливки" << endl;
            d = d + 20;
        }
        else {
            cout << "Ошибка" << endl;
            continue;
        }

        cout << "Размер: " << b << endl;
        cout << "Цена: " << d << endl;

    } while (a != 0);

    return 0;
}

Например:

2
M
3
0

Получится:

Капучино
Сироп
Размер: M
Цена: 210


---

4

Тут for нужен прямо по условию. 

#include <iostream>
using namespace std;

int main() {
    int a, b;
    double c, d = 0, e;

    cin >> a;

    for (b = 0; b < a; b++) {
        cin >> c;
        d = d + c;
    }

    e = d;

    if (d > 5000)
        d = d * 0.9;

    cin >> b;

    if (b == 1)
        d = d * 0.95;

    cout << e << endl;
    cout << e - d << endl;
    cout << d << endl;

    cin >> c;

    cout << c - d;

    return 0;
}

Ввод:

3
2000
2000
2000
1
7000

Здесь:

3 — 3 товара

2000 2000 2000 — цены

1 — есть карта

7000 — сколько дал клиент.


Вывод примерно:

6000
840
5160
1840

То есть:

6000     ← без скидок
840      ← скидка
5160     ← к оплате
1840     ← сдача


---

5

В лекции 4 есть while, if, else if, break, continue, но случайных чисел там нет, поэтому rand() сюда не добавляю. 

Берём загаданное число 7.

#include <iostream>
using namespace std;

int main() {
    int a, b = 7, c = 0;

    while (true) {
        cin >> a;

        if (a < 1 || a > 20) {
            cout << "Ошибка! Введите число от 1 до 20." << endl;
            continue;
        }

        c++;

        if (a > b)
            cout << "Слишком много! Попробуйте ещё." << endl;
        else if (a < b)
            cout << "Слишком мало! Попробуйте ещё." << endl;
        else {
            cout << "Поздравляем, вы угадали!" << endl;
            cout << "Попыток: " << c << endl;
            break;
        }
    }

    return 0;
}

Например ввод:

10
5
7

Вывод:

Слишком много! Попробуйте ещё.
Слишком мало! Попробуйте ещё.
Поздравляем, вы угадали!
Попыток: 3

Что я специально НЕ использовал

Чтобы это не выглядело как код от человека, который уже изучил половину C++:

vector

sort

rand

функции кроме main

тернарный оператор ?:

auto

сложные конструкции

классы

всякие короткие «умные» записи.


То есть основа здесь ровно та, что у вас есть в лекции: if, else if, else, switch, while, do while, for, break, continue.