Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Решение олимпиадных задач на Pascal-е.


Информационный Канал Subscribe.Ru

Решение олимпиадных задач на Pascal-е. Выпуск №1. Здравствуйте дорогие читатели! Это первый выпуск рассылки, в которой вы найдете самые интересные олимпиадные задачи с Решениями. В сегодняшнем номере я хочу рассказать вам о задачах, которые встретились мне совершенно недавно. Я учусь в одиннадцатом классе, и мне предложили участвовать в городской олимпиаде по информатике, я, конечно же, согласился. В ней было всего 2 задачи, об одной из них и пойдёт речь. №1. «Часы». Дословно я её не помню, но она заключается в следующем: Часы работают так: Минутная стрелка за одну минуту проходит одно деление, а часовая стрелка перескакивает на одно деление за двенадцать минут. По заданному времени определить угол (в градусах) между Минутной и часовой стрелкой. Причем 0<=D<=180 (D-искомый угол). Входной файл. Intput.txt. В этом файле записано время часы и минуты через пробел. Например: 10 05. Выходной файл. Output.txt. В него выводится число равное искомому углу. Пример: 90 Решение. Вначале определимся с переменными. Пусть hh-Количество часов, а mm-количество минут. Переменная D-искомый угол. И главное для открытия файла вводим текстовую переменную T. В решении будет один цикл, так что от переменной i тоже не отделаемся. Приступаем к написанию программы. uses crt; var t:text; d:integer; hh, mm, i: byte; begin assign(t,'input.txt'); reset(t); read(t,hh,mm); close(t); d:=hh*30; for i:=1 to mm do if (i mod 12)<>0 then d:=D-6; d:=abs(D); if d>180 then D:=360-d; assign(t,'output.txt'); rewrite(t); writeln(t,d); close(t); end. Команда assign(t,'input.txt') открывает текстовый файл и связывает его с переменной t. Следом идёт команда reset(t) подготавливающая файл к чтению. read(t,hh,mm) считывает файловые данные в переменные hh и mm. И конечно же пришло время закрыть входной файл командой close(t). Именно с этого момента начинается главный блок программы. Первым делом я умножаю Количество часов на 30 (Так как в 1 часе 30 градусов). Потом начинается цикл длящийся от одной минуты до заданного количества минут. Так как при прохождении 1 минуты угол уменьшается на 6 градусов, а при прошествии 12 минут увеличивается на 6 градусов, то запишем следующее: if (i mod 12)<>0 then D:=D-6; После цикла значение угла может быть меньше нуля, то возьмем его модуль. В задании сказано, что угол в интервале от 0 до 180 градусов, то если он в него не попадает, то из 360 вычитаем Получившееся значение. Осталось только закинуть конечный результат в Output.TxT. ГОТОВО!!! №2 «Сундук». Мистер А. положил в сундук N золотых монет, через год он вынул от туда M Монет. А каждый следующий год начиная с третьего, он ложил столько монет, сколько было два года назат. По прошествии X лет в сундуке было Y Монет. По заданному X и Y наитии количество монет которые положил в первый год, и количество тех, которые он взял на второй. Входной фаил. Через пробел написано Количество лет и Сумма которая образовалась в сундуке (короче X и Y). Выходной файл. На первой строчке количество положенных монет (N) а на второй N-M. Решение этой задачи я постараюсь опубликовать в ближайшее время, но эсли у вас появятся какие либо задумки присылайте. berbenn@narod.ru

http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.berben
Отписаться

В избранное