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

Решенные задачи Pascal: операторы цикла

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

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

Проверить:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var
a,b,temp,c:integer;
flag: boolean;
begin
writeln('A=');
readln(a);
writeln('B=');
readln(b);
temp:=a;
repeat
     temp:=temp-b;
     inc(c);
until temp-b>=0;
writeln('result: ',c);
end.

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, а также остаток от этого деления.

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


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

Проверить:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
var
number:integer;
flag: boolean;
begin
writeln('введите целое число (number>0) number=');
readln(number);
flag:=false;
while (number div 10)>0 do
begin
     if (number mod 10) = 2 then flag:=true;
     number:=number div 10;
end;
writeln(flag);
end.
While 5:
Дано целое число N (>1). Найти наибольшее целое число K, при котором выполняется неравенство 3K<N

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

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

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

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

Проверить:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var
  Temp:Real;
  A,K :Integer;
begin
  Write('Введите A: ');
  Readln(A);
  K:=0;
  Temp:=0;
  while Temp<=A do
  begin
   inc(K,1);
   Temp:=Temp+1/K;
  end;
  Writeln(K-1,' ',Temp-1/K);
end.
While 7:
Дано целое число K и набор ненулевых целых чисел; признак его завершения — число 0. Вывести количество чисел в наборе, меньших K

* Из задачника М. Э. Абрамян (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 (вещественное число).

* Из задачника М. Э. Абрамян (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 кг конфет.

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

Проверить:

1
2
3
4
5
6
7
8
9
10
11
12
var c,m:real;
   i:integer;
begin
writeln('Цена?');
readln(c);
m:=0.1;
for  i := 1 to 10 do
begin
     writeln(' price of ',m, ' kg = ',c*m);
     m:=m+0.1;
end;
end.

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

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

Проверить:

1
2
3
4
5
6
7
8
9
10
11
var a, b, i: integer;
begin
writeln('A:');
readln(a);
writeln('B:');
readln(b);
for  i:= b-1 downto a+1 do
     write(i:3 );
writeln;
writeln('kolvo: ',b-a-1);
end.
For 3:
Дано целое число N>0. Найти сумму
Pascal операторы цикла, решение задач Абрамян

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

Проверить:

1
2
3
4
5
6
7
8
9
var
  N, Rez,i :Integer;
begin
  Write('Введите N: ');
  Readln(N);
  rez:=0;
  For i:=0  to N do Rez:=Rez+sqr(N+i);
  Writeln(Rez);
end.

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

Пять делителей: Найти сумму всех чисел от 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.
Поделитесь уроком с коллегами и друзьями:
One Comment

    Кирилл

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

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

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

*
*

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