Технический форум

Технический форум (http://www.tehnari.ru/)
-   Delphi, Kylix and Pascal (http://www.tehnari.ru/f43/)
-   -   Задача, Pascal, нужна помощь с решением (http://www.tehnari.ru/f43/t96970/)

MAXI 15.06.2014 12:36

Задача, Pascal, нужна помощь с решением
 
Pascal. Дан двумерный массив n x m. Упорядочить построчно элементы массива по возрастанию. Выдает ошибку: "неизвестное имя n".

Program Zadacha;
Var
a:array [1..n,1..m] of integer;
i,j,k,t,n,m:integer;
Begin
for i:=1 to n do
Begin
for j:=1 to m do
Begin
a[i,j]:=random(40)-20;
write(a[i,j]:4);
end;
writeln;
end;
writeln;
for j:=1 to n do
for i:=1 to n-1 do
for k:=1 to n-i do
if a[k,j>a[k+l,j]] then
Begin
t:=a[k,j];
a[k,j]:=a[k+l,j]:
a[k+l,j]:t;
end;
writeln('Rezultat:');
for i:=1 to n do
Begin
for j:=1 to n do
write(a[i,j]:4);
writeln;
end;
readln
end.

MAXI 15.06.2014 12:38

Код:

Program Zadacha;
Var
 a:array [1..n,1..m] of integer;
 i,j,k,t:integer;
Begin
 for i:=1 to n do
 Begin
  for j:=1 to m do
  Begin
  a[i,j]:=random(40)-20;
  write(a[i,j]:4);
  end;
  writeln;
 end;
 writeln;
 for j:=1 to n do
 for i:=1 to n-1 do
 for k:=1 to n-i do
 if a[k,j>a[k+l,j]] then
  Begin
  t:=a[k,j];
  a[k,j]:=a[k+l,j]:
  a[k+l,j]:t;
 end;
 writeln('Rezultat:');
 for i:=1 to n do
  Begin
  for j:=1 to n do
  write(a[i,j]:4);
  writeln;
  end;
  readln
end.


Vladimir_S 15.06.2014 13:47

Цитата:

Сообщение от MAXI (Сообщение 1040757)
Выдает ошибку: "неизвестное имя n".

Разумеется, выдает! Вы же вводите массив "a:array [1..n,1..m] of integer;" не определив предварительно эти самые n и m. Грубейшая ошибка!
Выход:

Вариант 1:
Если Вы знаете размерность массива, то ПЕРЕД разделом описания переменных соблаговолите эту размерность задать в виде констант, например:
Код:

Const
 n=15;
 m=8;

дальше - по тексту. Естественно, в списке переменных этих n и m уже быть не должно.

Вариант 2:
Если Вы хотите сделать программу более "универсальной", то задайте максимально возможные значения размеров массива. Например, так:
Код:

Const
 Nmax=50;
 Mmax=40;

Далее в разделе описания переменных пишем:
Код:

Var
 a:array [1..Nmax,1..Mmax] of integer;
 n,m:integer;
 ...

И начинаем программу с ввода реальных размеров, например, так:
Код:

Begin
 write('n= ');
 readln(n);
 write('m= ');
 readln(m);
 ...


Евгений 15.06.2014 13:57

const n=5;
m=6;
Var
a:array [1..n,1..m] of integer;
i,j,k,t:integer;
Begin
for i:=1 to n do
Begin
for j:=1 to m do
Begin
a[i,j]:=random(40)-20;
write(a[i,j]:4);
end;
writeln;
end;
writeln;
t:=1;
repeat
for i := 1 to m - 1 do
for j := 1 to m-i do
if a[t, j] > a[t,j+1] then begin
k:=a[t,j];
a[t,j]:=a[t,j+1];
a[t,j+1]:=k;
end;
Inc(t);
until t>n;
writeln('Rezultat:');
for i:=1 to n do
Begin
for j:=1 to m do
write(a[i,j]:4);
writeln;
end;
readln
end.


Часовой пояс GMT +4, время: 19:57.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.