Основи програмування на С ++ для початківців

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

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

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

2.  Користувач вводить порядковий номер пальця руки. Необхідно показати його назву на екран.

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

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

369 думки про "Завдання: операторы выбора 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");
    }

залишити коментар

Ваша електронна адреса не буде опублікований. Обов'язкові поля позначені * *