Персональная страничка
| ||
Предыдущий раздел:
Следующий раздел:
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.