|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
Поиск максимального элемента и сортировка столбцов матрицы.
Помогите пожалуйста составить программу на Паскале с таким заданием:
Составить программу, предусматривающую чтение исходной матрицы с дискового файла. Переставить столбцы в порядке возрастания наибольших элементов. Чтение с матрицы с памяти компьютера я сделал, присвоив ей mas[i,j], теперь нужно в этой матрице mas[i,j] найти максимальный элемент в каждом столбце и переставить столбцы по возрастанию максимального элемента. На этом и застрял. Код:
program lab2; uses crt; const n=5; m=5; var mas: array[1..n,1..m] of integer; ft: text; i,j:integer; begin clrscr; assign(ft,'123.txt'); reset(ft); i:=1; while not seekeof(ft) do begin j:=1; while not seekeoln(ft) do begin read(ft, mas[i,j]); j:=j+1; end; readln(ft); i:=i+1; end; writeln; writeln('Ishodnaya matrica:'); writeln; for i:=1 to n do begin for j:=1 to m do write(' ',mas[i,j]); writeln; end; readkey; end. |
#2
|
|||
|
|||
Я делал на Delphi, на паскаль перевести думаю несложно будет.
Зря, как мне кажется ты использовал структуру типа: TMatrix=array of array of integer; Я делал так: Код:
type TRow=array of integer; //ЭТО наши столбцы, нам легче будет обмениваться столбцами TMatrix=array of TRow; //это наша матрица Остальной код: Код:
function LoadMatrix(FileName:string):TMatrix; var M:TMatrix; h,c,i,j,v:integer; begin AssignFile(input,filename); Reset(input); Readln(h); SetLength(M,h); for i:=0 to h-1 do begin Readln(c); SetLength(M[i],c); for j:=0 to c-1 do begin Readln(v); M[i][j]:=v; end; end; closefile(input); Result:=M; end; function Max(R:TRow):integer; //поиск максимального элемента var i:integer; best:integer; begin best:=0; for i:=0 to High(R) do if best<R[i] then best:=R[i]; Result:=best; end; procedure Sort(var M:TMatrix); //сортировка пузырьком var i:integer; Ex:TRow; stop:boolean; begin repeat stop:=true; for i:=0 to High(M)-1 do if max(M[i])>max(M[i+1]) then begin Ex:=M[i]; M[i]:=M[i+1]; M[i+1]:=Ex; stop:=false; break; end; until stop=true; end; Пример файла, матрица три на три: 3 3 7 8 9 3 4 5 6 3 1 2 3 |