Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.71/35: Рейтинг темы: голосов - 35, средняя оценка - 4.71
2 / 2 / 0
Регистрация: 22.05.2007
Сообщений: 44
1

Перемножение сцепленных матриц

17.10.2007, 17:52. Показов 7038. Ответов 31
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Короче такая задача: Даны матрицы A(n,k), B(k,m). Умножить матрицы.
Необходимо сделать тремя способами:
1. Исходные данные в TStringGrid (Для данной задачи 2 таких объекта: матрица1, матрица2 как я понял :confused: )
2. в TMemo
3. в txt файле

Я здесь прикрепил другую задачу с нужным оформлением, но нужно поменять программу, чтоб она работала как моё новое задание.

Я понимаю, задача вроде не простая, я даже не помню как в математике матрицы перемножать )

Но мож для кого покажется лёгкой и не отнимет много времени. Пожалста, помогите )
Вложения
Тип файла: rar Работа 4.rar (809.2 Кб, 54 просмотров)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.10.2007, 17:52
Ответы с готовыми решениями:

Перемножение матриц, умножение матриц на вектор, сложение матриц
Помогите пожалуйста написать программу, которая производит основные действия с матрицами...

Перемножение матриц
Не знаю как написать код с циклом так, чтобы 2 матрицы перемножались. Кто нибудь знает как это...

Перемножение матриц
Помогите пожалуйста с перемножение матриц m1 на m1, результирующая матрица res. Размеры матриц :...

Перемножение трехмерных матриц
помогите написать код по программированию в делфи. Даны две матрицы размером 3 на 3. найти их...

31
Супер-модератор
8783 / 2536 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
26.10.2007, 18:24 21
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от POPOV Посмотреть сообщение
А на билдере разве не теже объекты и методы ?
так блин, ты не можешь на делфях написать, ты думаешь переведешь с с++ сырцы
?
0
2 / 2 / 0
Регистрация: 22.05.2007
Сообщений: 44
26.10.2007, 21:04  [ТС] 22
не, не , не смогу конечно..
0
7 / 9 / 10
Регистрация: 22.08.2006
Сообщений: 378
26.10.2007, 21:47 23
из скрина с ошибкой видно что ты пытаешься перменной типа integer присвоить значение типа string (а если точнее - пустую строку)... имхо у тебя в каком-то edit-е не содежиться никакого значения и пытаешся присвоить это int-перменной

зы: дай полностью исходник твоей проги (кроме exe-шника)
0
2 / 2 / 0
Регистрация: 22.05.2007
Сообщений: 44
26.10.2007, 22:28  [ТС] 24
Воть, прикрепил архив с моей прогой на данной стадии выполнения и со всеми файлами...
Ток там и экзешник тоже, а то вдруг не запуститься
Вложения
Тип файла: rar Работа 4.rar (810.9 Кб, 41 просмотров)
0
7 / 9 / 10
Регистрация: 22.08.2006
Сообщений: 378
27.10.2007, 02:30 25
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
procedure TForm1.Button9Click(Sender: TObject);
var
a:array [1..10,1..10] of integer;
b:array [1..10,1..10] of integer;
i,j,i1,j1,k,k1,rez,l,i2,j2:integer;
str,s,s1:string;
begin
[color=green]str:='';
for i:=0 to memo1.Lines.Count-1 do str := str + trim(memo1.Lines.Strings[i]) + ' ';
S:=Memo2.Text;
S1:='';
for i:=0 to memo4.Lines.Count-1 do S1 := S1 + trim(memo4.Lines.Strings[i]) + ' ';
str := trim(str); S1 := trim(S1);[/color]
for i:=1 to strtoint(edit2.text) do
begin
for j:=1 to strtoint(edit2.text) do
begin
for i1:=1 to strtoint(edit6.Text) do
begin
for j1:=1 to strtoint(edit6.Text) do
begin
k:=pos(' ',str);
k1:=pos(' ',S1);
[color=green]if k>0 then a[i,j]:=StrToInt(copy(str,1,k-1)) else a[i,j]:=StrToInt(str);
if k1>0 then b[i1,j1]:=StrToInt(copy(S1,1,k1-1)) else b[i1,j1]:=StrToInt(S1);[/color]
rez:=a[i,j] * b[i1,j1];
delete(str,1,k);
delete(S1,1,k1);
end;
[color=red]//delete(str,1,2);
//delete(S1,1,2);[/color]
end;
Memo3.Clear;
For i2:=1 to strtoint(edit2.text) do
for i1:=1 to strtoint(edit6.text) do
begin
S:='';
for j2:=1 to strtoint(edit2.Text) do
for j1:=1 to strtoint(edit6.text) do
S:=S+inttostr(rez)+' ';
memo3.Lines.Add(s);
 
end;
end;
end;
end;
хммм... проблему с преобразованием в int нашел, но вот с алгоритмом умножения матриц я че-то нифига ваще непонял, помоему ты умножаешь их не так как надо (или я просто запутался...)
зы: посмотри здесь, там есть алгоритм умножения матриц на разных языках (включая delphi) и блок-схема
0
2 / 2 / 0
Регистрация: 22.05.2007
Сообщений: 44
27.10.2007, 11:36  [ТС] 26
Ну я понимаю, что не так как надо... Но дело втом что так как надо мне не посилам тем более.

Да кстати, за решение огромное спасибо, ток один вопросик: я например перемножаю 2 матрицы 2х2, в одной все элементы = 2, в другой = 3. Почему-то в результате выводится матрица размером 4х4 со всеми шестёрками. Вот почему матрица 4х4 ?
0
7 / 9 / 10
Регистрация: 22.08.2006
Сообщений: 378
27.10.2007, 13:48 27
Вот почему матрица 4х4 ?
так будет выводить матрицу 2х2:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
str := ''; for i:=1 to m do str := str + trim(memo1.Lines.Strings[i-1]) + ' ';
S1 := ''; for i:=1 to k do S1 := S1 + trim(memo4.Lines.Strings[i-1]) + ' ';
str := trim(str); S1 := trim(S1);
 
for j:=1 to strtoint(edit2.text) do begin
 for i:=1 to strtoint(edit2.text) do begin
  t := pos(' ', str);
  if t>0 then a[i,j] := StrToInt(copy(str, 1, t-1)) else a[i,j] := StrToInt(str);
  delete(str, 1, t);
 end;
end;
for j:=1 to strtoint(edit6.text) do begin
 for i:=1 to strtoint(edit6.text) do begin
  t := pos(' ', S1);
  if t>0 then b[i,j] := StrToInt(copy(S1, 1, t-1)) else b[i,j] := StrToInt(S1);
  delete(S1, 1, t);
 end;
end;
 
memo3.Clear;
for i:=1 to strtoint(edit2.text) do begin
 str := '';
 for j:=1 to strtoint(edit6.text) do begin
  c[i, j] := a[i, j] * b[j, i];
  str := str + inttostr(c[i, j]) + ' ';
 end;
 memo3.Lines.Add( trim(str) );
end;
0
2 / 2 / 0
Регистрация: 22.05.2007
Сообщений: 44
27.10.2007, 14:40  [ТС] 28
Не, с такой процедурой прога виснет при запуске..
Я имел ввиду что что ввожу 2 матрицы размером 2 на 2, а результат выдаёт размером 4 на 4, такого же быть не может
0
7 / 9 / 10
Регистрация: 22.08.2006
Сообщений: 378
27.10.2007, 14:59 29
Цитата Сообщение от POPOV Посмотреть сообщение
Не, с такой процедурой прога виснет при запуске..
Я имел ввиду что что ввожу 2 матрицы размером 2 на 2, а результат выдаёт размером 4 на 4, такого же быть не может
странно, у меня этот код работал
да кстати, насчет матрицы 4х4, я в прошлом своем посту немного ошибся и написал 4х4 вместо 2х2, у меня этот код выводил матрицу 2х2
0
2 / 2 / 0
Регистрация: 22.05.2007
Сообщений: 44
27.10.2007, 15:44  [ТС] 30
У тебя в коде используется ещё массив c[i, j], я его объявил как и все остальные, мож по другому надо было ?

И ещё, раз у тебя запустилась, можешь сюда весь код процедуры кинуть? А то ты мож чё начале менял, а в код у тебя не сначала..

Спасибо
0
7 / 9 / 10
Регистрация: 22.08.2006
Сообщений: 378
27.10.2007, 18:43 31
сорри, я там небольшую ошибку допустил, вообщем смотри в атаче
Вложения
Тип файла: rar 888.rar (5.8 Кб, 40 просмотров)
0
2 / 2 / 0
Регистрация: 22.05.2007
Сообщений: 44
27.10.2007, 19:24  [ТС] 32
О, большое спасибо!! Работает . Короче всё наверное , остальные вопросы задавать не буду, а то всех тут запарил уже ) Всем помогавшим СПАСИБО !
0
27.10.2007, 19:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.10.2007, 19:24
Помогаю со студенческими работами здесь

Перемножение квадратичных матриц
есть две матрицы со значениями: 1)x4,x3,x2 x3,x2,x x2,x,10 2)1,0,0 ...

где ошибка?перемножение матриц
Вот такой код есть,который выдает ошибку if (stringgrid2.ColCount<>StringGrid3.RowCount) then...

Перемножение матриц (обработка двумерных массивов)
Всем доброй ночи! Пропустил двумерные массивы , не понимаю как написать программу:cry: Прошу у вас...

Умножение сцепленных матриц
помогите с ошибками. Нужно перемножить две матрицы первая KxM и вторая MxL #include <iostream>...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
32
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru