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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.04.2010, 18:18   #1
Dema91
 
Регистрация: 14.04.2010
Сообщений: 6
По умолчанию Не могу понять где ошибка при сортировке строк!?

Само задание выглядит так: Дана вещественная матрица размером 7×4. Переставляя ее строки и столбцы добиться того, чтобы наибольший элемент (один из них) оказался в верхнем левом углу.

Прогу нужно написать с помощью подпрограм, без них все хорошо получилось, а вот когда написал процедуру сортировки столбцов, возникла проблема...
Код:
uses crt;
type massiv=array [1..100,1..100] of integer;
var
     mass:massiv;
     n,m:integer;
     
procedure vvod_mass (var x:massiv; a,b:integer);
var  i,j:integer;
begin
     for i:=1 to a do
       begin
        writeln;
         for j:=1 to b do
             begin
                  x[i,j]:=random(100)-30;
                  write(x[i,j]:5);
             end;
       end;
     writeln;
end;

procedure sort_strok (x:massiv; a,b:integer);
var i,j,k,q:integer;
begin
     for i:=1 to a do
       {  for j:=1 to (b-1) do}
             for k:=1 to (b-1) do
                 if x[i,k]<x[i,k+1] then
                    begin
                         q:=x[i,k];
                         x[i,k]:=x[i,k+1];
                         x[i,k+1]:=q;
                    end;
end;

procedure vyvod_mass (var x:massiv; a,b:integer);
var  i,j:integer;
begin
     for i:=1 to n do
       begin
        writeln;
         for j:=1 to m do
             begin
                 write(x[a,b]:5);
             end;
       end;
     writeln;
end;

begin
     writeln ('Введите размеры матрицы');
     write('n=');
     readln(n);
     write('m=');
     readln(m);
     writeln;
     writeln ('Данная матрица:');
     vvod_mass(mass,n,m);
     sort_strok(mass,n,m);
     vyvod_mass(mass,n,m);
end.
Прога еще не дописана...
Dema91 вне форума Ответить с цитированием
Старый 14.04.2010, 19:03   #2
IT-man
АльTRUEи$т
Форумчанин
 
Аватар для IT-man
 
Регистрация: 19.03.2009
Сообщений: 784
По умолчанию

найдено тут же и чуть подправлено под ваши реалии
Код:
//by Филантроп
{поменять местами столбцы 1 и последний }
for i:=1 to n do {n-количество строк}
begin {mat - исходная матрица}
tmp:=mat[i,1];{tmp - переменная того же типа что и элемент матрицы}
mat[i,1]:=mat[i,m];{m-номер столбца с которым меняем}
mat[i,m]:=tmp;
end;

{поменять местами строки 1 и последнюю}
for i:=1 to m do {m-количество столбцов}
begin {mat - исходная матрица}
tmp:=mat[1,i];{tmp - переменная того же типа что и элемент матрицы}
mat[1,i]:=mat[n,i];{n-номер строки с которой меняем }
mat[n,i]:=tmp;
end;
только для начала найдите индексы Максимального элемента матрицы
Цитата:
«Никто не войдет в Рай, имея хотя бы крупицу гордыни в своем сердце». «Аллах Красив и любит красоту. Гордыня означает отказ от истины и высокомерие»
IT-man вне форума Ответить с цитированием
Старый 15.04.2010, 19:50   #3
Dema91
 
Регистрация: 14.04.2010
Сообщений: 6
По умолчанию

А зачем индексы максимального элемента? их будем подставлять в место n и m? т.е. вот эти {n-номер строки с которой меняем } и {m-номер столбца с которым меняем}
Dema91 вне форума Ответить с цитированием
Старый 15.04.2010, 20:00   #4
Филантроп
Форумчанин
 
Аватар для Филантроп
 
Регистрация: 12.04.2010
Сообщений: 134
По умолчанию

Именно для этого они и нужны
кому нужна помощь! жду в аське и скайпе!
Филантроп вне форума Ответить с цитированием
Старый 15.04.2010, 20:04   #5
Dema91
 
Регистрация: 14.04.2010
Сообщений: 6
По умолчанию

И тута еще ошибку исправил:
Цитата:
Сообщение от Dema91 Посмотреть сообщение
Код:
procedure vyvod_mass (var x:massiv; a,b:integer);
var  i,j:integer;
begin
     for i:=1 to n do
       begin
        writeln;
         for j:=1 to m do
             begin
                 write(x[a,b]:5);
             end;
       end;
     writeln;
end;
write(x[a,b]:5) надо заменить на write(x[i,j]:5); сразу чет не заметил...
Dema91 вне форума Ответить с цитированием
Старый 15.04.2010, 20:05   #6
Dema91
 
Регистрация: 14.04.2010
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Филантроп Посмотреть сообщение
Именно для этого они и нужны
Спасибо, щас попробую...
Dema91 вне форума Ответить с цитированием
Старый 15.04.2010, 20:38   #7
Dema91
 
Регистрация: 14.04.2010
Сообщений: 6
По умолчанию

Неа, не катит... можете мою программу исправить?? Нужно чтобы все элементы в каждой строке были отсортированы по убыванию...
Dema91 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу понять где ошибка при сортировке строки!? Dema91 Помощь студентам 1 14.04.2010 20:11
Где ошибка в сортировке? vaan.sk Общие вопросы C/C++ 1 16.03.2010 23:33
Нужна Помошь: Не могу понять где ошибка CSS_Maker HTML и CSS 1 12.02.2010 00:02
Не могу понять, где утечка памяти (9 строчек) dueram Win Api 1 24.11.2009 19:56
Не могу понять где ошибка в коде SeRhy Общие вопросы C/C++ 5 20.09.2009 13:10