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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.12.2010, 17:15   #1
ДваДваВо7
Подтвердите свой е-майл
 
Регистрация: 15.10.2010
Сообщений: 29
По умолчанию Delphi. упорядочить столбцы матрицы по возрастанию сумм элементов этого столбца

Помогите найти ошибку в коде по условию данной задачи...
И пожалуйста скажите правильно ли написан код?

Пусть дана матрица А(n x m).Разработать программу,позволяющую
упорядочить столбцы матрицы по возрастанию сумм элементов этого столбца.

Код:
program Project1;

{$APPTYPE CONSOLE}

uses
SysUtils;

const m=4;
n=4;

type
massiv = array [1..m+1,1..n] of integer; 

var a:massiv;
i,j,x,b,u:integer;
flag:boolean;
begin
randomize; //Генератор случайных чисел
for I := 1 to m do //Заполнение матрицы случайными числами от -50 до 50
for j := 1 to n do
begin
a[i,j]:= random(100)-50;
end;
for i := 1 to m do //Вывод полученной матрицы на экран
begin
for j := 1 to n do
write(a[i,j]:5);
writeln;
end;
writeln;
x:=0;
for j := 1 to n do
begin
for I := 1 to m do
x:=x+a[i,j];//Подсчет сумм элементов столбцов и запись результата в последнюю строку массива
a[m+1,j]:=x;
x:=0;
end;
for I := 1 to n do //Вывод полученных значений
write(a[m+1,i]:5);
writeln;
i := 0;
repeat 
Flag := True; // обмена элементов не было
for j := 0 to n-i-1 do
// если текущий больше следующего 
if a[m+1,j] > a[m+1,j+1]
then // меняем их местами:
for b:=1 to m+1 do
begin
x := a[b,j];
a[b,j] :=a[b,j+1];
a[b,j+1] := x;
end;

Flag := False; // был обмен элементов
Inc(i);
// достигнут конец массива или обменов больше не было:
until (i >= n) or Flag;
writeln;
for i := 1 to m do //Вывод полученной матрицы на экран
begin
for j := 1 to n do
write(a[i,j]:5);
writeln;
end;
writeln;
for I := 1 to n do //Вывод полученных значений
write(a[m+1,i]:5);
writeln;
readln;
end.
ДваДваВо7 вне форума Ответить с цитированием
Старый 12.12.2010, 20:06   #2
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Код:
const
   m=4;
  n=4;
type
  massiv = array [1..m+1,1..n] of integer;
var
  a:massiv;
  i,j,x,b,u:integer;
  flag:boolean;
begin
  randomize; //Генератор случайных чисел
  for I := 1 to m do //Заполнение матрицы случайными числами от -50 до 50
  for j := 1 to n do
  begin
    a[i,j]:= random(100)-50;
  end;
  for i := 1 to m do //Вывод полученной матрицы на экран
  begin
    for j := 1 to n do
    write(a[i,j]:5);
    writeln;
  end;
  writeln;
  x:=0;
  for j := 1 to n do
  begin
    for I := 1 to m do
    x:=x+a[i,j];//Подсчет сумм элементов столбцов и запись результата в последнюю строку массива
    a[m+1,j]:=x;
    x:=0;
  end;
  for I := 1 to n do //Вывод полученных значений
  write(a[m+1,i]:5);
  writeln;
   repeat
     Flag:=False;
     for j := 1 to n-1 do
// если текущий больше следующего
     if a[m+1,j] > a[m+1,j+1] then // меняем их местами:
     for b:=1 to m+1 do
     begin
       x := a[b,j];
       a[b,j] :=a[b,j+1];
       a[b,j+1] := x;
       Flag:=True
     End;
  Until Not Flag;
  writeln;
  for i := 1 to m do //Вывод полученной матрицы на экран
  begin
    for j := 1 to n do
    write(a[i,j]:5);
    writeln;
  end;
  writeln;
  for I := 1 to n do //Вывод полученных значений
  write(a[m+1,i]:5);
  writeln;
  readln;
End.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Старый 09.02.2011, 16:40   #3
Genius-D
Новичок
Джуниор
 
Регистрация: 09.02.2011
Сообщений: 2
Счастье

Эмммм...такой вопрос : чтобы тоже самые операции производились, но только со строками...т.е упорядочить строки по возрастанию сумм элементов этих строк, код должен выглядеть так?
Код:
const

   m=4;

  n=4;

type

  massiv = array [1..m+1,1..n+1] of integer;

var

  a:massiv;

  i,j,x,b,u:integer;

  flag:boolean;

begin

  randomize; //Генератор случайных чисел

  for I := 1 to m do //Заполнение матрицы случайными числами от -50 до 50

  for j := 1 to n do

  begin

    a[i,j]:= random(100)-50;

  end;

  for i := 1 to m do //Вывод полученной матрицы на экран

  begin

    for j := 1 to n do

    write(a[i,j]:5);

    writeln;

  end;

  writeln;

  x:=0;

  for j := 1 to n do

  begin

    for I := 1 to m do

    x:=x+a[i,j];//Подсчет сумм элементов столбцов и запись результата в последнюю строку массива

    a[i,n+1]:=x;

    x:=0;

  end;

  for I := 1 to n do //Вывод полученных значений

  write(a[j,n+1]:5);

  writeln;

   repeat

     Flag:=False;

     for j := 1 to n-1 do

// если текущий больше следующего

     if a[i,n+1] > a[i+1,n+1] then // меняем их местами:

     for b:=1 to n+1 do

     begin

       x := a[i,b];

       a[i,b] :=a[i+1,b];

       a[j+1,b] := x;

       Flag:=True

     End;

  Until Not Flag;

  writeln;

  for i := 1 to n do //Вывод полученной матрицы на экран

  begin

    for j := 1 to n do

    write(a[i,j]:5);

    writeln;

  end;

  writeln;

  for j := 1 to n do //Вывод полученных значений

  write(a[j,m+1]:5);

  writeln;

  readln;

End.
Genius-D вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Упорядочить колонки матрицы по возрастанию wlll Помощь студентам 8 27.11.2010 09:06
Упорядочить колонки матрицы по возрастанию wlll Помощь студентам 2 25.11.2010 17:14
Упорядочить столбцы матрицы alexantonov Фриланс 7 15.10.2009 18:39
Переформировать матрицу - столбцы по возрастанию их последних элементов HoroHoro Паскаль, Turbo Pascal, PascalABC.NET 9 23.12.2008 19:20
В прямоугольной матрице переставить столбцы так, чтобы сумма элементов столбца росла от первого столбца Aleo13 Помощь студентам 5 15.10.2008 18:34