Основы программирования на С++ для начинающих

Задачи: операторы выбора if и else в С++

После прочтения урока об операторах выбора if и else, переходим к практике. Как обычно, прошу вас постараться решать все задания самостоятельно, и только потом смотреть на предложенное нами решение.

1. Первая задача интересная и достаточно простая. Но код получится длинным. Эту задачу придумали наши преподаватели из компьютерной академии. Идея была такая – как бы заставить начинающих студентов  помучиться с написанием кода, чтобы писанины было побольше )))  Задание: Пользователь вводит число от 1 до 9999 (сумму выдачи в банкомате). Необходимо вывести на экран словами введенную сумму и в конце написать название валюты с правильным окончанием. Например: 7431 – семь тысяч четыреста тридцать один доллар, 2149 – две тысячи сто сорок девять долларов, 15 – пятнадцать долларов, 3 – три доллара. Для решения этой задачи вам необходимо будет применять оператор % (остаток от деления). Почитать о нем можно в статье Арифметические операции в C++  . Приступайте!

2.  Пользователь вводит порядковый номер пальца руки. Необходимо показать его название на экран.

 3. Еще одна задача для самостоятельно решения.  Необходимо написать программу, которая проверяет пользователя на знание таблицы умножения. Пользователь сам вводит два целых однозначных числа. Программа задаёт вопрос: результат умножения первого числа на второе.  Пользователь должен ввести ответ и увидеть на экране правильно он ответил или нет. Если нет  – показать еще и правильный результат.

Кто не справляется – задавайте вопросы в комментариях.

369 thoughts on “Задачи: операторы выбора if и else в С++

  1. Я так сделал второй, а вот с первым не сложилось…
    #include
    using namespace std;
    void main()
    {
    int i =0;
    cout <> i;
    switch (i)
    {
    case 1:
    cout << "thumb\n";
    break;
    case 2:
    cout << "forefinger\n";
    break;
    case 3:
    cout << "long finger\n";
    break;
    case 4:
    cout << "ring finger\n";
    break;
    case 5:
    cout << "little finger\n";
    break;
    default:
    cout << "Error\n";
    break;

    }
    }

  2. Последние задание
    #include
    using namespace std;
    void main()
    {
    setlocale(LC_ALL, "Rus");
    int i = 0, j = 0, rezult = 0, sum = 0;
    cout <> i >> j;
    sum = i * j;
    cout <> rezult;
    if (sum == rezult)
    cout << "Поздравляем ответ правильный!\n";
    else
    cout << "\nУчите таблицу умножения!!!\n";

    }

  3. Мой вариант вычленения цифр из числа, вводимого юзером в первой задаче. Никакого деления, никаких остатков.

    int summ;
    cout <> summ;
    int num[6]{0, 0, 0, 0, 0, 0};
    int minus[6]{100000, 10000, 1000, 100, 10, 1};
    summ++;
    for (int i = 0; i 0)
    {
    summ = summ - minus[i];
    num[i]++;
    }
    if (num[i] > 0)
    {
    num[i]--;
    summ = summ + minus[i];
    }
    }

    Фразы забивал также через массивы:

    string hungreds[9]{"Сто ", "Двести ", "Триста ", "Четыреста ", "Пятьсот ", "Шестьсот ", "Семьсот ", "Восемьсот ", "Девятьсот "};
    string second_ten[9]{"одиннадцать ", "двенадцать ", "тринадцать ", "четырнадцать ", "пятнадцать ", "шестнадцать ", "семнадцать ", "восемнадцать ", "девятнадцать "};
    string tens[9]{"десять ", "двадцать ", "тридцать ", "сорок ", "пятьдесят ", "шестьдесят ", "семьдесят ", "восемьдесят ", "девяносто "};
    string nums[9]{"одна ", "две ", "три ", "четыре ", "пять ", "шесть ", "семь ", "восемь ", "девять "};
    string numss[9]{"один ", "два ", "три ", "четыре ", "пять ", "шесть ", "семь ", "восемь ", "девять "};
    if (num[0] != 0 || num[1] != 0 || num[2] != 0)
    {
    if (num[0] != 0)
    cout << hungreds[num[0] - 1];
    if (num[1] == 1 && num[2] != 0)
    cout << second_ten[num[2] - 1];
    else
    {
    if (num[1] != 0)
    cout << tens[num[1] - 1];
    if (num[2] != 0)
    cout << nums[num[2] - 1];
    }
    if (num[2] == 1 && num[1] != 1)
    cout << "тысяча ";
    else if ((num[2] == 2 || num[2] == 3 || num[2] == 4) && num[1] != 1)
    cout << "тысячи ";
    else cout << "тысяч ";
    }
    if (num[3] != 0)
    cout << hungreds[num[3] - 1];
    if (num[4] == 1 && num[5] != 0)
    cout << second_ten[num[5] - 1];
    else
    {
    if (num[4] != 0)
    cout << tens[num[4] - 1];
    if (num[5] != 0)
    cout << numss[num[5] - 1];
    }
    if (num[5] == 1 && num[4] != 1)
    cout << "рубль." << endl;
    else if ((num[5] == 2 || num[5] == 3 || num[5] == 4) && num[4] != 1)
    cout << "рубля." << endl;
    else cout << "рублей." << endl;

  4. #include
    #include
    using namespace std;

    int main()
    {
    setlocale(LC_ALL, "rus");
    int object = 0 ;
    int o1000 = 0 ;
    int o100 = 0 ;
    int o10 = 0 ;
    int o1 = 0 ;
    int isc = 0; //исключения(одиннадцать, пятнадцать и т.д.)
    cout <> object;

    o1000 = object / 1000;
    o100 = (object / 100) % 10;
    o10 = (object / 10) % 10;
    o1 = object % 10;
    isc = object % 100;

    if (o1000 == 1)
    cout << " Тысяча ";

    if (o1000 == 2)
    cout << " Две тысячи";

    if (o1000 == 3)
    cout << " Три тысячи ";

    if (o1000 == 4)
    cout << " Четыре тысячи ";

    if (o1000 == 5)
    cout << " Пять тысяч ";

    if (o1000 == 6)
    cout << " Шесть тысяч ";

    if (o1000 == 7)
    cout << " Семь тысяч ";

    if (o1000 == 8)
    cout << " Восемь тысяч ";

    if (o1000 == 9)
    cout << " Девять тысяч ";

    if (o100 == 1)
    cout << " сто ";

    if (o100 == 2)
    cout << " двести ";

    if (o100 == 3)
    cout << " триста ";

    if (o100 == 4)
    cout << " четыриста ";

    if (o100 == 5)
    cout << " пятьсот ";

    if (o100 == 6)
    cout << " шестьсот ";

    if (o100 == 7)
    cout << " семьсот ";

    if (o100 == 8)
    cout << " восемьсот ";

    if (o100 == 9)
    cout << " девятьсот ";

    if (isc == 11)
    cout << " одиннадцать рублей. \n";

    if (isc == 12)
    cout << " двенадцать рублей. \n";

    if (isc == 13)
    cout << " тринадцать рублей. \n";

    if (isc == 14)
    cout << " четырнадцать рублей. \n ";

    if (isc == 15)
    cout << " пятнадцать рублей. \n";

    if (isc == 16)
    cout << " шестнадцать рублей. \n";

    if (isc == 17)
    cout << " семнадцать рублей. \n";

    if (isc == 18)
    cout << " восемнадцать рублей. \n";

    if (isc == 19)
    cout << " девятнадцать рублей. \n";

    if (o10 == 1)
    cout << " десять рублей. \n ";

    if (o10 == 2)
    cout << " двадцать ";

    if (o10 == 3)
    cout << " тридцать ";

    if (o10 == 4)
    cout << " сорок ";

    if (o10 == 5)
    cout << " пятьдесят ";

    if (o10 == 6)
    cout << " шестьдесят ";

    if (o10 == 7)
    cout << " семьдесят ";

    if (o10 == 8)
    cout << " восемьдесят ";

    if (o10 == 9)
    cout << " девяносто ";

    if ((o1 == 1) && (o10 != 1))
    cout << " один рубль \n ";

    if ((o1 == 2) && (o10 != 1))
    cout << " два рубля. \n ";

    if ((o1 == 3) && (o10 != 1))
    cout << " три рубля. \n ";

    if ((o1 == 4) && (o10 != 1))
    cout << " четыре рубля. \n ";

    if ((o1 == 5) && (o10 != 1))
    cout << " пять рублей. \n ";

    if ((o1 == 6) && (o10 != 1))
    cout << " шесть рублей. \n ";

    if ((o1 == 7) && (o10 != 1))
    cout << " семь рублей. \n ";

    if ((o1 == 8) && (o10 != 1))
    cout << " восемь рублей. \n";

    if ((o1 == 9) && (o10 != 1))
    cout << " девять рублей. \n ";

    if ((o1 == 0) && (o10 != 1))
    cout << " рублей. \n ";

    _getch();
    return 0;

    }

    вот так как-то

  5. Задача №3.
    Правда не получилось задать условия на переменные а и b.
    #include
    using namespace std;

    int main()
    {
    setlocale(0, "");
    int a, b, p, np = 0;

    cout << "\t\t\tПроверка таблицы умножения\nВы должны задать 2 числа и написать сумму произведения этих чисел\n\n\n";
    cout << a;
    cout << b;
    cout << "Введите ответ на уравнение: " << a << " * " << b << np;

    cout << endl;
    p = a * b;

    if ((a,b) <=9)
    {
    if (p != np) cout << "НЕ ПРАВИЛЬНО!\nСоветую выучить таблицу умножения!!!\n\n";
    else if (p == np) cout << "ПРАВИЛЬНО!\n\n";
    }
    else cout << "Неверное число!";
    return 0;
    }

  6. Доброго времени суток! Вот мой вариант решения задания №1. Правда там не все через оператор if сделано. Если будут какие-то недочеты или пожелания, отпишитесь, пожалуйста.

    #include
    #include
    #include

    using namespace std;

    int main()
    {
    setlocale(LC_ALL, “rus”);

    int full_num , first_num , second_num , third_num , fourth_num , currency_num, cntrl = 0;

    cout << "Введите ваше число: " <> full_num;
    cout << "Выберите валюту для вывода: " << endl;
    cout << "1. Доллары" << endl;
    cout << "2. Евро" << endl;
    cout << "3. Гривны" <> currency_num;
    cout << endl;
    fourth_num = full_num % 10;
    full_num /= 10;
    third_num = full_num % 10;
    full_num /= 10;
    second_num = full_num % 10;
    full_num /= 10;
    first_num = full_num;

    switch (first_num)
    {
    case 0: {cout << "\0";break;}
    case 1: {cout << "Одна тысяча ";break;}
    case 2: {cout << "Две тысячи ";break;}
    case 3: {cout << "Три тысячи ";break;}
    case 4: {cout << "Четыре тысячи ";break;}
    case 5: {cout << "Пять тысяч ";break;}
    case 6: {cout << "Шесть тысяч ";break;}
    case 7: {cout << "Семь тысяч ";break;}
    case 8: {cout << "Восемь тысяч ";break;}
    case 9: {cout << "Девять тысяч ";break;}
    }

    switch (second_num)
    {
    case 0 : {cout << "\0"; break;}
    case 1 : {cout << "сто "; break;}
    case 2: {cout << "двести "; break;}
    case 3: {cout << "стриста "; break;}
    case 4: {cout << "четыреста "; break;}
    case 5: {cout << "пятсот "; break;}
    case 6: {cout << "шестьсот "; break;}
    case 7: {cout << "семьсот "; break;}
    case 8: {cout << "восемьсот "; break;}
    case 9: {cout << "девятсот "; break;}
    }

    switch (third_num)
    {
    case 0 : {cout << "\0"; break;}
    case 1 : {if (fourth_num == 0) cout << "десять "; else cout << "\0"; break;}
    case 2 : {cout << "двадцать "; break;}
    case 3 : {cout << "тридцать "; break;}
    case 4 : {cout << "сорок "; break;}
    case 5 : {cout << "пятьдесят "; break;}
    case 6 : {cout << "шестьдесять "; break;}
    case 7 : {cout << "семьдесят "; break;}
    case 8 : {cout << "восемьдесят "; break;}
    case 9 : {cout < 1) && fourth_num != 0)
    {
    switch (fourth_num)
    {
    case 1 : {cout << "один "; break;}
    case 2 : {cout << "два "; break;}
    case 3 : {cout << "три "; break;}
    case 4 : {cout << "четыре "; break;}
    case 5 : {cout << "пять "; break;}
    case 6 : {cout << "шесть "; break;}
    case 7 : {cout << "семь "; break;}
    case 8 : {cout << "восемь "; break;}
    case 9 : {cout << "девять "; break;}
    }
    }
    else if (third_num == 1 && fourth_num != 0)
    {
    switch (fourth_num)
    {
    case 1: {cout << "одиннадцать "; break;}
    case 2: {cout << "двенадцать "; break;}
    case 3: {cout << "тринадцать "; break;}
    case 4: {cout << "четырнадцать "; break;}
    case 5: {cout << "пятнадцать "; break;}
    case 6: {cout << "шестнадцат "; break;}
    case 7: {cout << "семнадцать "; break;}
    case 8: {cout << "восемнадцать "; break;}
    case 9: {cout << "девятнадцать "; break;}
    }
    }

    if (currency_num == 1)
    {
    if (fourth_num == 1 && third_num != 1) cout << "доллар" << endl;
    else if (((fourth_num == 2 || fourth_num == 4) || fourth_num == 3) && third_num != 1) cout << "доллара" << endl;
    else cout << "долларов" << endl;
    }
    else if (currency_num == 2) cout << "евро" << endl;
    else
    {
    if (fourth_num == 1 && third_num != 1) cout << "гривна" << endl;
    else if ((((fourth_num == 2 || fourth_num == 4) || fourth_num == 3) && third_num != 1) && cntrl != 1) cout << "гривны" << endl;
    else cout << "гривен" << endl;
    }
    return 0;
    }

    1. Рекомендую вывести все switch() в функцию Параметрами функции сделать суффикс, номер по порядку и преффикс, которые будут приписываться к корню слова по необходимости в зависимости от разрядности числа. Тогда получится один switch() вместо 4-х

  7. Про функцию рекомендации понятны. Но дело в том, что я пытался написать программу используя только операторы выбора. А если делать уже совсем “красиво”, то можно и с помощью функций и циклов. Тогда код в разы сократиться.

  8. Думаю мне ни кто не ответит, но все же задам вопросик :)
    Почему не фурычит решение 3-ей задачи ? Уже все несколько раз перепроверял:
    #include
    using namespace std;
    int main() {
    setlocale(LC_ALL, “rus”);
    int a = 0, b = 0, c = 0, d = 0;
    cout <> a;
    cin >> b;
    c = a * b;
    cout <> d;
    if (c = d) {
    cout << "Ответ верный\n";
    }
    else
    cout << "Ответ не верный. Правильным ответом является: \n" << c;
    system("PAUSE");
    return 0;
    }
    Как-то так.

    1. Ошибок много )))
      #include
      using namespace std;

      int main() {
      setlocale(LC_ALL, "rus");

      int a = 0, b = 0, c = 0, d = 0;
      cout < < a; // почему cout а не cin ? cin >> b;
      c = a * b;
      cout < < d; // почему cout а не cin ? if (c = d) { // почему = а не == ? (тут ты присвоил переменной с значение d) cout << "Ответ верный\n"; } else cout << "Ответ не верный. Правильным ответом является: \n" << c; system("PAUSE"); return 0; }

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *