Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.117.158.47] |
|
Сообщ.
#1
,
|
|
|
Здравствуйте! Помогите, пожалуйста. Нужно переформировать матрицу таким образом, чтобы ее столбцы располагались по возрастанию их последних элементов. Вот код:
type vecd=array of integer; matrd=array of vecd; Var a,b:matrd; rab,p:vecd; per,m,n,k,i,j,buf:integer; procedure input(m1:integer; n1:integer; var a1:matrd); var i,j:integer; begin for i:=0 to m1-1 do setlength(a1[i],n1); writeln('Введите исходную матрицу: '); for i:=0 to m1-1 do for j:=0 to n1-1 do read(a1[i,j]); readln; end; procedure output(var m1:integer; n1:integer; a1:matrd); var i,j:integer; begin for i:=0 to m1-1 do begin for j:=0 to n1-1 do write(a1[i,j]:4); writeln; end; end; Begin writeln('Введите размеры матрицы: '); write('m=');readln(m); write('n=');readln(n); setlength(a,m); for i:=0 to m-1 do setlength(a[i],n); setlength(b,n); for i:=0 to n-1 do setlength(b[i],m); setlength(p,n);setlength(rab,n); input(m,n,a); writeln('Данная матрица A: '); output(m,n,a); for i:=0 to m-1 do for j:=0 to n-1 do b[j,i]:=a[i,j]; writeln('Транспонированная матрица A: '); output(n,m,b); for i:=0 to n-1 do p[i]:=b[i,m]; //Вся проблема в этой строчке writeln('Последний столбец транспонированной матрицы: '); for i:=0 to n-1 do write(p[i]:4); writeln; per:=0; for i:=0 to n-2 do for k:=i downto 0 do if p[k]>p[k+1] then begin buf:=p[k]; p[k]:=p[k+1]; p[k+1]:=buf; rab:=b[k]; b[k]:=b[k+1]; b[k+1]:=rab; inc(per); end; if per<>0 then begin writeln('Измененная транспонированная матрица: '); output(n,m,b); for i:=0 to n-1 do for j:=0 to m-1 do a[j,i]:=b[i,j]; writeln('Полученная матрица: '); output(m,n,a); end else writeln('Матрица не изменена.'); a:=nil; p:=nil; rab:=nil; b:=nil; readln; End. Откуда берутся числа - неизвестно. Получается, например, так: Введите размеры матрицы: m=3 n=2 Введите исходную матрицу: 4 5 6 7 8 9 Данная матрица A: 4 5 6 7 8 9 Транспонированная матрица A: 4 6 8 5 7 9 Последние элементы строк транспонированной матрицы: 26 22 Измененная транспонированная матрица: 5 7 9 4 6 8 Полученная матрица: 5 4 7 6 9 8 |
Сообщ.
#2
,
|
|
|
Сообщ.
#3
,
|
|
|
Der_Meister, это, конечно, замечательно, только С++ я не знаю вообще =(
|
Сообщ.
#4
,
|
|
|
http://www.google.com/search?client=opera&rls=en&q=%D1%81%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0+%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%8B+pascal&sourceid=opera&ie=utf-8&oe=utf-8
ссылка №1 |
Сообщ.
#5
,
|
|
|
Цитата for i:=0 to n-1 do p[i]:=b[i,m]; //Вся проблема в этой строчке for i:=0 to n-1 do p[i]:=b[i,m-1]; //Вся проблема в этой строчке ЗЫ. Запустила с этим изменением. На указанном примере работает правильно. Печатает 8, 9 и матрица не изменена. |
Сообщ.
#6
,
|
|
|
Swetlana, спасибо Вам! Вот я глупая
|