Загрузил tkathenko1976

презентация к уроку информатики по теме программирование

реклама
Определите, при каком наименьшем введённом значении
переменной s программа выведет число 64.
var s, n: integer;
begin
readln (s);
n := 1;
while s < 51 do begin 1) в конце программы выводится значение
переменной n
s := s + 5;
2) начальное значение переменной n равно 1
n := n * 2
3) на каждой итерации цикла значение переменной n
увеличивается в 2 раза
end;
4)
поскольку 64 = 26, для того чтобы получить
writeln(n)
n=64, необходимо выполнить тело цикла 6 раз
end.
5) при каждой итерации цикла значение переменной s
увеличивается на 5, то есть после 6 итераций мы
получим s=s0+6*5=s0+30, где s0 – введённое начальное
значение s
6) цикл останавливается при условии s>=51, то есть
при s0+30>=51 или s0>=21
7)
Ответ: 21.
Var s, n, i: integer;
Begin
For i:= 1 to 1000 do
Begin
S:= i;
n := 1;
while s < 51 do begin
s := s + 5;
n := n * 2
end;
if n = 64 then writeln(i);
end;
end.
При каком наибольшем введенном числе d после
выполнения программы будет напечатано 55?
var n, s, d: integer;
begin
readln(d);
1)начальные значения переменных s и n равны нулю
n := 0;
2)шаг изменения переменной n равен 5, а шаг
s := 0;
изменения переменной s равен неизвестному
while s <= 365 do begin значению d
3)для того, чтобы значение n стало равно 55, нужно
s := s + d;
увеличить его на 5 (с нуля) ровно 11 раз, поэтому цикл
n := n + 5
выполнится ровно 11 раз
4)следовательно, s увеличится на d тоже 11 раз и
end;
станет равно 0 + 11·d = 11·d
write(n)
5)чтобы цикл остановился на 11-м шаге, нужно
end.
выполнить условие 11·d > 365, при этом он не должен
остановиться на 10-м шаге, то есть, 10·d <= 365,
поэтому получаем два неравенства:
11·d > 365; 10·d <= 365
d>33,2; d<= 36,5
6)d – целое число – ограничено отрезком [34; 36],
наибольшее из подходящих чисел равно 36
Получив на вход натуральное число x, этот алгоритм печатает два числа: a и b.
Укажите наименьшее натуральное число, при вводе которого алгоритм
печатает сначала 5, а потом 16.
var x, a, b: longint;
1)число разбивается на отдельные цифры в двенадцатеричной
begin
системе и на каждом шаге цикла отбрасывается последняя
readln(x);
цифра двенадцатеричной записи числа
2)если число нечётное, то последняя цифра добавляется к a,
a := 0; b := 1;
while x > 0 do begin если чётное – b умножается на эту цифру
if x mod 2 > 0 then 3) чётность числа равносильна чётности его последней цифры в
a := a + x mod 12 двенадцатеричной системе счисления
4) в переменной a окажется сумма всех нечётных цифр числа, а в
else
переменной b – произведение всех чётных цифр
b := b * (x mod 12); 5) a нечётно, это может быть сумма из одной цифры 5
x := x div 12;
6) b больше 12, это произведение может быть построено из двух
end;
или более чётных чисел;
writeln(a); write(b); 7)чтобы число было наименьшим, предположим, что чётных
цифр две; одну из них нужно взять минимально возможную, то
end.
есть, 16 = 2 · 8
8)таким образом, двенадцатеричная запись числа состоит из
цифр 2, 5 и 8, чтобы число было минимальным, расставим эти
цифры в порядке возрастания и переведём число в десятичную
систему: 25812 = 356.
var x, a, b, s: longint;
Begin
For x:= 1 to 1000 do
Begin
S:= x;
a := 0; b := 1;
while s > 0 do begin
if s mod 2 > 0 then
a := a + s mod 12
else
b := b * (s mod 12);
s := s div 12;
end;
If ( a=5) and (b=16) then writeln(x); end;
End.
356
389
629
640
752
772
818
Получив на вход число x, этот алгоритм печатает два числа: L и M. Укажите
наибольшее число x, при вводе которого алгоритм печатает сначала 4, а потом 5.
var x, L, M, Q: integer;
begin
readln(x);
Q := 9;
L := 0;
while x >= Q do begin
L := L + 1;
x := x - Q;
end;
M := x;
if M < L then begin
нам нужно определить наибольшее число,
M := L;
при котором частное и остаток равны 4 и 5;
L := x;
для получения именно большего числа нам
end;
нужно взять как частное наибольшее из
writeln(L);
двух заданных чисел то есть 5
writeln(M);
(соответственно, за остаток принять 4);
end.
поскольку делили на 9, искомое число
равно 5 *9 + 4 = 49
var x0, x, L, M, Q: integer;
begin
for x0:=1 to 1000 do begin
// readln(x);
x := x0;
Q := 9;
L := 0;
while x >= Q do begin
L := L + 1;
x := x - Q;
end;
M := x;
if M < L then begin
M := L;
L := x;
end;
// writeln(L);
// writeln(M);
if (L = 4) and (M = 5) then
writeln(x0);
end;
end.
1) при запуске программа выдаёт два числа – 41 и 49.
В файле содержится последовательность целых чисел. Элементы последовательности
могут принимать целые значения от −10 000 до 10 000 включительно. Определите и
запишите в ответе сначала количество пар элементов последовательности, в которых
хотя бы одно число делится на 3, затем максимальную из сумм элементов таких пар. В
данной задаче под парой подразумевается два идущих подряд элемента
последовательности. Например, для последовательности из пяти элементов: 6; 2; 9; –3;
6 — ответ: 4 11.
var x, y, count: longint; maxsum: longint; f: text;
begin
assign(f,'C:\17.txt');
reset(f);
readln(f, x);
maxsum := -20001;
count := 0;
while not eof(f) do begin
readln(f, y);
if (x mod 3 = 0) or (y mod 3 = 0) then begin
count := count + 1;
if x + y > maxsum then maxsum := x + y; end;
x := y;
end;
writeln(count, ' ', maxsum);
end.
Алгоритм вычисления значения функции F(n), где n — натуральное число, задан
следующими соотношениями:
F(1) = 1;
F(n) = n + F(n − 2), если n — нечётно, и n > 1;
F(n) = n × F(n − 1), если n — чётно.
Чему равно значение функции F(40)?
var n: longint;
function F(n: longint): longint;
begin
if n = 1
then F := 1
else if ((n mod 2) = 0)
then F := n * F(n - 1)
else if (((n mod 2) = 1) and (n > 1))
then F := n + F(n - 2);
end;
begin
n := F(40);
writeln(n);
end.
Результат работы программы — 16000.
Алгоритм вычисления значения функции F(n), где n — целое неотрицательное число,
задан следующими соотношениями:
F(0) = 0;
F(n) = F(n / 2), если n > 0 и при этом n чётно;
F(n) = 1 + F(n − 1), если n нечётно.
Назовите минимальное значение n, для которого F(n) = 12.
var n: longint;
i: integer;
function F(n: longint): longint;
begin
if n = 0
then F := 0
else if (((n mod 2) = 0) and (n > 0))
then F := F(n div 2)
else if ((n mod 2) > 0)
then F := 1 + F(n - 1);
end;
begin
i := 1;
while F(i) <> 12 do i := i + 1;
writeln(i);
end.
Результат работы программы — 4095.
Скачать