Use saved searches to filter your results more quickly
Cancel Create saved search
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window.
Reload to refresh your session.
ITrosh/YadroComputerClub
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Switch branches/tags
Branches Tags
Could not load branches
Nothing to show
Could not load tags
Nothing to show
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Cancel Create
- Local
- Codespaces
HTTPS GitHub CLI
Use Git or checkout with SVN using the web URL.
Work fast with our official CLI. Learn more about the CLI.
Биполярный транзистор. Основные параметры, схемы включения и мн.др.
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
Latest commit message
Commit time
README.md
Проект представляет собой решение поставленного компанией YADRO тестового задания.
Требования к решению
Требуется написать прототип системы, которая следит за работой компьютерного клуба, обрабатывает события и подсчитывает выручку за день и время занятости каждого стола. Решением задания будет: файл или несколько файлов с исходным кодом программы на языке C++(стандарт до C++20 включительно), инструкции по сборке и тестовые примеры (количество тестов — на усмотрение разработчика).
Входные данные представляют собой текстовый файл. Файл указывается первым аргументом при запуске программы.
Пример запуска программы:
$ task.exe test_file.txt
где task.exe — имя исполняемого файла (может быть любым), test_file.txt — имя файла с входными данными (произвольно задаётся пользователем).
Программа должна компилироваться компилятором gcc или clang в Linux, mingw/cygwin в Windows. Рекомендуется использование стандартной библиотеки (STL). Использование любых сторонних библиотек, кроме STL, запрещено. В решении, кроме файлов с исходным кодом, требуется предоставить инструкции по компиляции программы для проверки. Можно, но необязательно, использовать следующие системы автоматизации сборки: make, automake, cmake, gradle; проприетарные средства сборки не допускаются: например, файлы проектов MS Visual Studio не подойдут.
Выпуск 7. Закрепляем описание операций — входные и выходные данные.
Можно (но необязательно) написать дополнительно проверочные юнит-тесты с использованием доступной библиотеки (Google Test, CppUTest, и т.п.).
Формат входных данных
Первая строка содержит количество столов в виде целого положительного числа.
Во второй строке задаётся время начала и окончания работы компьютерного клуба, разделённые пробелом.
В третьей строке задаётся стоимость часа в компьютерном клубе в виде целого положительного числа.
Затем задаётся список входящих событий, разделённых переносом строки. Внутри строки в качестве разделителя между элементами используется один пробел.
- Имена клиентов представляют собой комбинацию символов из алфавита a..z, 0..9, _, -.
- Время задаётся в 24-часовом формате с двоеточием в качестве разделителя XX:XX, незначащие нули обязательны при вводе и выводе (например 15:03 или 08:09).
- Каждый стол имеет свой номер от 1 до M, где M — общее число столов, указанное в конфигурации.
- Все события идут последовательно во времени (время события N+1) >= (время события N).
Если входные данные не удовлетворяют описанному формату, программа должна вывести в консоль первую строку, в которой найдена ошибка формата, вывести подсказку, в чём может быть ошибка, и завершиться.
Если входные данные корректны, программа должна вывести следующий результат:
- На первой строке выводится время начала работы.
- Далее перечислены все события, произошедшие за рабочий день (входящие и исходящие), каждое на отдельной строке.
- После списка событий на отдельной строке выводится время окончания работы.
- Для каждого стола на отдельной строке выведены через пробел следующие параметры: Номер стола, Выручка за день и Время, которое он был занят в течение рабочего дня.
После этого программа должна завершиться.
За каждый час, проведённый за столом, клиент платит цену, указанную в конфигурации. При оплате время округляется до часа в большую сторону, поэтому даже если клиент занимал стол всего несколько минут, он платит за целый час. Выручка — сумма, полученная ото всех клиентов за всё время работы компьютерного клуба.
Все события характеризуются временем и идентификатором события. Исходящие события — это события, создаваемые во время работы программы. События, относящиеся к категории «входящие», сгенерированы быть не могут и выводятся в том же виде, в котором были поданы во входном файле.
ID 1. Клиент пришёл
Формат: 1
Если клиент уже в компьютерном клубе, генерируется ошибка «YouShallNotPass».
Если клиент пришёл в нерабочие часы, генерируется ошибка «NotOpenYet».
ID 2. Клиент сел за стол
Формат: 2
Если клиент уже сидит за столом, то он может сменить стол.
Если стол занят (в том числе, если клиент пытается пересесть за стол, за которым сам и сидит), генерируется ошибка «PlaceIsBusy».
Если клиент не находится в компьютерном клубе, генерируется ошибка «ClientUnknown».
ID 3. Клиент ожидает
Формат: 3
Если клиент не находится в компьютерном клубе, генерируется ошибка «ClientUnknown».
Если в клубе есть свободные столы, то генерируется ошибка «ICanWaitNoLonger!».
Если клиент уже находится в очереди ожидания, генерируется ошибка «ClientIsAlreadyWaiting!»
Если клиент уже сел за стол, генерируется ошибка «ClientHasAlreadySatDownAtTheTable!»
Если в очереди ожидания клиентов больше, чем общее число столов, то клиент уходит и генерируется событие ID 11.
ID 4. Клиент ушёл
Формат: 4
Если клиент не находится в компьютерном клубе, генерируется ошибка «ClientUnknown».
Когда клиент уходит, стол, за которым он сидел, освобождается и его занимает первый клиент из очереди ожидания (ID 12).
ID 11. Клиент ушел
Формат: 11
Генерируется в конце рабочего дня для всех клиентов, оставшихся в компьютерном клубе, в алфавитном порядке их имен. А также, когда клиент встаёт в очередь, а очередь ожидания уже заполнена.
ID 12. Клиент сел за стол
Формат: 12
Генерируется для первого клиента в очереди при освобождении любого стола.
ID 13. Ошибка
Формат: 13
Выводится сразу после события, которое вызвало ошибку. Событие, вызвавшее ошибку, считается не выполненным, и никакого эффекта на состояние клиентов не оказывает.
Пример работы программы
Для решения поставленного задания использовались следующие средства разработки:
Для тестирования использовался фреймворк Catch2 версии 3.3.2.
Для проведения тестирования был разработан следующий набор тестовых сценариев:
- Обработка файла с некорректным расширением;
- Обработка несуществующего файла;
- Обработка пустого файла;
- Обработка файла с некорректным числом столов в клубе;
- Обработка файла с некорректным разделителем в часах работы клуба;
- Обработка файла с некорректным временем открытия клуба;
- Обработка файла с некорректным временем закрытия клуба;
- Обработка файла с некорректной стоимостью часа в компьютерном клубе;
- Обработка файла без разделителей в описании события;
- Обработка файла с одним разделителем в описании события;
- Обработка файла с некорректным временем события;
- Обработка файла с некорректным идентификатором события;
- Обработка файла с некорректным телом события с идентификатором 2;
- Обработка файла с некорректным именем клиента в описании события;
- Обработка файла с некорректным номером стола в описании события с идентификатором 2;
- Обработка правильно заданного файла;
- Обработка файла, в котором время открытия клуба не меньше времени закрытия;
- Обработка файла, в котором номер стола в событии с идентификатором 2 превышает число столов в клубе;
- Обработка файла, в котором время события не меньше времени закрытия клуба;
- Обработка файла, в котором нарушена правильная временная последовательность событий;
- Проверка результата работы клуба, если на вход поступает файл, в котором случаются все события и все виды ошибок;
- Проверка результата работы клуба, если на вход поступает файл, в котором не случаются ошибки;
- Проверка результата работы клуба по тестовому файлу, взятому из описания технического задания;
- Проверка правильности печати тестового файла, взятого из описания технического задания.
Сборка и запуск
Для сборки (сборка основного бинарника и тестов) нужно, находясь в корне проекта, запустить следующую команду:
.build.sh
$ sudo chmod +x build.sh $ ./build.sh
cd build/src YadroComputerClub.exe path_to_txt_file>
$ cd build/src $ ./YadroComputerClub path_to_txt_file>
cd build/test YadroComputerClubTest.exe
$ cd build/test $ ./YadroComputerClubTest
Источник: github.com
Создание программы. Пример работы программы
Напишите программу, которая в последовательности натуральных чисел определяет максимальное число, кратное 5. Программа получает на вход количество чисел в последовательности, а затем сами числа. В последовательности
всегда имеется число, кратное 5. Количество чисел не превышает 1000.
Введённые числа не превышают 30 000. Программа должна вывести одно
число — максимальное число, кратное 5.
Пример работы программы:
Входные
данные
Выходные
данные
3
10
25
12
25
2.
Напишите программу, которая в последовательности натуральных чисел определяет сумму чисел, кратных 6. Программа получает на вход количество чисел в
последовательности, а затем сами числа. В последовательности всегда имеется
число, кратное 6. Количество чисел не превышает 100. Введённые числа не превышают 300. Программа должна вывести одно число — сумму чисел, кратных 6.
Пример работы программы:
Входные
данные
Выходные
данные
3
12
25
6
18
3.
Напишите программу, которая в последовательности натуральных чисел определяет сумму всех чисел, кратных 6 и оканчивающихся на 4. Программа получает
на вход натуральные числа, количество введённых чисел неизвестно, последовательность чисел заканчивается числом 0 (0 — признак окончания ввода, не входит
в последовательность). Количество чисел не превышает 1000. Введённые числа
не превышают 30 000. Программа должна вывести одно число: сумму всех чисел,
кратных 6 и оканчивающихся на 4.
Пример работы программы:
Входные
данные
Выходные
данные
14
24
144
22
12
0
168
4.
Напишите программу, которая в последовательности целых чисел определяет количество нечётных чисел, кратных 3. Программа получает на вход целые числа,
количество введённых чисел неизвестно, последовательность чисел заканчивается числом 0 (0 — признак окончания ввода, не входит в последовательность). Количество чисел не превышает 1000. Введённые числа по модулю не превышают
30 000. Программа должна вывести два числа: длину последовательности
(завершающий 0 не учитывается) и количество нечётных чисел, кратных 3.
Пример работы программы:
Входные
данные
Выходные
данные
4
6
15
180
0
4
1
Источник: ppt-online.org
Презентация «Программирование. Задание №20_2 ОГЭ»
презентация к уроку по информатике и икт (9 класс) на тему
Вашему вниманию предлагается презентация «Программирование. Задание №20_2 ОГЭ», в которой подробно разобраны задачи демоверсий этого задания и из открытого банка заданий ФИПИ. В презентации приведены программы, выделены общие рекомендации для решения и даны задачи для самостоятельного решения. Презентация может быть использована при повторении темы «Программирование», при подготовке выпускников к ОГЭ, а также на предэкзаменационной консультации.
Скачать:
![]() |
283.4 КБ |
Предварительный просмотр:
Подписи к слайдам:
Программирование Задание №20_2 ОГЭ Учитель – Богачёва Г.В. Лицей № 144 Санкт-Петербурга
На что обратить внимание: Числа не надо хранить в программе, к тому же мы не знаем, сколько чисел будет введено, поэтому отказываемся от массивов (в классическом Паскале нет динамических массивов — в описании необходимо указать число элементов массива). Вводим количество чисел в последовательность и организуем цикл (возможны for и while).
Если количество чисел не задано, а есть признак окончания ввода, используем repeat (сначала вводим число, затем его анализируем). Необходимо знать операции mod – остаток от деления ( if a mod 10 = 8) и div – деление нацело (x := x div 10) . Знать, как считается количество ( b := b + 1 ) и сумма ( s:= s + a ). Уметь использовать сложные условия ( if ( a mod 10 =2 ) and (a mod 6 =0 ) ) или вложенные условные операторы. Уметь сравнивать и находить в последовательности наибольшее или наименьшее число. Избегаем подсказок и пояснений в операторах вывода.
Задача 20.2 из демоверсии 2018 (2017) Напишите программу, которая в последовательности натуральных чисел определяет минимальное число, оканчивающееся на 4. Программа получает на вход количество чисел в последовательности, а затем сами числа. В последовательности всегда имеется число, оканчивающееся на 4. Количество чисел не превышает 1000. Введённые числа не превышают 30 000. Программа должна вывести одно число – минимальное число, оканчивающееся на 4. Пример работы программы: Входные данные Выходные данные 3 24 14 34 14
p rogram pr 2 ; var n,i,a,min : integer ; Begin readln (n); min := 30001; for i := 1 to n do begin readln (a); if (a mod 10 = 4) and (a max) then max:= a; e nd; w riteln (max); end. Вводим с клавиатуры количество чисел последовательности ( read (n ) ), заносим в переменную max самое минимальное возможное значение. Затем n раз повторяем одни и те же действия (цикл): вводим число, проверяем, оканчивается ли это число на 9 ( a mod 10 = 9 ) и, одновременно, больше ли введённое число переменной max. Если да, меняем значение max . Выводим результат. Обязательно тестируем программу. Максимальное число , оканчивающееся на 9.
Напишите программу, которая в последовательности натуральных чисел определяет сумму чисел, оканчивающихся на 8. Программа получает на вход количество чисел в последовательности, а затем сами числа. В последовательности всегда имеется число, оканчивающееся на 8. Количество чисел не превышает 100. Введённые числа по модулю не превышают 300. Программа должна вывести одно число: сумму чисел, оканчивающихся на 8. Пример работы программы: Входные данные Выходные данные 3 18 28 24 46
p rogram pr 3 ; var n,a,s,i : integer; b egin r ead (n); s := 0; f or i:=1 to n do begin r ead (a); i f a mod 10 = 8 then s := s +a; e nd; w riteln (s); end. Вводим с клавиатуры количество чисел последовательности ( read (n ) ) . В переменную s заносим 0 (сумма чисел). Затем n раз повторяем одни и те же действия (цикл): вводим число, проверяем, оканчивается ли это число на 8 ( a mod 10 = 8) и, если да, то прибавляем число к переменной s ( s:= s + a). Выводим результат ( s) . Обязательно тестируем программу. Сумма чисел, оканчивающихся на 8.
Входные данные Выходные данные 3 12 25 42 2 Напишите программу, которая в последовательности натуральных чисел определяет количество чисел, кратных 6 и оканчивающихся на 2. Программа получает на вход количество чисел в последовательности, а затем сами числа. Количество чисел не превышает 1000. Введённые числа по модулю не превышают 30 000. Программа должна вывести одно число: количество чисел, кратных 6 и оканчивающихся на 2 . Пример работы программы:
p rogram pr 4 ; var n,a,b,i : integer; b egin r ead (n); b := 0; f or i:=1 to n do begin r ead (a); i f ( a mod 10 = 2 ) and (a mod 6 = 0) then b:= b +1; e nd; w riteln (b); end. Вводим с клавиатуры количество чисел последовательности ( read (n ) ), заносим в переменную b 0 ( счетчик). Затем n раз повторяем одни и те же действия (цикл): вводим число, проверяем, оканчивается ли это число на 2 ( a mod 10 =2 ) и, одновременно, кратно ли это число 6 ( a mod 6 = 0 ) . Если да, то увеличиваем счетчик на 1 ( b:= b +1) . Выводим результат. Обязательно тестируем программу. Количество чисел, кратных 6 и оканчивающихся на 2.
Входные данные Выходные данные 10 120 125 0 122.5 11 1 0 NO Напишите программу, которая в последовательности натуральных чисел находит среднее арифметическое трёхзначных чисел или сообщает, что таких чисел нет (выводит NO). Программа получает на вход натуральные числа, количество введённых чисел неизвестно, последовательность чисел заканчивается числом 0 (0 признак окончания ввода, не входит в последовательность). Количество чисел не превышает 100. Введённые числа не превышают 300. Программа должна вывести среднее арифметическое трёхзначных чисел или вывести «NO», если таких чисел нет.
program pr5; var a, b, k : integer; m : real ; b egin b:=0 ; k:=0; repeat read (a); If (a>99) and (a 0 then begin m :=b/k ; writeln (m ); end else writeln (‘NO’) end. До тех пор, пока не будет введён 0, повторяем в цикле ( repeat , так как сначала вводим, потом проверяем) : если это трёхзначное число ( ( a>99) and (a 0 ), находим среднее арифметическое и в ыводим результат, в противном случае выводим ‘NO’ Обязательно тестируем программу. Среднее арифметическое трёхзначных чисел или « NO»
Входные данные Выходные данные 2 17 15 19 20 1 Напишите программу для решения следующей задачи. На соревнованиях по бегу на 5000 метров для выхода в финал необходимо показать время не более 18 минут 30 секунд. Сколько спортсменов по результатам соревнований вышли в финал? Программа получает на вход количество спортсменов, принимавших участие в соревнованиях (1 ≤ N ≤ 100), затем для каждого спортсмена вводится два числа: минуты и секунды –время , показанное на дистанции.
Источник: nsportal.ru