Практика в С++. Часть №8

  Юрий  | 

  Обновл. 12 Янв 2020  | 

 2596

 ǀ   42 

Здесь размещены задания по С++, которые вы можете выполнить. Каждое задание имеет свой уровень сложности, готовых ответов не будет, поэтому welcome в комментарии.

Easy: Задание №1

Напишите программу, которая при вводе пользователем числа из диапазона от 1 до 99, добавляет к нему слово копейка в правильной форме.

Пример выполнения программы:

Введите число из диапазона от 1 до 99: 25
25 копеек
Введите число из диапазона от 1 до 99: 4
4 копейки

Medium: Задание №2


Пользователь вводит натуральное четырёхзначное число. Выяснить, является ли оно
палиндромом (читается одинаково как слева направо, так и справа налево).

Пример выполнения программы:

Введите число: 4884
4884 является палиндромом

Hard: Задание №3

Рейтинг бакалавра заочного отделения при поступлении в магистратуру определяется средним баллом по диплому, умноженным на коэффициент стажа работы по специальности, который равен: нет стажа — 1, меньше 2-ух лет — 13, от 2 до 5 лет — 16. Написать программу расчёта рейтинга студента при заданном среднем балле диплома (от 3 до 5) и вывести сообщение о приёме в магистратуру (при проходном балле 45).


Оценить статью:

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (7 оценок, среднее: 5,00 из 5)
Загрузка...

Комментариев: 42

  1. Аватар Анастасия:

    Моё решение задания №3, корректировка, добавлен вывод рейтинга.

  2. Аватар Анастасия:

    Моё решение задания №3:

  3. Аватар Анастасия:

    Моё решение задания №2:

  4. Аватар Анастасия:

    Решение задания №1:

  5. Аватар Алена:

    Задача 2.

    1. Аватар Анастасия:

      Код был бы раза в два короче, если бы Вы все условия проверки соединили в одной строчке.

  6. Аватар Алена:

    Задача 1.

    1. Аватар Анастасия:

      Алёна, можно же все условия ошибочного ввода написать через "или" (||) в одном условии, Вы ведь по сути одно и то же во всех случаях делаете, зачем же Вы так мучаетесь?

  7. Аватар Денис:

    Задание #1:

    1. Аватар Анастасия:

      довольно длинно получилось с расписыванием разных условий, можно было короче написать

  8. Аватар Денис:

    Задание #2:

    1. Аватар Анастасия:

      Ваше решение мне понравилось. Наверное потому, что я почти так же сделала.

  9. Аватар Денис:

    Задание #3:

    1. Аватар Анастасия:

      1) Вы предполагаете, что средний балл диплома — целое число, что весьма далеко от реальности. Это очень даже дробное число, где каждая десятая — на вес золота

      2) Резануло, что если опыт работы по специальности — больше 5 лет, программа выдаст ошибку. Мне кажется, это существенно. Можно было бы сделать так, что больше 5 лет опыта учитывалось бы как 5.

      3) Сама структура программы мне понравилась, и то, что за константами следите. Но не очень красиво, что константа проходного балла, которая фигурирует в функции проверки поступления, встречается в качестве литерала, когда Вы пишете о проходном балле. Если проходной балл изменят, придётся поправлять в двух местах вместо одного.

  10. Аватар Владимир:

    Задание №3

    1. Аватар Анастасия:

      Весьма компактно получилось, даже очень. но расчёт рейтинга, проходной балл и решение о поступлении просится вынести из main, разве нет?

  11. Аватар Владимир:

    Задание №2

    1. Аватар Анастасия:

      1) По условию число должно быть четырёхзначным

      2) нет проверки на то, число ли ввёл пользователь. Но ответ нормальный, что не является числом-палиндромом. Ок.

      3) Зачем переменная count и зачем её считать?

      4) Введите натуральное число: 0220
      0220 не является числом-палиндромом

      5) название переменной flag в каждом втором Вашем коде можно было бы как-то менять в зависимости от целей задачи ; )

      1. Аватар Владимир:

        1) Можно было сделать проверку на длину строки, но не стал, чтоб расширить возможности программы, а замечание правильное, следует придерживаться условия задачи (думал никто не заметит)

        2) Где-то я фигурные скобки потерял, вместо:

        должно быть:

        3) Переменная count на случай ввода: 0, 00, 0000, которые не являются действительными числами. С моей стороны неудачное имя переменной и комментарий к стейтменту, — не раскрывают сути кода

        5) Не вижу смысла подбирать название булевой переменной “под его цели”, если его назначение быть ключем для “блокирования” выполнения части программы, ну можно назвать не flag, а key, возможно я не прав

  12. Аватар Владимир:

    Задание №1

    1. Аватар Анастасия:

      Владимир, у меня при запуске Вашего кода и вводе букв возникает run-time error, связанная с тем, что переменная symbol используется без её инициализации, т.к. компилятор после строки 27 идёт на строку 56, где у этой проверяемой переменной мусорное значение. Обычно я не запускаю чужие коды, просто их читаю, чтобы тренировать понимание. Но Вы умудрились написать так, что я решила запустить, чтобы проверить логику.
      Ещё запутывает то, что функция check, которая проверяет корректность ввода, почему-то вопреки ожиданиям возвращает true, если ввод был ошибочным.

      И, наконец, по моему мнению, комментарий к строке 27:

      не соответствует действительности, ведь continue наоборот осуществляет переход в начало цикла, игнорируя код цикла после этой строки.

      1. Аватар Владимир:

        1) Вы правы, symbol надо инициализировать

        2) Если caller делает запрос: "Была ли ошибка ввода?" и если ошибка была функция возвращает true и caller выводит соответствующее сообщение, а если запрос: "Был ли ввод корректен?" и была ошибка, то возвращает false, все дело в оформлении запроса. (шутка)

        3) Из урока №70: Оператор continue позволяет сразу перейти в конец тела цикла, пропуская весь код, который находится под ним. Это полезно в тех случаях, когда мы хотим завершить текущую итерацию раньше времени.

  13. Аватар Shom:

    Задание №3

    1. Аватар Анастасия:

      Краткость — сестра таланта. Респект. Но кириллица!
      Мой тест:

      ┬тхфшЄх ёЁхфэшщ срыы фшяыюьр: 3.3
      ┬тхфшЄх ёЄрц ЁрсюЄ√ яю ёяхЎшры№эюёЄш: 1.9
      ╩рэфшфрЄ эх яЁшэ Є т ьрушёЄЁрЄєЁє

      1. Аватар Shom:

        Спасибо. Польщён)

  14. Аватар Shom:

    Задание №2

    1. Аватар Анастасия:

      Хотела написать, что симпатичный код получился… пока не протестировала. На моё число 6556 я увидела "ты хЄё  ярышэфЁюьюь". Даже и не знаю, палиндром это означает или наоборот? Кириллицу не забывайте подключать!

    2. Аватар Анастасия:

      И пользователю тоже нужно сообщать, какое число от него ждут. Ведь Вы никак не извещаете его, что четырёхзначное, просто отвергаете ответ ошибкой ввода и всё…

      1. Аватар Shom:

        Верно, забыл сообщить пользователю, что число должно быть четырёхзначным (.
        Я в линуксе программирую, тут кириллицу отдельно подключать не требуется (видимо, она уже изначально подключена), если не производятся действий с символами (подсчёт, перестановка и т.д.).
        И по первому заданию (там нет возможности ответить): строка 23

        1. Аватар Анастасия:

          Да, про комментарий насчёт нуля я упустила этот Ваш ход конём, Вы правы.

    3. Аватар Анастасия:

      Отдельное спасибо за std::to_string(number)! Это проще, чем через строковый поток преобразовывать, создавая отдельную функцию.

  15. Аватар Shom:

    Задание №1.

    1. Аватар Владимир:

      Shom, вот потестил немного, результат:
      Введите число из диапазона от 1 до 99: 11
      11 копейка

      1. Аватар Shom:

        Спасибо, поправил.
        Задание №1. Корректировка 1.

        1. Аватар Анастасия:

          1) т.к. кириллица не подключена на экране после запуска кода я вижу "0 — т√їюф шч яЁюуЁрьь√.
          ┬тхфшЄх ўшёыю шч фшрярчюэр юЄ 1 фю 99:"

          Но оно и так понятно, что от меня хотят.

          2) Т.к. в проверке ввода Вы не гнушаетесь нулём, то его я и ввела. Ввод нормальный же, да? А ввела я его, т.к. меня смутила проверка условия !number и break после него. То есть 0 коппек привёл к break и слово "копеек" мы так и не увидели. Мелочь, а всё-таки недочёт.

  16. Аватар Максон-патиссон:

    1. Аватар Анастасия:

      1) Условие предполагает ввод четырёхзначного числа. Вы, хоть и используете это при проверке числа на палиндромность, скрываете это требование от пользователя, просите его ввести некий num, который каждый может понять по-своему.

      2) Я ввела буквы, программу заклинило, она напечатала 100500 строк "Try again! Smth entered wrong!". Самое обидное, что я так и не дождалась возможности ввести число. Так быть не должно.

      3) Как итог, имеем даже вот такой результат:

      Enter your num: 233332
      Not polindrom

  17. Аватар Илья:

    Задание №1:

    1. Аватар Анастасия:

      Илья, я сильно подозреваю, что Вы — бот. Просто потому, что не мог нормальный человек настрочить столько кодов за один день…
      А если серьёзно, то правила хорошего тона предполагают хотя бы минимальные комментарии к коду, если Вы его выкладываете в публичный доступ. К счастью, этот Ваш код довольно понятен. Но, как говорится, осадок всё равно остаётся. Второе замечание, опять же, обобщённое: необходимо проверять пользовательский ввод на корректность, ведь пользователи они не обычно люди (по себе людей не судят!) и могут ввести что-то не то. Вы почему-то это совсем игнорируете.

  18. Аватар Илья:

    Задание 2:

    1. Аватар Владимир:

      Илья, у Вас можно было пользовательское число вводить в переменную string word и не создавать еще поток buff, т.к. проверки num все равно нет

      1. Аватар Анастасия:

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

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

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