Задача 18 Урок 13.1
Primary tabs
Модифицируйте решение предыдущей задачи, так, чтобы длина возрастающего фрагмента каждый раз увеличивалась на единицу (начиная с двух):
ПРИМЕЧАНИЕ: эту задачу можно решить, как вложенными циклами, так и вообще одним циклом (что более изящно), при этом решение одним циклом можно сделать, как используя делимость нацело (для определения момента вывода тройки), так и не используя.
Решите всеми тремя способами.
// 1 цикл не используя делимость нацело var M, N, k, L:integer; begin L := 2; // ограничитель длины фрагмента(изменяется) k := 1; // длина фрагмента M := 8; // стартовое число write('vvedi chislo N '); readln(N); if(N >= 10) then begin repeat write(M,' '); M := M + 2; if(k = L) then begin write(3,' '); k := 0; L := L + 1; end; k:=k+1; until(M > N); end else writeln('ERRROOOR'); readln(); end.
// вложенные циклы var M, N, k, L:integer; begin L := 2; // ограничитель длины фрагмента(изменяется) k := 1; // длина фрагмента M := 8; // стартовое число write('vvedi chislo N '); readln(N); if(N >= 10) then begin while(M < N) do begin for k := 1 to L do begin write(M,' '); M := M + 2; end; write(3,' '); L := L + 1; // увеличиваем длину фрагмента на 1 k := 0; end; end else writeln('ERRROOOR'); readln(); end.
// используя делимость нацело c одним циклом var M, N, k, L:integer; begin L := 2; // ограничитель длины фрагмента(изменяется) k := 1; // длина фрагмента M := 8; // стартовое число write('vvedi chislo N '); readln(N); if(N >= 10) then begin repeat write(M,' '); M := M + 2; if((k mod L)=0) then begin write(3,' '); k := 0; L := L + 1; end; k:=k+1; until(M > N); end else writeln('ERRROOOR'); readln(); end.
- Log in to post comments
- 623 reads
vedro-compota
Sun, 08/01/2021 - 12:48
Permalink
решение засчитано
решение засчитано
_____________
матфак вгу и остальная классика =)