Составьте программу для решения задачи. Необходимо обклеить обоями стену длиной a м и шириной b м. Сколько будут стоить обои, если цена одного рулона k грн? Длина рулона обоев 10 м, а ширина 80 см.
if a > b (3 > 1): M = a (M = 3, условие сработало - эту ветку выполняем)
else: M = b (условие сработало - эту ветку пропускаем)
if c > b (2 > 1): M = c (M = 2, условие сработало - эту ветку выполняем)
else: M = b (условие сработало - эту ветку пропускаем)
M = 2
if c > M: M = c
a = 3, b = 1, c = 2
if a > b (3 > 1): M = a (M = 3)
else: M = b (условие сработало - эту ветку пропускаем)
if c > M (2 > 3): M = c (условие НЕ сработало - эту ветку пропускаем)
M = 3
Объяснение:
В первой программе сначала сравнивают первое и второе число и переменной М присваивают значение большего из них. Затем сравнивают второе и третье число и переменной М присваивают значение большего из них. Если первое и третье число больше второго числа, то программа выдаёт неверный результат.
Во второй программе сначала сравнивают первое и второе число и переменной М присваивают значение большего из них. Затем сравнивают третье число и переменную М и переменной М присваивают значение третьего числа, если оно больше. Программа выдаёт верный результат.
2. Но, поскольку считается, что школьникам больше заняться нечем, их заставляют писать примерно в таком стиле (и время займет, и ощибок понаделают):
// PascalABC.NET 3.1, сборка 1198 от 11.03.2016 const nn=100; var i,j,n,t:integer; a:array[1..nn] of integer; begin Write('n='); Read(n); Randomize; for i:=1 to n do begin a[i]:=Random(3); Write(a[i],' ') end; Writeln; for i:=1 to n-1 do for j:=1 to n-1 do if a[j]>a[j+1] then begin t:=a[j]; a[j]:=a[j+1]; a[j+1]:=t end; for i:=1 to n do Write(a[i],' '); Writeln; end.
a = 3, b = 1, c = 2
if a > b (3 > 1): M = a (M = 3, условие сработало - эту ветку выполняем)
else: M = b (условие сработало - эту ветку пропускаем)
if c > b (2 > 1): M = c (M = 2, условие сработало - эту ветку выполняем)
else: M = b (условие сработало - эту ветку пропускаем)
M = 2
if c > M: M = c
a = 3, b = 1, c = 2
if a > b (3 > 1): M = a (M = 3)
else: M = b (условие сработало - эту ветку пропускаем)
if c > M (2 > 3): M = c (условие НЕ сработало - эту ветку пропускаем)
M = 3
Объяснение:
В первой программе сначала сравнивают первое и второе число и переменной М присваивают значение большего из них. Затем сравнивают второе и третье число и переменной М присваивают значение большего из них. Если первое и третье число больше второго числа, то программа выдаёт неверный результат.
Во второй программе сначала сравнивают первое и второе число и переменной М присваивают значение большего из них. Затем сравнивают третье число и переменную М и переменной М присваивают значение третьего числа, если оно больше. Программа выдаёт верный результат.
// PascalABC.NET 3.1, сборка 1198 от 11.03.2016
begin
var a:=ArrRandom(ReadInteger('n='),0,2); a.Println;
a.Sorted.Println
end.
Тестовое решение:
n= 15
1 2 0 2 2 0 2 0 2 0 0 1 0 0 2
0 0 0 0 0 0 0 1 1 2 2 2 2 2 2
2. Но, поскольку считается, что школьникам больше заняться нечем, их заставляют писать примерно в таком стиле (и время займет, и ощибок понаделают):
// PascalABC.NET 3.1, сборка 1198 от 11.03.2016
const
nn=100;
var
i,j,n,t:integer;
a:array[1..nn] of integer;
begin
Write('n='); Read(n);
Randomize;
for i:=1 to n do begin
a[i]:=Random(3);
Write(a[i],' ')
end;
Writeln;
for i:=1 to n-1 do
for j:=1 to n-1 do
if a[j]>a[j+1] then begin
t:=a[j]; a[j]:=a[j+1]; a[j+1]:=t
end;
for i:=1 to n do Write(a[i],' ');
Writeln;
end.
Тестовое решение:
n=15
0 1 1 0 2 1 0 2 1 2 1 0 0 2 0
0 0 0 0 0 0 1 1 1 1 1 2 2 2 2