• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Задача, Pascal, нужна помощь с решением

  • Автор темы Автор темы MAXI
  • Дата начала Дата начала

MAXI

Новые
Регистрация
22 Авг 2013
Сообщения
22
Реакции
0
Баллы
0
Задача, 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.
 
Код:
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.
 
Выдает ошибку: "неизвестное имя 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);
 ...
 
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.
 
Назад
Сверху