👍 0 👎 |
ПрограммаВывод результатов в виде таблицы. Запас картофеля на складе составляет Q т в начале октября. Ежемесячно для продажи изымается S т, а естественные ежемесячные потери полагаются равными р % текущего запаса. Найти, сколько картофеля остается на складе к концу октября, ноября, декабря, ..., июня.
Задание №2. Модифицировать первую задачу, отразив в ней следующие измененные условия. Естественная убыль в октябре составляет p %, а в каждый последующий месяц увеличивается по сравнению с предыдущим в 2 раза.
обучение Pascal изучение языков программирования программирование обучение
макс
|
👍 0 👎 |
Макс, на чём программу пишете?
Можно пойти разными путями: - Написать рекурсивную процедуру, которой Q подаётся как параметр. В теле процедуры делается перерасчёт Q (простой рекуррентной формулой) и вывод на консоль (или в файл) строки "месяц: Q". Для условия выхода из этой процедуры Вам понадобится переменная для месяцев. - Если вы не любите рекурсию — обсчитывайте новый запас в цикле. В теле цикла, помимо рекуррентной формулы для расчёта запаса, будет вывод на консоль/в файл всё той же строки. Счётчиком цикла будут месяцы. В задании 2 всё ровно то же самое, просто чуть-чуть изменится формула пересчёта Q. Напишите здесь хотя бы попытку запрограммировать какой-нибудь из этих способов. |
👍 0 👎 |
Ну вот
|
👍 0 👎 |
var Q: integer;
S: integer; P: integer; NaKonecMes: array[0..9] of integer; i: integer; begin NaKonecMes[0]:=Q for i:=1 to 9 do begin NaKonecMes:=NaKonecMes[i-1]-S-NaKonecMes[i-1]*P/100; end; end; begin NaKonecMes[0]:=Q NaKonecMes[1]:=NaKonecMes[0]-S-NaKonecMes[0]*P/100 for i:=2 to 9 do begin NaKonecMes:=NaKonecMes[i-1]-S-NaKonecMes[i-1]*P*2/100; end; end; вот проверьте |
👍 0 👎 |
Ну да, в целом, идея верная, только:
1. В теле цикла делается присваивание NaKonecMes:= ... 2. Во второй задаче мало просто приписать коэффициент 2 к проценту p. Вам запас текущего месяца уже не нужен, он не участвует в расчётах по формулировке задачи. Т.е. нужно перед циклом рассчитать p от первого месяца (октября) и записать в какую-нибудь переменную: var delta: integer:= Q*p/100; А в теле цикла просто удваивать её: NaKonecMes:=NaKonecMes[i-1]-S-delta*2/100; Вывод на консоль/в файл для Вас, думаю, труда не составит. |
👍 0 👎 |
Шикарно, попался на ту же ловушку
1 пункт читайте как: "в теле цикла делается присваивание NaKonecMes[l]:= ..." |
👍 0 👎 |
Ну и конечно, во второй задаче delta нужно удваивать отдельно внутри цикла:
delta := delta*2; NaKonecMes[l]:=NaKonecMes[i-1]-S-delta/100; В варианте NaKonecMes[l]:=NaKonecMes[i-1]-S-delta*2/100 она же никак не меняется. |
👍 0 👎 |
Проверка корректности ввода C++
|
👍 0 👎 |
Visual BASIC
|