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

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

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

> Произведение матриц
plafon
сообщение 18.05.2004 19:38
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 17

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


Помогите пожалуста


Произведение матриц.
Требуется написать программу, вычисляющую произведение матриц A и B. Как исходные матрицы A и B, так и результат (матрица C=AxB) находятся в текстовых файлах (это могут быть, например, файлы ‘Input.txt’ и ’Output.txt’). Формат файла ‘Input.txt’ следующий:
2 3
1 2 0
4 5 1
3 4
1 0 2 3
3 0 9 2
3 4 3 1
Здесь описаны две матрицы. В первой строке файла записано число строк и столбцов для первой матрицы, затем приводятся ее элементы. Далее (строки 4-7) описана вторая матрица. Аналогичный формат имеет выходной файл (одна матрица).
При объявлении типов файлов используйте указатель Text.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Алексей
сообщение 19.05.2004 7:06
Сообщение #2





Группа: Пользователи
Сообщений: 3

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


Приветик. Эта задача считает произведение матрицы на строку. Эта простенькая задача позволяет решить твою задачу. А вывод и чтение текстовых документов - всего лишь цикл. Думай...

Код

unitMain;

type
 TForm1 = class(TForm)
   StringGrid1: TStringGrid;
   StringGrid2: TStringGrid;
   StringGrid3: TStringGrid;
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
   function MyStrToInt (s: string): integer;
   procedure StringGrid1GetEditMask(Sender: TObject; ACol, ARow: Integer;
     var Value: String);
   procedure StringGrid2GetEditMask(Sender: TObject; ACol, ARow: Integer;
     var Value: String);
   procedure FormActivate(Sender: TObject);
   procedure StringGrid1SetEditText(Sender: TObject; ACol, ARow: Integer;
     const Value: String);
   procedure StringGrid2SetEditText(Sender: TObject; ACol, ARow: Integer;
     const Value: String);
 private
   { Private declarations }
 public
   { Public declarations }
 end;



procedure TForm1.Button1Click(Sender: TObject);
begin
 close;
end;

procedure TForm1.StringGrid1GetEditMask(Sender: TObject; ACol,
 ARow: Integer; var Value: String);
begin
 value:='0000;1; ';
end;

procedure TForm1.StringGrid2GetEditMask(Sender: TObject; ACol,
 ARow: Integer; var Value: String);
begin
 value :='00000;1; ';
end;

procedure TForm1.FormActivate(Sender: TObject);
var i,j: byte;
begin


 with stringgrid1 do
 for i:=0 to Colcount-1 do
   for j:=0 to RowCount-1 do cells[i,j]:='0';
 with stringGrid2 do
   for i:=0 to rowcount-1 do cells[0,i]:='0';

end;

function Tform1.MyStrToInt (s: string): integer;
var k,code: integer;
 begin
   while (s<>'') and (s[length(s)]=' ') do
     delete (s,length(s),1);
   if s<>'' then
     begin
       Val (s,k,code);
       if code=0 then MYSTRTOINT:=k else MyStrToInt:=0;
     end
       else MyStrToInt:=0;
 end;

procedure TForm1.StringGrid1SetEditText(Sender: TObject; ACol,
 ARow: Integer; const Value: String);
var i,j,sum: integer;
begin
 for j:=0 to stringGrid1.RowCount-1 do
 begin
   sum:=0;
   for i:=0 to StringGrid1.ColCount-1 do
     begin
       sum:=sum+mystrtoint (stringgrid1.cells[i,j])*mystrtoint (stringgrid2.cells[0,i]);
     end;
   stringgrid3.Cells[0,j]:=inttostr(sum);
 end;
end;

procedure TForm1.StringGrid2SetEditText(Sender: TObject; ACol,
 ARow: Integer; const Value: String);
var i,j,sum: integer;
begin
 for j:=0 to stringGrid1.RowCount-1 do
 begin
   sum:=0;
   for i:=0 to StringGrid1.ColCount-1 do
     begin
       sum:=sum+mystrtoint (stringgrid1.cells[i,j])*mystrtoint (stringgrid2.cells[0,i]);
     end;
   stringgrid3.Cells[0,j]:=inttostr(sum);
 end;
end;

end.




Пожалуйста, заключайте код в соответствующий тег! Oleg_Z

Сообщение отредактировано: Oleg_Z - 26.05.2004 6:39
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 



- Текстовая версия 3.08.2025 20:01
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"