Задачи Урок 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
- 95 reads