Персональная страничка
| ||
Предыдущий раздел:
Следующий раздел:
1. Напишите заголовки следующих подпрограмм:
а) процедуры, имеющей один целочисленный параметр-значение и один вещественный параметр-переменную;
б) процедуры, имеющей два вещественных параметра-переменных;
в) функции, имеющей два целочисленных аргумента и принимающей вещественные значения.
2. Что выведет программа:
var
i: integer;
procedure Hello(n: integer);
var
i: integer;
begin
for i:=1 to n do
write('Hello_');
writeln;
end;
begin
Hello(5);
for i:=1 to 3 do
Hello(i-1);
Hello(3);
end.
3. Что выведет программа
var
a, b: integer; {Глобальные переменные}
procedure P1(a, b: integer);
begin
a:=a+1;
b:=2*b+1;
writeln(a-b);
end;
procedure P2(var a, b: integer);
begin
a:=a+1;
b:=2*b+1;
writeln(a-b);
end;
procedure P3(var a: integer; b: integer);
begin
a:=a+1;
b:=2*b+1;
writeln(a-b);
end;
procedure P4(a: integer; var b: integer);
begin
a:=a+1;
b:=2*b+1;
writeln(a-b);
end;
begin
a:=1;
b:=1;
P1(a, b);
P1(b, a);
P1(a, a);
P1(2*b, b-a);
P1(a+1, a-1);
P1(a+1, 5);
P1(0, 0);
P1(100, 100);
writeln(a, b);
P2(a, b);
P2(b, a);
P2(a, a);
P2(b, b);
writeln(a, b);
P3(a, b);
P3(b, a);
P3(a, a);
P3(b, b);
P3(a, a+1);
P3(b, a+1);
writeln(a, b);
P4(a, b);
P4(b, a);
P4(a, a);
P4(b, b);
P4(a+1, b);
writeln(a, b);
end.
4. Что выведет программа:
const
n = 5;
type
TIntArray = array [1..n] of integer;
var
x: TIntArray;
i, m: integer;
procedure P(var x: TIntArray; var m:integer);
var
i: integer;
begin
m:=1;
for i:=2 to n do
if x[i]>x[m] then
m:=i;
end;
begin
for i:=1 to n do
x[i]:=i mod 3;
for i:=1 to n do
begin
P(x, m);
x[m]:=0;
end;
for i:=1 to n do
writeln(x[i]);
end.
5. Что выведет программа:
const
n = 5;
type
TIntArray = array [1..n] of integer;
var
x, y: TIntArray;
i: integer;
procedure Fill(var x: TIntArray);
var
i: integer;
begin
for i:=1 to n do
x[i]:=i;
end;
procedure P(var x, y: TIntArray);
var
i: integer;
begin
for i:=1 to 5 do
begin
y[i]:=y[i]+1;
x[i]:=x[i]+y[n-i+1];
end;
end;
begin
Fill(x);
Fill(y);
P(x, y);
P(y, x);
for i:=1 to 5 do
writeln(x[i]);
end.
6. Что выведет программа:
const
n = 3;
type
TIntArray = array [-n..n] of integer;
var
x: TIntArray;
i: integer;
procedure P1(var a: TIntArray);
var
i, x: integer;
begin
x:=a[n];
for i:=n-1 downto 1 do
a[i+1]:=a[i];
a[1]:=x;
end;
procedure P2(var a: TIntArray);
var
i, x: integer;
begin
x:=a[n];
for i:=n-1 downto 1 do
a[i+1]:=a[i];
a[1]:=x;
end;
begin
for i:=-n to n do
x[i]:=i+n+1;
P1(x);
P2(x);
for i:=-n to n do
writeln(x[i]);
end.
7. Что выведет программа:
var
x, y, z: integer;
procedure Step(var x, y: integer);
begin
if x>y then
x:=x-y
else
y:=y-x;
end;
function Nod(x, y: integer): integer;
begin
while x<>y do
Step(x, y);
Nod:=x;
end;
begin
x:=9;
y:=27;
z:=3;
writeln(Nod(Nod(x, y), z));
end.
Следующий раздел:
Предыдущий раздел:
В 4 задании ошибка и опечатка:
ошибка — переменную m нужно еще ввести в глобальные переменные,
опечатка — массив в процедуре описан TIntAray с одной буквой r
В 6 задании две опечатки:
1-я — лишняя t в слове intetger,
2-я — массив в процедуре P2 описан array of integer, а должен был быть TIntArray
> В 4 задании ошибка и опечатка:
> ошибка — переменную m нужно еще ввести в глобальные переменные,
> опечатка — массив в процедуре описан TIntAray с одной буквой r
> В 6 задании две опечатки:
> 1-я — лишняя t в слове intetger,
Спасибо, исправил.
> 2-я — массив в процедуре P2 описан array of integer, а должен был быть TIntArray
Действительно, в PascalABC.net не работает. В старом Borland Pascal и Delphi работало, а тут не хочет.
array of integer — в старом Паскале был универсальный тип для любого массива.
Спасибо, тоже исправил.
В примере 6 процедуры P1 и P2 одинаковы.
Можно исключить P2, а в теле программы дважды вызвать P1.
Либо применит две процедуры, при этом P1 использовать для заполнения массива (в примере 5: procedure Fill).
Меньше путаницы в голове, если переменные в теле основной программы и в процедурах обозначать разными литерами. Например так:
Program K10_5; {RESULT?}
const
n = 5;
type
TIntArray = array [1..n] of integer;
var
a, b: TIntArray;
i: integer;
procedure Fill(var x: TIntArray);
var
i: integer;
begin
for i:=1 to n do
x[i]:=i;
end;
procedure P(var x, y: TIntArray);
var
i: integer;
begin
for i:=1 to 5 do
begin
y[i]:=y[i]+1;
x[i]:=x[i]+y[n-i+1];
end;
end;
begin
Fill(a);
Fill(b);
P(a, b);
P(b, a);
for i:=1 to 5 do
writeln(a[i], b[i]);
end.