Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Lab 20.5

Что нужно сделать

В одном из прошлых заданий вы уже создавали программу для чтения и анализа ведомости выплат. Теперь попробуйте создать простую программу для записи в эту ведомость.

Формат ведомости прежний:

  • Сначала идёт имя и фамилия получателя денежных средств, далее — дата выдачи в формате ДД.ММ.ГГГГ.
  • Запись завершает сумма выплаты в рублях.
  • Данные разделяются между собой пробелами.
  • В конце каждой записи должен быть расположен перевод строки.
  • При старте программы пользователь последовательно вводит данные для новой записи, которые затем записываются в файл в текстовом режиме. Программа должна добавлять новые записи в конец файла, не удаляя его текущее содержимое.

Рекомендации

  • Валидируйте введённые файлы перед записью, хотя бы минимально.
  • Для валидации даты в указанном формате можно использовать функции std::stoi и std::subtr с корректно указанным диапазоном символов в дате. К примеру, вызов std::stoi(date.substr(3, 2)) вычленит из строковой даты целочисленный месяц для последующего анализа.

Что нужно сделать

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

Бинарные картины — разновидность цифровых растровых изображений, когда каждый пиксель может представлять только один из двух цветов. На вход от пользователя принимается размер картины: высота и ширина в пикселях. На выходе нужно создать файл pic.txt, содержимое которого будет наполнено случайными нулями и единицами в рамках размера картины.

Рекомендации

Если вы запустите программу несколько раз на одних и тех же исходных данных (ширина и высота картины), то обнаружите, что всё время выводится одна и та же картина. У генератора случайных чисел есть ещё и зерно, от которого он отталкивается. Если это зерно не меняется, то и серия из rand() всегда будет возвращать одни и те же случайные числа. Чтобы разнообразить вывод, можете использовать вызов std::srand(std::time(nullptr)); в самом начале программы. Эта операция задаёт начальное зерно случайных чисел в зависимости от текущего времени. Для её корректной работы не забудьте также включить заголовочный файл <ctime>.


Что нужно сделать

Реализуйте простую симуляцию игры в рыбалку. В исходном текстовом файле реки (river.txt) задайте список из разных видов рыб, которые можно в ней поймать. Рыбок может быть сколько угодно, а виды могут повторяться.

Как должна работать симуляция:

  • В начале программы пользователь указывает, какую именно рыбу он собирается ловить (её вид).
  • После этого из первого файла друг за другом осуществляется чтение его содержимого, вид за видом.
  • Если на отдельных шагах вид совпал с указанным пользователем, в выходной файл basket.txt (корзинка) записывается этот вид.
  • В конце программы показывается, сколько было поймано рыб за текущую ловлю.
  • Программу можно запускать несколько раз, при этом уже пойманные рыбы должны сохраняться в файле-корзинке.

Рекомендация

Пример содержания исходного файла:

sunfish
shad
carp
bass
bullhead
carp
walleye
catfish
carp

Что нужно сделать

Реализуйте упрощённую симуляцию работы банкомата.

Учтите следующее:

  • В банкомате могут храниться только бумажные купюры номиналом 100, 200, 500, 1 000, 2 000 и 5 000 рублей.
  • Максимально в банкомате может храниться только 1 000 купюр. Все они записываются в отдельный файл.
  • У банкомата, как у устройства, две основных операции — снятие денег пользователем и наполнение деньгами инкассаторами банка.
  • Состояние банкомата должно храниться в отдельном бинарном файле, автономно. Хранение в бинарном виде улучшает производительность программы и уменьшает размер данных. Банкомат работает следующим образом:
  • При старте программа проверяет наличие файла .bin. Если он есть (данные по банкомату были сохранены), данные загружаются и на экран выводится информация о текущем состоянии банкомата: сколько сейчас купюр каждого номинала и общая сумма. Если файла нет — банкомат «пустой».
  • При вводе «+» заполняются недостающие купюры и выводится информация о текущем состоянии банкомата: сколько сейчас купюр каждого номинала и общая сумма. Количество купюр рассчитывается так, чтобы банкомат был заполнен полностью. Все купюры при этом выбираются случайным образом.
  • При вводе «−» симулируется снятие пользователем денег. Пользователь указывает сумму с точностью до 100 рублей. Считайте, что каждый клиент обладает неограниченным балансом в системе и теоретически может снять любую сумму. Выдача происходит начиная с купюр большего номинала. Если запрошенная сумма не может быть снята из-за отсутствия подходящих купюр в * машине, показывается сообщение, что эта операция невозможна. После выдачи денег на экран выдаётся информация о текущем состоянии банкомата: сколько сейчас купюр каждого номинала и общая сумма.
  • При выходе из программы сохраняем состояние банкомата в файл.

Рекомендации

  • Вы можете хранить массив купюр целиком, помечая отсутствующие позиции нулями.
  • Выход из программы рекомендуется сделать по отдельной команде, а команды «+» и «−» получать в цикле.

Что оценивается

  • Соблюдены все условия заданий.
  • Программы работают корректно.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages