Содержание:
Pascal операторы цикла — Repeat
Рекомендации: для проверки правильности внесенного диапазона используйте оператор
assert
с сообщением ошибки исключения:
assert(a>b,'введите a > b'); |
Пример вывода:
A=15 B=4 result: 3
[Название файла: L3Repeat1.pas
]
Pascal операторы цикла — While
1 2 3 4 5 | P:=1; i:=3; while i <= 9 do begin P := P * (i div 3); i := i + 1; end; |
Варианты:
1) 1
2) 3
3) 9
4) 24
1 2 3 4 5 | S:=0; i:=7; while i > 1 do begin S := S + i div 2; i := i - 1; end; |
Варианты:
1) S = 0
2) S = 7
3) S = 12
4) S = 24
Рекомендации: для проверки правильности внесенного диапазона используйте оператор
assert
с сообщением ошибки исключения:
assert(n>k,'введите n > k'); |
Пример вывода:
N: 15 K: 4 частное: 3 остаток: 3
[Название файла: L3While3.pas
]
Решение данного задания смотрите в видео уроке по Паскалю:
Пример вывода:
введите целое число (number>0) >>54 False
[Название файла: L3While4.pas
]
Дано целое число N (>1). Найти наибольшее целое число K, при котором выполняется неравенство
3K<N
Пример выполнения:
Введите N: 96 4
[Название файла: L3While5.pas
]
* Из задачника М. Э. Абрамян (While10)
Предлагаем посмотреть разбор задачи на видео:
Дано число A (
>1
). Вывести наибольшее из целых чисел K, для которых сумма 1+1/2+…+1/K будет меньше A, и саму эту суммуПример выполнения:
Введите A: 10 12366 9.99996214792161
[Название файла: L3While6.pas
]
* Из задачника М. Э. Абрамян (While14)
Дано целое число K и набор ненулевых целых чисел; признак его завершения — число 0. Вывести количество чисел в наборе, меньших K
[Название файла:
L3While7.pas
]
* Из задачника М. Э. Абрамян (Series14)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | var i,R,K:Longint; begin write('Введите K : '); readln(K); R:=1; i:=0; while(R<>0) do begin write('Введите число из набора: '); Readln(R); if R<K then i:=i+1; end; i:=i-1; Writeln(i); readln; end. |
Спортсмен-лыжник начал тренировки, пробежав в первый день 10 км. Каждый следующий день он увеличивал длину пробега на P процентов от пробега предыдущего дня (P — вещественное, 0<P<50). По данному P определить, после какого дня суммарный пробег лыжника за все дни превысит 200 км, и вывести найденное количество дней K (целое) и суммарный пробег S (вещественное число).
[Название файла:
L3While8.pas
]
* Из задачника М. Э. Абрамян (While16)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | var P, S, D:Real; K :Integer; begin Write('Введите процент: '); Readln(P); K:=1; D:=10; S:=10; while S<=200 do begin inc(K,1); D:=D+D*P/100; S:=S+D; end; Writeln(K,' ',S); end. |
Pascal операторы цикла — For
Пример выполнения:
Цена? 45.7 цена за 0.1 кг = 4.57 цена за 0.2 кг = 9.14 цена за 0.3 кг = 13.71 цена за 0.4 кг = 18.28 цена за 0.5 кг = 22.85 цена за 0.6 кг = 27.42 цена за 0.7 кг = 31.99 цена за 0.8 кг = 36.56 цена за 0.9 кг = 41.13 цена за 1 кг = 45.7
[Название файла: L3For1.pas
]
* Из задачника М. Э. Абрамян
Пример выполнения:
A: 4 B: 18 17 16 15 14 13 12 11 10 9 8 7 6 5 кол-во: 13
[Название файла: L3For2.pas
]
* Из задачника М. Э. Абрамян
Дано целое число N>0. Найти сумму

Пример выполнения:
Введите N: 30 65255
[Название файла: L3For3.pas
]
* Из задачника М. Э. Абрамян (For11)
Сейчас предлагаем решить сложную олимпиадную задачу на Паскале:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | var c,n,s,k,i:integer; begin c:=0; s:=0; readln(n); for i:=2 to n do begin k:=i; while k>0 do begin if i mod k = 0 then c:=c+1; k:=k-1; end; if c= 5 then s:=s+i; c:=0; end; writeln(s); end. |
Кирилл
Добрый вечер. В первом задании у вас не правильный код. Постоянно 1 выдаёт.
У меня получился вот такой:
var a,b,k:integer;
begin
write(‘Введите длину отрезка А (a>b) — ‘);
readln(a);
write(‘Введите длину отрезка Б (b<b) — ');
readln(b);
k:=0;
repeat
a:=a-b;
inc(k);
until a<b;
writeln('На отрезке A находится ',k,' отрезков Б');
end.
Nickolay
ваш код в задачке while 4 на числа, начинающиеся на двойку(например 233) выдаёт false. я написал так(про булеан ещё не знал, ведь он в следующей главе):
var a,a1,z,i,j,i2:integer;
begin
write(‘vvedite chislo:’);
readln(a);
i:=1;
a1:=a;
z:=0;
while a1>=10 do begin
a1:=a1 div 10;
inc(i);
end;
a1:=a;
while i>0 do begin
i2:=1;j:=1;
while i2<i do begin
j:=j*10;
inc(i2);
end;
a1:=a div j;
a:=a mod j;
dec(i);
if a1=2 then begin
z:=1;break;
end;
end;
if z=1 then writeln('true')else
writeln('false');
end.
Таганова Шахрибоссан
Найти сумму элементов в матрице из отрезка [50; 80]