Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.06.2010, 15:46   #1
DRAgon™
Форумчанин
 
Аватар для DRAgon™
 
Регистрация: 14.03.2010
Сообщений: 362
По умолчанию Сортировка

Не понимаю ,запускаю программку и пишет, что фактический параметр должен быть переменной. Как это исправить?Помогите пожалуйста
Код:

CONST   M=3; N=4;
TYPE		matritsa = array[1..M,1..N] of integer;
CONST  a   			: matritsa =	((2,6,4,2),
									   	 (9,1,8,3),
										 (5,7,3,8));
VAR	 i,j :Word;

PROCEDURE puziryok_2 (var mass:matritsa; M,N:integer);
VAR 	i,j, i1,j1, k :integer;
		c			 :Integer;
LABEL 	metka;
BEGIN
	i1:=M; j1:=N;
	for k:=1 to M*N-1 do begin
		for i:=1 to M do
			for j:=1 to N do begin
					if NOT ((i<i1)OR(i=i1)AND(j<j1)) then goto metka;
					if j<>N then
						if mass[i,j]<mass[i,j+1] then begin
							c:=mass[i,j];
							mass[i,j]:= mass[i,j+1];
							mass[i,j+1]:=c
						end{if};
					if (j=N)AND(i<>M) then
						if mass[i,j]<mass[i+1,1] then begin
							c:=mass[i,j];
							mass[i,j]:= mass[i+1,1];
							mass[i+1,1]:=c
						end{if}
			end{for j};
metka:if j1>1 	then j1:=j1-1
					else begin j1:=N; i1:=i1-1 end
	end{for k};
END;
BEGIN
	puziryok_2 (a,M,N);
  {Pаспечатываем отсоpтиpованный массив:}
	for i:=1 to M do begin
		for j:=1 to N do Write (a[i,j],' ');
		WriteLn
	end{for};
	ReadLn
END.
Чем больше моя слава, тем я больше тупею; и таково, несомненно, общее правило.(А.Эйнштейн)
DRAgon™ вне форума Ответить с цитированием
Старый 29.06.2010, 15:53   #2
ex.cluz
Участник клуба
 
Аватар для ex.cluz
 
Регистрация: 15.01.2010
Сообщений: 1,325
По умолчанию

Так у вас а объявлена как константа:
Цитата:
CONST a : matritsa = ((2,6,4,2),
(9,1,8,3),
(5,7,3,8));
А вы хотите, например, сделать так:
Цитата:
Write (a[i,j],' ');
Как же оно работать будет?
Константе нельзя присвоить какое-то другое значение, нежели чем при ее объявлении.

Меняйте тип а (сделайте 2-х мерным массивом) и радуйтесь жизни


Добавлено позже.
Чет не то написал (давно с паскалем не работал). Щас разберусь...


Вот эту строчку:
Код:
for j:=1 to N do Write (a[i,j],' ');
не понимаю. Зачем вам распечатывать массив из константы? Вам, насколько я понял, отсортированный надо.
Грибы - они разные. Один тебя накормит, другой тебе кино покажет...
Редактор журнала "
[ПРОграммист]"
Yan's Home Digital Lab

Последний раз редактировалось ex.cluz; 29.06.2010 в 16:03.
ex.cluz вне форума Ответить с цитированием
Старый 29.06.2010, 17:24   #3
DRAgon™
Форумчанин
 
Аватар для DRAgon™
 
Регистрация: 14.03.2010
Сообщений: 362
По умолчанию

Цитата:
Сообщение от ex.cluz Посмотреть сообщение
Так у вас а объявлена как константа:

А вы хотите, например, сделать так:

Как же оно работать будет?
Константе нельзя присвоить какое-то другое значение, нежели чем при ее объявлении.

Меняйте тип а (сделайте 2-х мерным массивом) и радуйтесь жизни


Добавлено позже.
Чет не то написал (давно с паскалем не работал). Щас разберусь...


Вот эту строчку:
Код:
for j:=1 to N do Write (a[i,j],' ');
не понимаю. Зачем вам распечатывать массив из константы? Вам, насколько я понял, отсортированный надо.
ну а как еще?
Чем больше моя слава, тем я больше тупею; и таково, несомненно, общее правило.(А.Эйнштейн)
DRAgon™ вне форума Ответить с цитированием
Старый 29.06.2010, 17:42   #4
ex.cluz
Участник клуба
 
Аватар для ex.cluz
 
Регистрация: 15.01.2010
Сообщений: 1,325
По умолчанию

Например, сделать puziryok_2 не процедурой, а функцией, которая возвращает тип matritsa. Вот результат этой функции и выводите на печать.
Грибы - они разные. Один тебя накормит, другой тебе кино покажет...
Редактор журнала "
[ПРОграммист]"
Yan's Home Digital Lab
ex.cluz вне форума Ответить с цитированием
Старый 29.06.2010, 18:12   #5
ROMA2PVT
ТАМБОВСКИЙ ВОЛК.
Участник клуба
 
Аватар для ROMA2PVT
 
Регистрация: 16.03.2010
Сообщений: 1,354
По умолчанию

Код:
Uses
   CRT;
const
  M = 3; N = 4;

type
  matritsa = array[1..M, 1..N] of integer;

const
  a: matritsa =               ((2, 6, 4, 2),
                                   (9, 1, 8, 3),
		        (5, 7, 3, 8));

var
  i, j: integer;
  kl:matritsa;

procedure puziryok_2(mass: matritsa; M, N: integer; Var rez:matritsa);
var
  i, j, i1, j1, k: integer;
  c: Integer;
label 	metka;
begin
  i1 := M;
  j1 := N;
  for k := 1 to M * N - 1 do
  begin
    for i := 1 to M do
      for j := 1 to N do
      begin
        if not ((i < i1) OR (i = i1) AND (j < j1)) then
          goto metka;
        if j <> N then
          if mass[i, j] < mass[i, j + 1] then
          begin
            c := mass[i, j];
            mass[i, j] := mass[i, j + 1];
            mass[i, j + 1] := c
          end{if};
        if (j = N) AND (i <> M) then
          if mass[i, j] < mass[i + 1, 1] then
          begin
            c := mass[i, j];
            mass[i, j] := mass[i + 1, 1];
            mass[i + 1, 1] := c
          end{if}
      end{for j};
    metka: if j1 > 1 then
      j1 := j1 - 1
    else
    begin
      j1 := N;
      i1 := i1 - 1
    end
  end;{for k};
  rez:=mass;
end;

begin
  Clrscr;
  puziryok_2(a, M, N, kl);
  {Pаспечатываем отсоpтиpованный массив:}{for};
  for i := 1 to M do
  begin
    for j := 1 to N do
      Write(kl[i, j], ' ');
    WriteLn
  end;
  ReadKey;
end.
Подправил.
にんじゃ
ROMA2PVT вне форума Ответить с цитированием
Старый 29.06.2010, 19:59   #6
DRAgon™
Форумчанин
 
Аватар для DRAgon™
 
Регистрация: 14.03.2010
Сообщений: 362
По умолчанию

Спасибо!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!
Чем больше моя слава, тем я больше тупею; и таково, несомненно, общее правило.(А.Эйнштейн)
DRAgon™ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка Шелла и Шейкер-сортировка AleksandrMakarov Паскаль, Turbo Pascal, PascalABC.NET 11 11.03.2012 12:18
паскаль,одномерный массив,сортировка вставка,сортировка убывания,от максимального до конца немозг Помощь студентам 11 06.02.2010 21:57
Сортировка методом линейного выбора и "быстрая" сортировка Карол Помощь студентам 4 27.09.2009 19:52
Сортировка файлов в Explorer vs сортировка в Delphi mutabor Общие вопросы Delphi 11 04.09.2009 14:32