Procedure sovp; var i, j, r, c: byte; ar: array[1..10, 1..10]of byte; s: array[1..4] of string; b: boolean; label l1; begin r := random(2, 3); l1: c := 1; b := false; for i := 1 to 10 do for j := 1 to 10 do begin ar[i, j] := random(0, 1); if(i < 5) then s[i] := ''; end; for i := 1 to 9 do begin for j := 1 to 10 do begin if(ar[i, j] <> ar[i + 1, j]) then b := true; end; if(b = false) then begin s[c] := i + ' строка совпалает с ' + (i + 1) + ' строкой'; c := c + 1; end; b := false; end; if(c <> r) then goto l1 else begin for var k := 1 to c do if(k<>c)then writeln(s[k]); for i := 1 to 10 do begin for j := 1 to 10 do write(ar[i, j], ' '); writeln; end; end; end; begin sovp; end.
var a,n,i,j,s:integer; begin writeln('Введите количество цифр в числе'); readln(n); for i:=1 to n do begin writeln('Введите ',i,' цифру из ',n); readln(a); for j:=1 to n-i do a:=a*10; s:=s+a; end; writeln('Натуральное число: ',s); end.
Тестовое решение
Введите количество цифр в числе 5 Введите 1 цифру из 5 9 Введите 2 цифру из 5 2 Введите 3 цифру из 5 7 Введите 4 цифру из 5 3 Введите 5 цифру из 5 1 Натуральное число: 92731
Решение №2 Если очень надо использовать массив (хотя на мой взгляд совсем не нужно)
//PascalABC.NET (версия 3.1, сборка 1198) var a,n,i,j,s:integer; mas:array[1..10]of integer; begin writeln('Введите количество цифр в числе'); readln(n); for i:=1 to n do begin writeln('Введите ',i,' цифру из ',n); readln(mas[i]); a:=mas[i]; for j:=1 to n-i do a:=a*10; s:=s+a; end; writeln('Натуральное число: ',s); end.
Тестовое решение
Введите количество цифр в числе 5 Введите 1 цифру из 5 5 Введите 2 цифру из 5 4 Введите 3 цифру из 5 3 Введите 4 цифру из 5 2 Введите 5 цифру из 5 2 Натуральное число: 54322
Для того, чтобы эта программа заработала надо добавить перед описанием процедуры F следующую строчку: procedure G(n: integer);forward; Так как в процедуре F есть вызов процедуры G описанной дальше по тексту программы. После исправления кода и запуска программы с F(12) получим 17 звездочек. По шагам это будет выглядеть так:
Вызов процедуры F и выполнение * n = 12 * n = 12 Вызов процедуры G и выполнение * n = 11 * n = 11 Вызов процедуры F и выполнение * n = 9 * n = 9 Вызов процедуры G и выполнение * n = 8 * n = 8 Вызов процедуры Fи выполнение * n = 6 * n = 6 Вызов процедуры G и выполнение * n = 5 * n = 5 Вызов процедуры F и выполнение * n = 3 * n = 3 Вызов процедуры G и выполнение * n = 2 * n = 2 Вызов процедуры F и выполнение * n = 0
var
i, j, r, c: byte;
ar: array[1..10, 1..10]of byte;
s: array[1..4] of string;
b: boolean;
label l1;
begin
r := random(2, 3);
l1:
c := 1;
b := false;
for i := 1 to 10 do
for j := 1 to 10 do
begin
ar[i, j] := random(0, 1);
if(i < 5) then s[i] := '';
end;
for i := 1 to 9 do
begin
for j := 1 to 10 do
begin
if(ar[i, j] <> ar[i + 1, j]) then b := true;
end;
if(b = false) then
begin
s[c] := i + ' строка совпалает с ' + (i + 1) + ' строкой';
c := c + 1;
end;
b := false;
end;
if(c <> r) then goto l1
else
begin
for var k := 1 to c do if(k<>c)then writeln(s[k]);
for i := 1 to 10 do
begin
for j := 1 to 10 do write(ar[i, j], ' ');
writeln;
end;
end;
end;
begin
sovp;
end.