Pascal: Проверь себя (решенные задачи, операторы цикла)

Дата изменения: 25 сентября 2021
Решенные задачи Pascal: операторы цикла

Pascal операторы цикла — Repeat

Repeat 1: Даны положительные числа A и B (A>B). На отрезке длины A размещено максимально возможное количество отрезков длины B (без наложений). Не используя операции умножения и деления, найти количество отрезков B, размещенных на отрезке A.
  
Рекомендации: для проверки правильности внесенного диапазона используйте оператор assert с сообщением ошибки исключения:

 assert(a>b,'введите a > b');

Пример вывода:

A=15
B=4
result: 3

[Название файла: L3Repeat1.pas]

Pascal операторы цикла — While

While 1: Определите значение переменной P после выполнения следующего фрагмента программы:

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

Проверить (верный ответ — красным)
While 2: Определите значение переменной S после выполнения следующего фрагмента программы:

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

Проверить (верный ответ — красным)
While 3: Даны целые положительные числа N и K. Используя только операции сложения и вычитания, найти частное от деления нацело N на K, а также остаток от этого деления.
  
Рекомендации: для проверки правильности внесенного диапазона используйте оператор assert с сообщением ошибки исключения:

 assert(n>k,'введите n > k');

Пример вывода:

N: 15
K: 4
частное: 3 остаток: 3

[Название файла: L3While3.pas]

Решение данного задания смотрите в видео уроке по Паскалю:

While 4: Дано целое число N (> 0). С помощью операций деления нацело и взятия остатка от деления определить, имеется ли в записи числа N цифра «2». Если имеется, то вывести TRUE, если нет — вывести FALSE.
  
Пример вывода:

введите целое число (number>0) 
>>54
False

[Название файла: L3While4.pas]

While 5:
Дано целое число N (>1). Найти наибольшее целое число K, при котором выполняется неравенство 3K<N
  
Пример выполнения:

Введите N: 96
4

[Название файла: L3While5.pas]

* Из задачника М. Э. Абрамян (While10)

Предлагаем посмотреть разбор задачи на видео:

While 6:
Дано число A (>1). Вывести наибольшее из целых чисел K, для которых сумма 1+1/2+…+1/K будет меньше A, и саму эту сумму
  
Пример выполнения:

Введите A: 10
12366 9.99996214792161

[Название файла: L3While6.pas]

* Из задачника М. Э. Абрамян (While14)

While 7:
Дано целое число 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.
While 8:
Спортсмен-лыжник начал тренировки, пробежав в первый день 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

For 1: Дано вещественное число — цена 1 кг конфет. Вывести стоимость 0.1, 0.2, …, 1 кг конфет.
  
Пример выполнения:

Цена?
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]

* Из задачника М. Э. Абрамян

For 2: Даны два целых числа A и B ( A<B ). Вывести в порядке убывания все целые числа, расположенные между A и B (не включая числа A и B), а также количество N этих чисел.
  
Пример выполнения:

A: 4
B: 18
 17 16 15 14 13 12 11 10  9  8  7  6  5
кол-во: 13

[Название файла: L3For2.pas]

* Из задачника М. Э. Абрамян

For 3:
Дано целое число N>0. Найти сумму
Pascal операторы цикла, решение задач Абрамян
  
Пример выполнения:

Введите N: 30
65255

[Название файла: L3For3.pas]

* Из задачника М. Э. Абрамян (For11)

Сейчас предлагаем решить сложную олимпиадную задачу на Паскале:

Пять делителей: Найти сумму всех чисел от 1 до заданного n, имеющих ровно пять делителей. Единица и само число входят в число его делителей
Проверить:

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.
3 комментария

    Кирилл

    Добрый вечер. В первом задании у вас не правильный код. Постоянно 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]

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

*
*


Вставить формулу как
Блок
Строка
Дополнительные настройки
Цвет формулы
Цвет текста
#333333
Используйте LaTeX для набора формулы
Предпросмотр
\({}\)
Формула не набрана
Вставить