Задачи Урок 11
Primary tabs
1) Пользователь вводит целое число N, большее 8. Выведите на экран последовательность четных чисел от 8 до N.
var i, N : integer;
begin
writeln('Введите целое число N > 8');
readln(N);
i := 8;
while (i <= N) do
begin
write(i, ' ');
i := i + 2;
end;
readln();
end.
2) Пользователь вводит целые числа. Пока он не введёт число большее 15, в ответ на каждое введённое число выводите сумму этого числа и числа 7, если же введённое число больше 15, то цикл необходимо завершить.
var a: integer;
begin
a := 1;
while (a <= 15) do
begin
writeln('Введите число');
readln(a);
writeln('Сумма: ', a, '+', 7, '=', a + 7)
end;
writeln('пока!');
end.
3) Пользователь вводит целые числа. Пока он не введёт число большее 15, в ответ на каждое введённое число выводите сумму этого числа и предыдущего введённого им числа, если же введённое число больше 15, то цикл необходимо завершить, не выводя в ответ сумму. Первое введенное пользователем число можно сложить с единицей.
var a, b : integer;
begin
a := 1; //"первое предыдущее"
while (a < 15) do
begin
b := a; //запоминаем предыдущее
writeln('Введите целое число');
readln(a);
if (a < 15) then
writeln('Сумма: ', b, '+', a, '=', b + a);
end;
writeln('пока!');
end.
4) Выведите на экран, все нечетные числа, делящиеся на 3 нацело, лежащие в диапазоне от 35 до 117.
var i : integer;
begin
i := 35;
while (i <= 117) do
begin
if (i mod 2 = 1) AND (i mod 3 = 0) then
writeln(i, ' ');
i := i + 1;
end;
end.
5) Выведите на экран, все четные числа от 35 до 117 и нечетные числа, лежащие в диапазоне от 45 до 99.
Указание: сначала можно решить задачу двумя циклами, но потом перепишите с использованием одного цикла, в теле которого составьте логическое выражение, описывающее подходящие числа (используйте логические операции).
var i : integer;
begin
i := 35;
while i <= 117 do
begin
if (i mod 2 = 0) or ( (i mod 2 = 1) and (i >= 45) and (i <= 99) ) then
writeln(i);
i := i + 1;
end;
end.
6) Пользователь вводит целые числа. Пока он не введёт число большее 15, в ответ на каждое введённое число выводите сумму этого числа и двух предыдущих введённых им чисел (предыдущего и пред-предыдущего), если же введённое число больше 15, то цикл необходимо завершить.В первом витке цикла все "предыдущие" числа можно считать единицами.
var i, a, b : integer;
begin
a := 1;
b := 1;
i := 1;
while (i <= 15) do
begin
writeln('Введите целое число');
readln(i);
if (i <= 15) then
begin
writeln('Сумма: ', i, '+', a, '+', b, '=', i + a + b);
b := a;
a := i;
end;
end;
writeln('пока!');
end.7) Пользователь вводит целые числа. Пока он не введёт число большее 15.Если очередное введенное число является чётным, то в ответ водите сумму этого числа и пред-предыдущего введённого пользователем числа, иначе просто запрашивать новое число. Если же введённое число больше 15, то цикл необходимо завершить.В первом витке цикла все "предыдущие" числа можно считать единицами.
var i, a, b : integer;
begin
a := 1;
b := 1;
i := 1;
while (i <= 15) do
begin
writeln('Введите целое число');
readln(i);
if (i <= 15) then
begin
if i mod 2 = 0 then
writeln('Сумма: ', i, '+', b, '=', i + b);
b := a;
a := i;
end;
end;
writeln('пока!');
end.8) Пользователь вводит целые числа, в ответ выводите символ #. Если введенное пользователем число равно 22, то завершите цикл не выводя ничего в ответ. Решите эту задачу 2-мя способами
С использованием if():
var i : integer;
begin
i := 1;
while i <> 22 do
begin
writeln('Введите целое число');
readln(i);
if i <> 22 then
writeln('#');
end;
end.
С использованием if() и break:
var i : integer;
begin
i := 1;
while i <> 22 do
begin
writeln('Введите целое число');
readln(i);
if i = 22 then
break;
writeln('#');
end;
end.
9) Пользователь вводит целые числа в цикле (разные: четные, нечетные, положительные, отрицательные в любом порядке и количестве). Считайте и выведите на экран значения первых трех отрицательных нечетных чисел. После чего завершите цикл.
var
n, //очередное вводимое число
i //кол-во уже подошедших по требованию чисел
: integer;
begin
i := 0;
while (i < 3) do
begin
writeln('Введите число');
readln(n);
if (n < 0) AND (n mod 2 <> 0) then
begin
writeln(n);
i := i + 1;
end;
end;
writeln('пока!');
readln();
end.
10) Пользователь вводит последовательно три произвольных целых числа. Заведите три переменных и сохраните эти числа в эти переменные. Пользовательский ввод обрабатывайте в цикле.
В решении:
- в одном витке цикла должен быть только 1 readln()
- не использовать "обмен" (т.е. не присваивать одной переменной значение другой)
var a, b, c, i : integer;
begin
i := 1;
while i <= 3 do
begin
writeln('Введите число');
if i = 1 then
readln(a)
else if i = 2 then
readln(b)
else
readln(c);
i := i + 1;
end;
writeln(a, ' ', b, ' ', c);
end.
11) Пользователь вводит целые числа в цикле (разные: четные, нечетные, положительные, отрицательные в любом порядке и количестве). Сохраните в переменные первые три отрицательных нечетных числа, сложите их, выведите сумму на экран и завершите цикл.
var a, b, c, n, i : integer;
begin
i := 0;
while (i < 3) do
begin
writeln('Введите число');
readln(n);
if (n < 0) AND (n mod 2 <> 0) then
begin
if i = 0 then
a := n
else if i = 1 then
b := n
else
c := n;
i := i + 1;
end;
end;
writeln('Сумма: ', a, '+', b, '+', c, '=', a + b + c);
writeln('пока!');
readln();
end.
12) Вывести на экран все числа от 4 до 100 с шагом 4. (при более оптимальном решении проверка через mod не потребуется)
var i : integer;
begin
i := 4;
while (i <= 100) do
begin
writeln(i);
i := i + 4;
end;
readln();
end.
13) Получите первую и последнюю цифры числа 15 с помощью операций div и mod (решается без цикла)
var a, //число 15
b, //1 число
c //последнее число
: integer;
begin
a := 15;
b := a div 10;
c := a mod 10;
writeln('Первая цифра: ', b);
writeln('Последняя цифра: ', c);
readln();
end.
14) Пользователь вводит целое 5-тизначное число, выведите все его цифры в обратном порядке, (используйте операции div и mod, подразумевается решение через цикл)
var n : integer;
begin
writeln('Введите пятизначное число');
readln(n);
while n <> 0 do
begin
write(n mod 10);
n := n div 10;
end;
readln;
end.
15) У вас есть число z=5. Пользователь вводит числа в цикле, если очередное введенное число больше или равно 15, то увеличивайте число z на 1 в ответ на каждое введенное число, а если меньше 15, то уменьшайте на 1. Цикл и программа должны завершиться, когда число z станет отрицательным.
var z, n : integer;
begin
z := 5;
while z >= 0 do
begin
writeln('Введите число');
readln(n);
if n >= 15 then
z := z + 1
else
z := z - 1;
writeln(z);
end;
writeln('пока!');
readln();
end.
16) У вас есть число z=5. Пользователь вводит числа в цикле, если хотя бы одно введенное число число было равно 77, то увеличивайте число z на 1 в ответ на каждое введенное число, до тех пор пока пользователь не введет число 55, если такое произойдет то в ответ на это и любое последующее число, уменьшайте z на 1.
Цикл и программа должны завершиться, когда число z станет отрицательным.
(в начале цикла, если первое введенное число не равно ни 55, ни 77, считаем, что мы должны увеличивать z на 1 пока не встретим 55 или 77, которые укажут на конкретные действия).
var z, input: integer;
rost: boolean;
begin
z := 5;
rost := true;
while z >= 0 do
begin
writeln('Введите число');
readln(input);
if input = 77 then
rost := true
else if input = 55 then
rost := false;
if rost then
z := z + 1
else
z := z - 1;
writeln('z = ', z);
end;
writeln('пока!');
readln;
end.
17) У вас есть число z=5. Пользователь вводит числа в цикле, если за последние 4 попытки ввода было хотя бы одно число больше или равно 15, то увеличивайте число z на 1 в ответ на каждое введенное число, а если такого числа не было, то уменьшайте на 1 в ответ на каждый ввод.
Цикл и программа должны завершиться, когда число z станет отрицательным.
var z, p, ch : integer;
begin
z := 5;
p := 0; //число попыток
while (z >= 0) do
begin
writeln('Введите число');
readln(ch);
if (ch >= 15) then
p := 4
else
if p > 0 then
p := p - 1;
if (p > 0) then
z := z + 1
else
z := z - 1;
writeln('z = ', z);
end;
end.
18) Модификация предыдущего условия
У вас есть число z=5. Пользователь вводит числа в цикле, если за последние 4 попытки ввода было хотя бы одно число больше или равно 15, то увеличивайте число z на 1 в ответ на каждое введенное число, а если такого числа не было, то уменьшайте на 1 в ответ на каждый ввод.
Цикл и программа должны завершиться, когда число z станет отрицательным либо когда значение z увеличивалось 7 раз подряд.
var z, p, ch, c : integer;
begin
z := 5;
p := 0; //число попыток
c := 0; //счетчик увелечений
while (z >= 0) AND (c < 7) do
begin
writeln('Введите число');
readln(ch);
if (ch >= 15) then
p := 4
else
if p > 0 then
p := p - 1;
if (p > 0) then
begin
z := z + 1;
c := c + 1;
end
else
z := z - 1;
c := 0;
writeln('z = ', z);
end;
writeln('пока!');
end.
- Log in to post comments
- 336 reads