|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Разное - [решено] Помогите с программой для Turbo Pascal (умножение матриц) |
|
|
Разное - [решено] Помогите с программой для Turbo Pascal (умножение матриц)
|
Новый участник Сообщения: 40 |
Профиль | Отправить PM | Цитировать ПОмогите пожалуйста составить программу для вычисения произведения матриц A,B,C каждая из которых имеет размерность nxn
ВОт составленная мною часть проги, где вводятся сами матрицы, проверьте пожалуйста program ABC; var matrA: array[1..500,1..500] of integer; matrB: array[1..500,1..500] of integer; matrC: array[1..500,1..500] of integer; i: integer; j: integer; begin for i:=1 to n do for j:=1 to n do begin read matrA[i,j]; end; begin read matrB[i,j]; end; begin read matrC[i,j]; end; |
|
Отправлено: 13:45, 01-10-2010 |
Misanthrope Сообщения: 474
|
Профиль | Отправить PM | Цитировать в принципе правильно, вот только нет ввода n и вместо оператора read лучше использовать readln imho, неплохо бы было выводить приглашение на ввод данных. размерность матриц лучше задавать через константу
ввод матриц я бы организовал процедурой p. s. используйте тег CODE |
------- Отправлено: 13:55, 01-10-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 40
|
Профиль | Отправить PM | Цитировать program ABC; var const R=500; matr1,matr2,matr3,matr4: array[1..R,1..R] of real; i,j,m,n,p,s,g: integer; S:real; Begin read (g) {размерность матрицы gxg} for i:=1 to g do for j:=1 to g do begin read(matr1[i,j]); end; for m:=1 to g do for n:=1 to g do begin read(matr2[m,n]); end; for p:=1 to g do for s:=1 to g do begin read(matr3[p,s]); end; D[i,j] := D[i,j] + (A[i,j]*B[j,i])*C[j,i]; Вот формула Значит матрицы мною заданны, как теперь задать их перемножение? |
Последний раз редактировалось dasha131, 01-10-2010 в 14:56. Отправлено: 14:02, 01-10-2010 | #3 |
Новый участник Сообщения: 40
|
Профиль | Отправить PM | Цитировать Сами матрицы точно правильно введутся?!
|
Отправлено: 18:19, 01-10-2010 | #4 |
Misanthrope Сообщения: 474
|
Профиль | Отправить PM | Цитировать Цитата dasha131:
|
||
------- Отправлено: 18:38, 01-10-2010 | #5 |
Новый участник Сообщения: 40
|
Профиль | Отправить PM | Цитировать Это не данная формула)) Значит моя ошибка(
МОжет поможете дальше с программой? |
Отправлено: 04:57, 02-10-2010 | #6 |
Необычный Сообщения: 4463
|
Профиль | Сайт | Отправить PM | Цитировать Цитата dasha131:
Цитата dasha131:
И вид общей формулы тут Результирующую матрицу получать в 2 этапа. Сначала 1*2, затем получившее*3; Процедуры и функции проходили? Они бы сейчас очень пригодились. |
||
------- Отправлено: 14:23, 02-10-2010 | #7 |
Новый участник Сообщения: 40
|
Профиль | Отправить PM | Цитировать 1.program AB; 2.const NMax = 10;{можно увеличить} 3.type Matrix = array [1..NMax, 1..NMax] of Real; 4.procedure MulMatrix(var a, b, c: Matrix; n: Integer); 5.var i, j, k: Integer; 6. s: Real; 7.begin 8. for i := 1 to n do 9. for j := 1 to n do 10. begin 11. s := 0; 12. for k := 1 to n do 13. s := s + a[i, k]*b[k, j]; 14. c[i, j] := s 15. end 16.end; 17.var a, b, c: Matrix; 18. i, j, n: Integer; 19.begin 20. WriteLn('Введите порядок матрицы'); 21. Write('n = '); ReadLn(n); 22. WriteLn('Введите первую матрицу'); 23. for i := 1 to n do 24. for j := 1 to n do 25. Read(a[i, j]); 26. WriteLn('Введите вторую матрицу'); 27. for i := 1 to n do 28. for j := 1 to n do 29. Read(b[i, j]); 30. MulMatrix(a, b, c, n); 31. for i := 1 to n do 32. begin 33. for j := 1 to n do 34. Write(c[i, j]:0:6, ' '); 35. WriteLn 36. end; 37. ReadLn 38.end. |
Отправлено: 15:51, 02-10-2010 | #8 |
Misanthrope Сообщения: 474
|
Профиль | Отправить PM | Цитировать Цитата dasha131:
Цитата dasha131:
Цитата dasha131:
Цитата dasha131:
|
||||
------- Отправлено: 19:55, 03-10-2010 | #9 |
Новый участник Сообщения: 40
|
Профиль | Отправить PM | Цитировать Цитата Hector:
А чтобы перемножать три матрицы, нужно новый цикл писать "MulMatrix(var c, d, e: Matrix; n: Integer)" ?? |
|
Отправлено: 07:30, 04-10-2010 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - Всё о TURBO PASCAL (обсуждение, помощь в написание программ, ошибки, Pascal ABC) | Loading | Программирование и базы данных | 41 | 20-05-2015 15:28 | |
Разное - [решено] Помогите плииз с программой для Turbo Pascal | dasha131 | Программирование и базы данных | 17 | 04-12-2010 14:06 | |
Прочие - Turbo Pascal 7 | Sniper | Программное обеспечение Windows | 30 | 01-12-2008 16:04 | |
Turbo Pascal, Помогите написать пару программ | kirillsp | Программирование и базы данных | 11 | 20-11-2006 23:34 | |
Borland Turbo Pascal 7.0 | Guest | Программирование и базы данных | 4 | 21-09-2004 18:44 |
|