Помощь - Поиск - Пользователи - Календарь
Полная версия: Матрицы произвольной размерности
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Reza
Блин вообще воткнуть не могу как делать. Помогите плZZ с прогой,а то преподы съедят. Надо сделать гибкую подпрограмму для обработки матриц произвольного порядка с фиксированным базовым типом... Даны 2 квадратные матрицы разных порядков. Для каждой из матриц, если суммы элементов строк матрицы различны то транспонировать матрицу.
volvo
Код
type
 TType = Integer;
 arrType = array[0 .. pred(maxint div sizeof(TType))] of TType;

procedure proc(var ar; const n: integer);
 var a: arrType absolute ar;

 function ix(row, col: integer): integer;
   begin ix := pred(row) * n + pred(col) end;

 var i, j: integer;
 begin
   for i := 1 to n do
     for j := 1 to n do
       a[ ix(i, j) ] := random(20);
 end;

var
 arr: array[1 .. 5, 1 .. 5] of TType;
 i, j: integer;
begin
 proc(arr, 5);
 for i := 1 to 5 do
   begin
     for j := 1 to 5 do
       write(arr[i, j]: 6);
     writeln
   end;
end.


Идея понятна? Кстати, функции транспонирования матрицы выложены в FAQ...
Reza
Цитата(volvo @ 2.03.05 12:19)
Идея понятна? Кстати, функции транспонирования матрицы выложены в FAQ...


Не совсем.. Всё равно большое спасибо
Reza
Запарился писать эту прогу.... Помогите пожалуйста с конкретным решением этой задачи..Спасибо
volvo
Reza, а что именно не получается? Пример обработки матрицы любой размерности в отдельной процедуре я привел, найти сумму элементов строк, скорее всего, труда не составит; транспонирование матрицы можно найти в ФАКе. Так в чем проблема? Что, нужно написать за Вас ВСЮ программу?
Reza
Цитата(volvo @ 2.03.05 23:39)
Reza, а что именно не получается? Пример обработки матрицы любой размерности в отдельной процедуре я привел, найти сумму элементов строк, скорее всего, труда не составит; транспонирование матрицы можно найти в ФАКе. Так в чем проблема? Что, нужно написать за Вас ВСЮ программу?

Я начинающий, только 1 курс, мне сложно это всё скомпоновать,чтобы получилась рабочая программа unsure.gif ...
volvo
А разобраться сможешь, в том что я сделал? ;) Тогда смотри...
Reza
Цитата(volvo @ 3.03.05 14:05)
А разобраться сможешь, в том что я сделал?  ;) Тогда смотри...

Слушай мужик, спасибо! :thanks: Ты даже представить не можешь как ты мне помог! Я всё понял,только немного не догоню чё делает функция "ix"? Я думал в нашей стране нет людей, которые могут помоч, не требуя ничего взамен. Молодцы!!! Делаете доброе дело!! Огромный thanks & Respect!!!
volvo
Функция Ix преобразует "двумерные индексы" в "одномерные", т.к. для универсальности я пользуюсь именно одномерными массивами при работе с матрицами...
Guest
не поможете с проблемкой? задание было таковым: составить матрицу размерностью 7х8, вывести ее. Сформировать одномерный массив из сумм положительных элементов каждой строки матрицы. Вывести массив на экран.
Не могу найти где баг.
Program  matrica;
Uses Crt;
Var C : Аrray[1..7,1..8] of Integer;
M : Аrray[1..7] of Integer;
S, i, j : Integer;
Begin
Clrscr;
Randomize;
For i:=1 to 7
Do For j:=1 to 8
Do C[i,j]:=Random(4)-2;
Writeln(‘Матрица С’);
For i:=1 to 7
Do Begin
For j:=1 to 8
Do Write(C[i,j]:4,’ ‘);
Writeln;
End;
For i:=1 to 7
Do Begin
S:=0;
For j:=1 to 8
Do If C[i,j]>0
Then S:=S+C[i,j];
M[i]:=S;
End;
Writeln(‘Массив М’);
For i:=1 to 7
Do Writeln(M[i]);
Readkey;
End.


М
Пользуемся тегами code
klem4

klem4
Еще покороче можно :

uses crt;
var
c : array[1..7,1..8] of integer;
m : array[1..7] of integer;
s,i,j : integer;
begin

clrscr;

randomize;

for i := 1 to 7 do begin
writeln;
s := 0;
for j := 1 to 8 do begin
c[i,j] := random(4)-2;
if c[i,j] > 0 then s := s + c[i,j];
write(c[i,j]:3,' ');
end;

m[i] := s;
end;

writeln;

for i := 1 to 7 do writeln('i=',i,' m[',i,']=',m[i]);

readln
end.

Дож
Guest, в строке
For j:=1 to 8
Do If C[i,j]>0
Then S:=S+C[i,j];

Ты пробегаешься не по строке, а по столбцау.

(klem4, с твоим кодом не разбирался, но там вроде та же ошибка)

М
Ну если считать это ошибкой, то да, она там тоже есть ... lol.gif
klem4

volvo
Цитата(Дож @ 28.11.2005 20:24)
Ты пробегаешься не по строке, а по столбцау.

Ты действительно думаешь, что циклом по второму индексу матрицы мы пробегаем по СТОЛБЦУ?

a[1, 1] a[1, 2] a[1, 3] ... это - по столбцу?

Цитата(Правила Раздела)
8. Спрашивайте и отвечайте четко и по существу!!!
Ты решил, что правила уже НЕ ДЛЯ ТЕБЯ? Думать начнешь, прежде чем ответить? mad.gif
Guest
спасибо большое
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.