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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.10.2015, 19:51   #1
Nika_
 
Регистрация: 27.10.2015
Сообщений: 8
По умолчанию Упорядочить массив. Паскаль

Задание: Дана квадратная матрица порядка n(n=5). Упорядочить строки данной матрицы по возрастанию сумм элементов строк.
Условие: Нужно разбить задачу на подзадачи, таким образом, чтобы решение каждой подзадачи описывалось процедурой, а основная программа состояла бы из последовательности вызова процедур.
Вот что получилось:
Код:
Uses crt;
Const n=5;
type vect = array [1..n] of real;
       mass = array [1..n] of vect;
procedure Input (var a: mass);
Var i,j: byte;
Begin
     for i:= 1 to n do
      for j:= 1 to n do
      read (a[i,j]);
End;
procedure Output (const a: mass);
Var i,j: byte;
Begin
     for i:= 1 to n do
     begin
      for j:= 1 to n do
      write (a[i,j]:3:2, ' ');
      writeln;
     end;
End;
procedure Sum_str (var a: mass; var sum: vect);
Var  i,j: byte;
Begin
     for i:= 1 to n do
     begin
      sum[i]:=0;
      for j:= 1 to n do
      sum[i]:=sum[i]+a[i,j];
     end;
End;
procedure Change (var a: mass; const sum: vect);
Var i,j,k: byte;
      t: real;
Begin
     for i:= 1 to n-1 do
     k:=i;
      for j:= i+1 to n do
      begin
      if sum[j]<sum[k] then
      k:=j;
      end;
       Begin
       for j:= 1 to n do
        t:= a[i,j];
        a[i,j]:= a[k,j];
        a[k,j]:=t;
       end;
      
End;
Var b: mass;
    s: vect;
Begin
Clrscr;
     Input(b);
     Sum_str(b,s);
     Change(b,s);
     Output(b);
End.
Проблема в том, что сортировка получатся не при всех тестовых данных.

Последний раз редактировалось Nika_; 27.10.2015 в 20:15.
Nika_ вне форума Ответить с цитированием
Старый 27.10.2015, 19:58   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
t:= a[i,j];
a[i,j]:= a[k,j];
a[k,j]:=t;
А где перенос сумм? Ты исходный массив меняешь, а массив сумм так и остается. И вообще у тебя там с бегинами и эндами намуляно...
Код:
procedure Change (var a: mass; const sum: vect);
Var i,j,k: byte;
      t: real;
Begin
     for i:= 1 to n do begin
      for j:= i to n do begin
       if sum[j]<sum[i] then begin
       for k:= 1 to n do begin
        t:= a[i,k];
        a[i,k]:= a[j,k];
        a[j,k]:=t;
       end;
       t:=sum[i]; sum[i]:=sum[j]; sum[j]:=t;
      end;
    end;
  end;
end;
      
End;
Вот так вот я думаю.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.10.2015, 20:12   #3
Nika_
 
Регистрация: 27.10.2015
Сообщений: 8
По умолчанию

ошибку выдает
Изображения
Тип файла: jpg Безымянный.jpg (31.8 Кб, 150 просмотров)
Nika_ вне форума Ответить с цитированием
Старый 27.10.2015, 20:25   #4
Nika_
 
Регистрация: 27.10.2015
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А где перенос сумм? Ты исходный массив меняешь, а массив сумм так и остается. И вообще у тебя там с бегинами и эндами намуляно...
Код:
procedure Change (var a: mass; const sum: vect);
Var i,j,k: byte;
      t: real;
Begin
     for i:= 1 to n do begin
      for j:= i to n do begin
       if sum[j]<sum[i] then begin
       for k:= 1 to n do begin
        t:= a[i,k];
        a[i,k]:= a[j,k];
        a[j,k]:=t;
       end;
       t:=sum[i]; sum[i]:=sum[j]; sum[j]:=t;
      end;
    end;
  end;
end;
      
End;
Вот так вот я думаю.
разобралась,все нормально работает,спасибо огромное)))
Nika_ вне форума Ответить с цитированием
Старый 27.10.2015, 20:26   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну и славненько )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Упорядочить одномерный массив NadezdaM Visual C++ 2 25.12.2012 17:47
упорядочить массив С++ Arrioh Помощь студентам 5 04.04.2012 19:53
Упорядочить массив по невозрастанию! Cyber Помощь студентам 2 23.09.2010 09:31
как упорядочить массив?? siemdi Общие вопросы C/C++ 3 18.01.2010 00:51
Упорядочить массив в порядке возрастания и напечатать входной и исходный массив. TheVenny Помощь студентам 3 26.11.2008 15:06