Практика. Часть №6

  Юрий  | 

  Обновл. 6 Сен 2019  | 

 2074

 ǀ   29 

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

Easy: Задание №1

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

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

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

Medium: Задание №2


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

Hard: Задание №3

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

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

   номер рейса;

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

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

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

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

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

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


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

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

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

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

    Задача 1.

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

    Задание №3

    air_ticket.h:

    air_ticket.cpp:

    main.cpp:

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

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

    Файл "Passenger.h":

    Файл Date.h:

    Файл Ticket.h:

    main:

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

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

      1. Аватар Coprak:

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

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

    Задание №2

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

    Задание №1

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

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

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

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

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

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

  8. Аватар Юлия:

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

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

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

  9. Аватар Shom:

    Задание №3.

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

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

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

      1. Аватар Shom:

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

  10. Аватар 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>.

  11. Аватар Shom:

    Задание №1.

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

    Задание №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 короче.

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

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

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

    Задание №1:

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

      В

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

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

    Задание №2:

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

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

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

    Задание №1:

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

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

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

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

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

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