Часть №6: Практические задания по С++

  Юрий  | 

  Обновл. 16 Сен 2021  | 

 34342

 ǀ   44 

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

Easy: Задание №1

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

Пример результата выполнения программы:

Введите 2 целых числа: 48 54
48 меньше 54

Medium: Задание №2


Напишите программу, которая выводит на экран сообщение в «телеграфном» стиле: буквы сообщения должны появляться по одной с некоторой задержкой.

Hard: Задание №3

Напишите программу, которая содержит текущую информацию о десяти заявках на авиабилеты. Каждая заявка должна иметь:

   пункт назначения;

   номер рейса;

   ФИО пассажира;

   желаемую дату вылета.

Программа должна обеспечивать:

   хранение всех заявок в виде списка;

   добавление и удаление заявок;

   вывод всех заявок.


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

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

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

  1. Andrew:

    №3

  2. Andrew:

    №2

  3. Andrew:

    №1

  4. Александр:

    Ох и заморочился я с третьим заданием. Я решил сделать интерфейс меню в которое можно вставить любые опции(как мне кажется. Прям «любые» я не тестировал) и под это меню подогнал решение задачи. Получилось очень много кода(на мой взгляд) здесь продемонстрировать не получится, поэтому оставляю ссылку на гитхаб, если кому то будет интересно.
    https://github.com/AlexandrJaw/Request-Menu.git

  5. red_d:

    Все, вообще все проигнорили тз 3го задания
    "хранение всех заявок в виде списка"

    Где #include<list> граждане?

  6. Alexjazz:

    задание №2

    Работает в Visual Studio 19 C++17

  7. Rock:

    Задание 1:

    Задание 2:

    Задание 3: пришлось серьезно попотеть над прогой, была изначально мысль наследовать все от абстракции как задел под другой вид транспорта , и юзать полиморфизм но пока не хватило знаний

    1. Vitalt1158:

      Очень интересно было посмотреть и почерпнуть что-то для себя)

  8. andrej:

    Мое задание №3 :

  9. Slava:

    Task #2

  10. Slava:

    Quest #1

  11. Gever:

    Задание 3

    Class Ticket

    Класс инициализации и запуска

    Имплементация .cpp

  12. RockNRullz:

    Задание №3. Программа запрашивает текущую дату, поэтому временем вылета не может быть вчерашнее число:

  13. Алена:

    Задача 2.

  14. Алена:

    Задача 1.

  15. Владимир:

    Задание №3

    air_ticket.h:

    air_ticket.cpp:

    main.cpp:

  16. Анастасия:

    Моё решение задания №3.
    Разбила на несколько файлов и класс-контейнер сделала с оригиналами заявок. В планах переделать с умными указателями, но я в них пока не уверенно себя чувствую, поэтому здесь пусть будет этот вариант.

    Файл "Passenger.h":

    Файл Date.h:

    Файл Ticket.h:

    main:

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

      Спасибо, что разместили моё решение. Я и не знала, что код превращается в "красивый" вручную… Поэтому произошла небольшая накладка:
      строка "Файл Tickets_list.h:" это не часть Файла "Ticket.h:", это оповещение о том, что далее идёт код следующего файла.
      Буду признательна, если Вы поправите соответственно. В остальном всё хорошо.

      1. Coprak:

        Меня одно интересует, какого хрена с такими знаниями ты сидишь на этих задачках?

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

          Интереснейшее замечание))) Все знания взяты только из этого курса. А на практике я их усваиваю, так сказать.

  17. Владимир:

    Задание №2

  18. Владимир:

    Задание №1

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

      И здесь без флага не обошлось)) Ваш фирменный стиль? А если серьёзно, то на мой взгляд, перемудрили Вы здесь Владимир. Всего-то вводится два числа, а столько кода…

  19. Анастасия:

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

  20. Анастасия:

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

  21. Юлия:

    Задача №3
    Решила решать через структуру, т.к. задача не слишком объемная.
    Не отшлифовывала "Уверены ли Вы" и ввод даты, все внимание уделила работе с векторами и стрингами

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

      У Вас я впервые увидела функцию удаления элемента вектора, это полезная функция, но я её пока ещё не испытала.
      В целом — очень компактно получилось, но было бы ещё компактнее без функции get_s(), просто поражает воображение как Вы из символов собираете строку, зачем? Ведь можно же было, к примеру, std::getline(std::cin, строковая переменная).
      Главными недостатками кода я считаю строковую (!!!) дату, вместо которой пользователь может написать "здесь был Вася" к примеру, и обилие магических чисел, которые вы используете как коды символов char (13, 27), причём никак это не комментируя. Ну, и названия переменных могли бы быть понятней, но это уже мелочи.

  22. Shom:

    Задание №3.

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

      Изучив Ваш код после кода Юлии, я нашла множество пересечений в логике)) Но Ваш код мне нравится больше, так как он более цивилизованный, и Вы умело работаете со строками и выводом.
      В целом мне не нравятся лишь две вещи — строковая дата (Юлия это "наследовала") и то, что

      в одном классе как два равноценных члена, хотя понятно, что второй состоит из первых. Это как-то странновато и немного не логично, сделали бы полноценную обработку Application отдельно, а в этом классе оставили бы только работу со списком, это было бы более правильно.

      1. Shom:

        Всё верно: обработку ввода даты и работу с Application лучше (и удобнее) было бы сделать в отдельных классах. Здесь же всё в кучу собранно для компактности.

  23. Shom:

    Задание №2

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

      Ваше "massage" повеселило))
      И зачем Вы используете std::flush? Проверить Ваш способ задержки мне не удалось, т.к. не подключается <unistd.h>, "fatal error C1083: Не удается открыть файл включение: unistd.h: No such file or directory,"

      1. Shom:

        Как же в C++ без юмора)
        std::flush освобождает буфер, то есть, выводит символ из буфера на экран. Без этой функции они бы копились в буфере до конца цикла, а потом одной строкой вывелись. flush можно было бы заменить endl, но тогда каждый следующий символ выводился бы в новой строке. <unistd.h> — это для функции usleep(), flush входит в <iostream>.

  24. Shom:

    Задание №1.

  25. Илья:

    Задание №3, никогда я не писал столько кода сразу,я знаю, что 325 строк это немного для реальных проектов, но всё же:

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

      1) Здорово, что Вы написали такой подробный поясняющий комментарий к коду, многим авторам здесь такого подхода не хватает.
      Сначала я подумала, что Вам удалось это сделать в самом коде, но, похоже, просто здесь так отформатировалось.

      2) Вы проигнорировали часть задания о том, что билет должен содержать номер рейса. Но зато Вы сделали номер билета и
      статическую переменную для этого. У меня была та же идея, поэтому мне это понравилось.

      3) Ещё мне понравилась Ваша идея использовать целочисленные типы заданных размеров, у меня они без #include <cstdint> не работают.

      4) Список билетов у Вас с одной стороны называется JournalOfDeparture (журнал вылетов), с другой — journalOfFlights (журнал полётов), хотя с …OfTickets было бы более уместно.

      5) Почему addNewUser, deleteNewUser, printOneUser, deleteAllUsers, numberOfUserб почему "пользователь", когда речь — о билетах? Ну, или о заявках.

      6) В методе deleteOneUser:

      будет работать так, что пока не найдёт нужный номер билета будет писать, что билета нет в списке, что глупо. Представим, что билетов 100, удаляемый билет с номером 50, так вот до него она напишет это 49 раз, если я правильно понимаю. Если нет — поясните. Код не запускала.

      7) У вас есть new (в addNewUser), но нигде нет delete, a это означает, что Ваш код провоцирует утечку памяти.

      8) В deleteOneTicket:

      можно было бы переписать короче:

      И в том, что носит гордое имя "интерфейс" код:

      то, что после return никогда не выполнится! В целом очевидна Ваша страсть к использованию

      Если над этим поработать, код стал бы строк на 20 короче.

  26. Илья:

    Задание №2:
    Спасибо Евгению за функцию Sleep(timeMicroseconds),
    я про неё раньше не слышал, надо будет получше изучить
    библиотеку Windows.h

  27. Илья:

    Задание №1:

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

      В

      пробел между num и 1 — критичен. У меня не запустилось, пока не исправила.
      Проверки на корректность "чисел" не хватает, результат работы программы:
      Введите два целых числа:
      во 239
      -9.25596e+61 меньше 0

  28. Евгений Павлов:

    Задание №2:

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

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

  29. Евгений Павлов:

    Задание №1:

    1. Илья:

      Женя, а в чём, собственно, заключается твой "грязный хак"???
      std::cin для double уже перегружены
      max и min — шаблоны, они умеют работать со всеми числами
      в чём смысл строки ios_base::sync_with_stdio(false);
      Я попробовал скопировать твой код и удалить эту строку,
      всё продолжило работать.

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

      А ежели эти два числа окажутся равными? Та-да-да-дам….

Добавить комментарий для Vitalt1158 Отменить ответ

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