Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 15.06.2014, 12:36   #1 (permalink)
MAXI
Member
 
Регистрация: 22.08.2013
Сообщений: 22
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Задача, 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:36
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Вам хорошо было бы ознакомиться со схожими обсуждениями на нашем форуме

Нужна помощь с решением задачи на языке Паскаль
ООП в Delphi. Задача. Нужна помощь
Turbo Pascal. Нужна помощь
Нужна срочная помощь с программой на Pascal
Работа с файлами, Pascal, нужна помощь
Строки, Pascal. Нужна помощь

Старый 15.06.2014, 12:38   #2 (permalink)
MAXI
Member
 
Регистрация: 22.08.2013
Сообщений: 22
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Код:
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.
MAXI вне форума   Ответить с цитированием
Старый 15.06.2014, 13:47   #3 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от MAXI Посмотреть сообщение
Выдает ошибку: "неизвестное имя 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);
 ...
Vladimir_S вне форума   Ответить с цитированием
Старый 15.06.2014, 13:57   #4 (permalink)
Евгений
Member
 
Аватар для Евгений
 
Регистрация: 31.03.2010
Адрес: Тульская область
Сообщений: 1,309
Сказал(а) спасибо: 11
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 13090
По умолчанию

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.
Евгений вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




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

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.