IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Матрицы произвольной размерности, Гибкая подпрограмма для обработки матриц
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 10
Пол: Мужской

Репутация: -  0  +


Блин вообще воткнуть не могу как делать. Помогите плZZ с прогой,а то преподы съедят. Надо сделать гибкую подпрограмму для обработки матриц произвольного порядка с фиксированным базовым типом... Даны 2 квадратные матрицы разных порядков. Для каждой из матриц, если суммы элементов строк матрицы различны то транспонировать матрицу.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 13)
сообщение
Сообщение #2


Гость






Код
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...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 10
Пол: Мужской

Репутация: -  0  +


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


Не совсем.. Всё равно большое спасибо
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 10
Пол: Мужской

Репутация: -  0  +


Запарился писать эту прогу.... Помогите пожалуйста с конкретным решением этой задачи..Спасибо
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






Reza, а что именно не получается? Пример обработки матрицы любой размерности в отдельной процедуре я привел, найти сумму элементов строк, скорее всего, труда не составит; транспонирование матрицы можно найти в ФАКе. Так в чем проблема? Что, нужно написать за Вас ВСЮ программу?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Новичок
*

Группа: Пользователи
Сообщений: 10
Пол: Мужской

Репутация: -  0  +


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

Я начинающий, только 1 курс, мне сложно это всё скомпоновать,чтобы получилась рабочая программа unsure.gif ...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






А разобраться сможешь, в том что я сделал? ;) Тогда смотри...


Прикрепленные файлы
Прикрепленный файл  __REZA.PAS ( 1.62 килобайт ) Кол-во скачиваний: 297
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Новичок
*

Группа: Пользователи
Сообщений: 10
Пол: Мужской

Репутация: -  0  +


Цитата(volvo @ 3.03.05 14:05)
А разобраться сможешь, в том что я сделал?  ;) Тогда смотри...

Слушай мужик, спасибо! :thanks: Ты даже представить не можешь как ты мне помог! Я всё понял,только немного не догоню чё делает функция "ix"? Я думал в нашей стране нет людей, которые могут помоч, не требуя ничего взамен. Молодцы!!! Делаете доброе дело!! Огромный thanks & Respect!!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гость






Функция Ix преобразует "двумерные индексы" в "одномерные", т.к. для универсальности я пользуюсь именно одномерными массивами при работе с матрицами...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






не поможете с проблемкой? задание было таковым: составить матрицу размерностью 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

 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


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

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.



--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Бывалый
***

Группа: Пользователи
Сообщений: 179
Пол: Мужской

Репутация: -  1  +


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

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

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

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



--------------------
Доброго времени суток.
:nnn:
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Гость






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

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

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

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


Гость






спасибо большое
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 19.05.2024 17:25
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name