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

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

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

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

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

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

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

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

  1. #include
    using namespace std;
    int main()
    {
    setlocale(0, "");
    int a = 0;
    int b = 0;
    int z = 0;
    int s = 0;
    cout << "Проверим ваше знание таблицы умножения\n";
    cin >> a;
    cin >> b;
    s = a*b;
    cin >> z;
    (s == z)?cout << "Ответ верен.\n":cout << "Ответ не верен. Правильный ответ :" << s << "\n";
    }

    1. #include
      using namespace std;

      int main()
      {
      int a, b, c, rez = 0;
      cout<<a;
      cout<<b;
      cout<<rez;
      c = a*b;
      if(rez == c)
      {
      cout<<"Good!";
      }
      else cout<<"Ahahah, no! a*b="<<c;

      return 0;
      }

  2. #include
    using namespace std;

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

    int a = 0;
    int b = 0;
    int s = 0;
    int z = 0;
    cout << "Проверим, как вы знаете таблицу умножения\n";
    cout <> a;
    cout <> b;
    s = a*b;
    cout <> z;
    if (s==z) cout << "Ваш результат верен \n";
    else cout << "Ваш результат неверен. Правильно - "<< s << "\n";
    system ("pause");
    return 0;
    }

  3. #include
    using namespace std;
    void main()
    {
    setlocale(0,"");
    int a,b,c;
    cout<<"Здравствуй, дорогой друг! Сейчас мы проверим твои знания таблицы умножения."<<endl<>a;
    if(a9)
    cout<<"Первый множитель не соответствует указанному диапозону(1-9)"<<endl;
    else
    {
    cout<>b;
    if(b9)
    cout<<"Второй множитель не соответствует указанному диапозону(1-9)"<<endl;
    else
    {
    cout<<"Теперь введи произведение этих множителей: "<>c;
    if(a*b==c)
    cout<<"Правильно!"<<endl;
    else
    {
    cout<<"Неверно!"<<endl<<"Произведение "<<a<<" и "<<b<<" равно "<<a*b<<"."<<endl;
    }

    }
    }
    }

  4. Можно объяснить зачем в первом задании мы используем остаток от деления?
    На что он влияет?

    1. Даниил, не могу сказать что он на что-то влияет. В данном примере именно остаток от деления на 10 дает возможность из числа (например 3 456) “вытащить” необходимую цифру (разбить число на разряды). Допустим надо из целого четырехзначного числа 3 456 взять второе. Для этого сразу мы его поделим на 100: 3 456 / 100 = 34 (56 сотых отбрасываются т.к. это число типа int). Далее берем остаток от деления на 10: 34 % 10 = 4.
      Возможно тебе надо почитать еще немного об арифметических операциях, чтобы разобраться https://purecodecpp.com/archives/404

      1. а чем хуже без остатка от деления? больше ресурсозатратно? вроде строчек приблизительно одинаково. Или я не в ту степь думаю? спасибо заранее за ответ! Задача прикольная
        #include
        using namespace std;
        int main()
        {
        setlocale(0, "");
        int suma;
        vvedenie:
        cout <> suma;
        int tysacha = suma / 1000;
        int sotnya = (suma-tysacha*1000)/100;
        int desyatki = (suma-tysacha*1000-sotnya*100)/10;
        int edenici = suma - tysacha * 1000 - sotnya * 100 - desyatki * 10;
        // пишем сотни
        //пишем сотни
        if (tysacha > 10)
        {
        cout << "введите сумму до 10 000 ";
        goto vvedenie;
        }
        if (tysacha == 0)
        {
        cout << "";
        }
        if (tysacha == 1)
        {
        cout << "одна тысяча ";
        }
        if (tysacha == 2)
        {
        cout << "две тысячи ";
        }
        if (tysacha == 3)
        {
        cout << "три тысячи ";
        }
        if (tysacha == 4)
        {
        cout << "четыре тысячи ";
        }
        if (tysacha == 5)
        {
        cout << "пять тысяч ";
        }
        if (tysacha == 6)
        {
        cout << "шесть тысяч ";
        }
        if (tysacha == 7)
        {
        cout << "семь тысяч ";
        }
        if (tysacha == 8)
        {
        cout << "восемь тысяч ";
        }
        if (tysacha == 9)
        {
        cout << "девять тысяч ";
        }
        // пишем сотни
        //пишем сотни
        if (sotnya == 0)
        {
        cout << "";
        }
        if (sotnya == 1)
        {
        cout << "сто ";
        }
        if (sotnya == 2)
        {
        cout << "двесте ";
        }
        if (sotnya == 3)
        {
        cout << "тристо ";
        }
        if (sotnya == 4)
        {
        cout << "четыресто ";
        }
        if (sotnya == 5)
        {
        cout << "пятсот ";
        }
        if (sotnya == 6)
        {
        cout << "шестьсот ";
        }
        if (sotnya == 7)
        {
        cout << "семсот ";
        }
        if (sotnya == 8)
        {
        cout << "восемсот ";
        }
        if (sotnya == 9)
        {
        cout << "девятсот ";
        }
        // пишем десятки
        //пишем десятки
        if (desyatki == 0)
        {
        cout << "";
        }
        if (desyatki == 1)
        {
        if (edenici == 0)
        {
        cout << "десять гривен";
        }
        if (edenici == 1)
        {
        cout << "одинадцать гривен";
        }
        if (edenici == 2)
        {
        cout << "двенадцать гривен";
        }
        if (edenici == 3)
        {
        cout << "тринадцать гривен";
        }
        if (edenici == 4)
        {
        cout << "четырнадцать гривен";
        }
        if (edenici == 5)
        {
        cout << "пятнадцать гривен";
        }
        if (edenici == 6)
        {
        cout << "шестнадцать гривен";
        }
        if (edenici == 7)
        {
        cout << "семнадцать гривен";
        }
        if (edenici == 8)
        {
        cout << "восемнадцать гривен";
        }
        if (edenici == 9)
        {
        cout << "девятнадцать гривен";
        }
        goto kapec;
        }
        if (desyatki == 2)
        {
        cout << "двадцать ";
        }
        if (desyatki == 3)
        {
        cout << "тридцать ";
        }
        if (desyatki == 4)
        {
        cout << "сорок ";
        }
        if (desyatki == 5)
        {
        cout << "пятьдесят ";
        }
        if (desyatki == 6)
        {
        cout << "шестьдесят ";
        }
        if (desyatki == 7)
        {
        cout << "семдесят ";
        }
        if (desyatki == 8)
        {
        cout << "восемдесят ";
        }
        if (desyatki == 9)
        {
        cout << "девяносто ";
        }
        // пишем еденицы
        //пишем еденицы
        if (edenici == 0)
        {
        cout << " гривен";
        }
        if (edenici == 1)
        {
        cout << "одна гривна";
        }
        if (edenici == 2)
        {
        cout << "две гривны";
        }
        if (edenici == 3)
        {
        cout << "три гривны";
        }
        if (edenici == 4)
        {
        cout << "четыре гривны";
        }
        if (edenici == 5)
        {
        cout << "пять гривен";
        }
        if (edenici == 6)
        {
        cout << "шесть гривен";
        }
        if (edenici == 7)
        {
        cout << "семь гривен";
        }
        if (edenici == 8)
        {
        cout << "восемь гривен";
        }
        if (edenici == 9)
        {
        cout << "девять гривен";
        }
        kapec:
        cout << '\n';

        system("pause");
        return 0;
        }

      2. для такой простой задачи совершенно не принципиально с остатком от деления или без. Все арифметические операции компилятор обрабатывает очень быстро

  5. #include
    using namespace std;

    int main()
    {
    setlocale(LC_ALL, "rus");
    int a= 0;
    int b= 0;
    int c= 0;
    int Proizvedenie= 0;
    cout <<"\nПроверим знание таблицы умножения\n";
    cout << a ;
    cout << b;
    cout << Proizvedenie;
    c = a*b;
    if (c == Proizvedenie)
    cout << "Ответ верен";
    else
    cout << "Ответ НЕверен";
    return 0;
    }

  6. Вот мой вариант по заданию с пальцами:

    #include
    #include

    int main()

    {
    int NumberFinger;
    std::string BigFin="Большой палец."; //большой палец
    std::string PointFin="Указательный палец."; //указательный палец
    std::string AverageFin="Средний палец."; //средний палец
    std::string NamelessFin="Безымянный палец."; //Безымянный палец
    std::string PinkyFin="Мезинец."; //Мезинец

    std::string bug="НЕКОРРЕКТНО ВВЕДЕНЫ ДАННЫЕ!!!"; //на случай неверного ввода со стороны пользователя
    int Hand; //левая и правая рука
    // Выбираем левую руку через 2, правую через 1
    std::cout<>Hand;
    std::cout<<'\n';

    if (Hand==1)
    {
    std::cout<<"Правая рука: "<<'\n';

    std::cout<>NumberFinger;
    std::cout<<'\n';

    switch(NumberFinger)
    {

    case 1: std::cout<<BigFin<<'\n'; break;
    case 2: std::cout<<PointFin<<'\n';break;
    case 3: std::cout<<AverageFin<<'\n';break;
    case 4: std::cout<<NamelessFin<<'\n';break;
    case 5: std::cout<<PinkyFin<<'\n';break;
    default : std::cout<<bug<<'\n';break;

    }
    }
    else if(Hand==2)
    {

    std::cout<<"Левая рука: "<<'\n';

    std::cout<>NumberFinger;
    std::cout<<'\n';
    switch(NumberFinger)
    {

    case 1: std::cout<<BigFin<<'\n'; break;
    case 2: std::cout<<PointFin<<'\n';break;
    case 3: std::cout<<AverageFin<<'\n';break;
    case 4: std::cout<<NamelessFin<<'\n';break;
    case 5: std::cout<<PinkyFin<<'\n';break;
    default : std::cout<<bug<<'\n';break;

    }
    }
    else {
    std::cout<<bug<<'\n';
    }
    }

  7. привет! немного изменил условие 1 задачи поскольку мой dev c++ не дружит с русским. вот такой получился “английский” вариант))

    #include
    #include
    #include
    using namespace std;

    void f_convers_1(char *newName, int num); // для перевода тысяч, сотен и единиц
    void f_convers_2(char *newName, int num); // для перевода десятков
    void f_convers_3(char *newName, int num); // для перевода 11-19

    int main(){
    int amount; // сума выдачи в банкомате
    int thtu[4]={0,0,0,0}; // масив с поразрядными значениями
    char thousands[30], hundreds[20], tens[20], units[10]; // строки для вывода на экран

    cout <>amount;

    for(int i=3; i>=0; i--) { // размещаем поразрядные значения суммы
    thtu[i]=(amount%10); // в виде элементов массива thtu
    amount/=10;
    }
    // передаем значение "тысячи" и указатель на
    // масив thousands функции f_convers_1
    if(thtu[0] != 0) {
    f_convers_1(thousands, thtu[0]);
    strcat(thousands, " thousand "); // к результату прибавляем thousand
    }else strcpy (thousands, "");
    // передаем значение "сотни" и указатель на
    // масив hundreds функции f_convers_1
    if(thtu[1] != 0) {
    f_convers_1(hundreds, thtu[1]);
    strcat(hundreds, " hundred "); // к результату прибавляем hundreds
    }else strcpy (hundreds, "");
    // передаем значение "десятка" и указатель на
    // масив tens функции f_convers_2
    if(thtu[2] != 0 && thtu[2] != 1) {
    f_convers_2(tens, thtu[2]);
    }
    else if(thtu[2] == 1) { // если десятичн. зн-е находится в диапазоне
    f_convers_3(tens, thtu[3]); // 10-19, передаем его функции
    thtu[3]=0; // f_convers_3, при єтом обнуляем
    } // последний елемент масива thtu
    else strcpy (tens, "");

    // передаем значение "единицы" и указатель на
    if(thtu[3] != 0) { // масив units функции f_convers_1
    f_convers_1(units, thtu[3]);
    }else strcpy (units, "");

    cout <<"You enter:\n\n"; // выводим результат на экран
    cout <<thousands <<hundreds <<tens <<' ' <<units <<" dollars.\n\n\n";

    system("pause");
    return 0;
    }
    void f_convers_1(char *newName, int num) {
    if(num == 1) strcpy(newName, "one");
    else if(num == 2) strcpy(newName, "two");
    else if(num == 3) strcpy(newName, "three");
    else if(num == 4) strcpy(newName, "four");
    else if(num == 5) strcpy(newName, "five");
    else if(num == 6) strcpy(newName, "six");
    else if(num == 7) strcpy(newName, "seven");
    else if(num == 8) strcpy(newName, "eight");
    else strcpy(newName, "nine");
    }
    void f_convers_2(char *newName, int num) {
    if(num == 2) strcpy(newName, "twenty");
    else if(num == 3) strcpy(newName, "thirty");
    else if(num == 4) strcpy(newName, "forty");
    else if(num == 5) strcpy(newName, "fifty");
    else if(num == 6) strcpy(newName, "sixty");
    else if(num == 7) strcpy(newName, "seventy");
    else if(num == 8) strcpy(newName, "eighty");
    else strcpy(newName, "ninety");
    }
    void f_convers_3(char *newName, int num) {
    if(num == 0) strcpy(newName, "ten");
    else if(num == 1) strcpy(newName, "elewen");
    else if(num == 2) strcpy(newName, "twelve");
    else if(num == 3) strcpy(newName, "thirteen");
    else if(num == 4) strcpy(newName, "fourteen");
    else if(num == 5) strcpy(newName, "fifteen");
    else if(num == 6) strcpy(newName, "sixteen");
    else if(num == 7) strcpy(newName, "seventeen");
    else if(num == 8) strcpy(newName, "eighteen");
    else strcpy(newName, "nineteen");
    }

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

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