begin var (cost, t, k) := (Arr(15, 70, 125, 230, 440), Arr(1, 5, 10, 20, 60), new integer[5]); var n := ReadInteger('n->'); for var i := 4 downto 0 do begin k[i] := n div t[i];n := n mod t[i]; end; if k[0] * cost[0] >= cost[1] then begin k[0] := 0;inc(k[1]); end; if k[0] * cost[0] + k[1] * cost[1] >= cost[2] then begin k[0] := 0;k[1] := 0;inc(k[2]); end; if k[0] * cost[0] + k[1] * cost[1] + k[2] * cost[2] >= cost[3] then begin k[0] := 0;k[1] := 0;k[2] := 0;inc(k[3]); end; if k[0] * cost[0] + k[1] * cost[1] + k[2] * cost[2] + k[3] * cost[3] >= cost[4] then begin k[0] := 0;k[1] := 0;k[2] := 0;k[3] := 0;inc(k[4]); end;
for var i := 0 to 4 do WritelnFormat('{0} билет(ов)- {1} штук(а)', t[i], k[i]); end.
1. Оператор цикла предназначен для выполнения большого количества однотипных вычислений, отличающихся только значениями переменных, входящих в формулу. Например, вычисление значений формулы y=sin(x) для х=1..10 с шагом 1. 2. В языке Паскаль существуют циклы: с параметром (FOR), с предусловием (WHILE..DO), с постусловием (REPEAT...UNTIL). 3. Оператор FOR для примера п.1 имеет вид: FOR K:= 1 TO 10 DO Y[K]:=SIN(K). Если в теле цикла будет несколько операторов, то они заключаются в операторных скобки BEGIN...END. 4. Во время исполнения этого оператора переменной Y[K] (элементам маccива Y) последовательно присваиваются значения SIN(K). 5. Оператор FOR применяется в тех случаях, когда число повторений заранее известно (К=1..10). 6-9. Циклы WHILE и REPEAT применяются, когда число повторений заранее неизвестно, например, для вычисления суммы ряда с заданной точностью, но их можно применять и для расчета по предыдущему примеру. K:=0; WHILE K<11 DO BEGIN K:=K+1; Y[K]:=SIN(K) END; или для цикла REPEAT: K:=0; REPEAT K:=K+1; Y[K]:=SIN(K} UNTIL K>10; Для вычислений эти циклы равносильны, но есть одно (иногда решающее) отличие - цикл WHILE не будет выполнен ни разу, если условие сразу ложно, а цикл REPEAT сначала выполнит одну операцию, а потом, если условие окажется ложным, остановится.