Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.12.2007, 13:17   #1
Ilius
Пользователь
 
Регистрация: 08.12.2007
Сообщений: 20
Вопрос

Не могу сделать в своей программе умножение одной процедурой. Погите пожалуста!
И проверте пожалуста остальные операции и скажите что не так очень надо!

Помогите хотябы с умножением, очень надо!
Вложения
Тип файла: rar matr.rar (43.4 Кб, 35 просмотров)

Последний раз редактировалось AlDelta; 10.12.2007 в 03:50.
Ilius вне форума Ответить с цитированием
Старый 09.12.2007, 23:22   #2
metamfetamin
Пользователь
 
Аватар для metamfetamin
 
Регистрация: 02.11.2007
Сообщений: 68
По умолчанию

Что на что надо умножить????
Есть только на паскале!!!!
Вложения
Тип файла: txt ymnogenie.txt (1.1 Кб, 150 просмотров)

Последний раз редактировалось metamfetamin; 09.12.2007 в 23:25.
metamfetamin вне форума Ответить с цитированием
Старый 10.12.2007, 14:10   #3
Ilius
Пользователь
 
Регистрация: 08.12.2007
Сообщений: 20
По умолчанию

Мне надо на Делфи перемножить две матрицы которые вводятся в StringGrid1 и 2 и вывести результат в StringGrid3.
Ilius вне форума Ответить с цитированием
Старый 10.12.2007, 14:45   #4
AlDelta
Реанимируюсь...
Участник клуба
 
Аватар для AlDelta
 
Регистрация: 19.07.2007
Сообщений: 1,445
По умолчанию

http://programmersforum.ru/showthrea...E0%F2%F0%E8%F6 пост №2.
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте.
Правила форума => Правила раздела => Для общего развития => Помощь студентам => Перед тем, как создавать тему, скачайте себе...
P.S.: форум не песочница (с)
название статьи на сайте MS: "Отмена принудительного отключения автоматического запуска в реестре Windows"
AlDelta вне форума Ответить с цитированием
Старый 10.12.2007, 19:22   #5
Ilius
Пользователь
 
Регистрация: 08.12.2007
Сообщений: 20
По умолчанию

Спосибо тебе AlDelta за алгоритм, но я не пойму вот что:
дана функция:
Код:
function TMatrix.Mult(Matrix: TMatrix): TMatrix;
var
  i, j, k: Word;
  TempData: TMatrixData;
begin
  if ColCount <> Matrix.RowCount then
    Error(SMultError, 1);
  SetLength(TempData, RowCount, Matrix.ColCount);
  for i := 0 to RowCount - 1 do
    for j := 0 to Matrix.ColCount - 1 do
    begin
      TempData[i, j] := 0;
      for k := 0 to ColCount - 1 do
        TempData[i, j] := TempData[i, j] + FData[i, k] * Matrix.FData[k, j]
    end;
  ChangeAndFree(TempData);
  Result := Self
end;
Как мне с помощью этой функции при нажатии кнопки результат выводился в StringGrid. Какая процедура нужна?
Ilius вне форума Ответить с цитированием
Старый 10.12.2007, 21:06   #6
AlDelta
Реанимируюсь...
Участник клуба
 
Аватар для AlDelta
 
Регистрация: 19.07.2007
Сообщений: 1,445
По умолчанию

Просто перебираешь в циклах ячейки StringGrid'a и присваиваешь им соответствующие элементы массива.

Обратится к ячейке: StringGrid1.Cells[i,j]
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте.
Правила форума => Правила раздела => Для общего развития => Помощь студентам => Перед тем, как создавать тему, скачайте себе...
P.S.: форум не песочница (с)
название статьи на сайте MS: "Отмена принудительного отключения автоматического запуска в реестре Windows"
AlDelta вне форума Ответить с цитированием
Старый 10.12.2007, 23:31   #7
Ilius
Пользователь
 
Регистрация: 08.12.2007
Сообщений: 20
По умолчанию

Зделал, но посмотрите что то мне кажется не то с умножением.
Вложения
Тип файла: rar matr.rar (24.3 Кб, 9 просмотров)

Последний раз редактировалось Ilius; 10.12.2007 в 23:51.
Ilius вне форума Ответить с цитированием
Старый 13.12.2007, 23:57   #8
Ilius
Пользователь
 
Регистрация: 08.12.2007
Сообщений: 20
По умолчанию

Код:
procedure TForm1.MultClick(Sender: TObject);
type
  TVector = array [1..100] of double;
  TMatrix = array [1..100] of TVector;
var
  i, j, k: integer;
  s: double;
  A, B, C: TMatrix;
begin
  for i := 0 to StringGrid1.ColCount - 1 do
  for j := 0 to StringGrid1.RowCount - 1 do
  begin
      a[i, j] := StrToInt(StringGrid1.Cells[i, j]);
      b[i, j] := StrToInt(StringGrid2.Cells[i, j]);
  end;
  FillChar( C, sizeof(C), 0);
  for i:= 0 to StringGrid1.ColCount - 1 do
  begin
    for j:= 0 to StringGrid1.ColCount - 1 do
    begin
      s:= 0;
      for k:= 0 to StringGrid1.ColCount - 1 do
      begin
       s:= s + A[i, k] * B[k, j];
      C[i, j] := s;
      end;
    end;
  end;
  for i := 0 to form2.StringGrid1.ColCount - 1 do
  for j := 0 to form2.StringGrid1.RowCount - 1 do
  begin
      form2.StringGrid1.Cells[i,j]:=floattostr(C[i, j]);
  end;
  with form2.StringGrid1 do
  begin
    colcount:=stringGrid1.ColCount;
    rowcount:=StringGrid2.RowCount;
  end;
  form2.Show;
  form1.Hide;
end;
Почему в этой функции в результате в StringGrid в первой строке всегда получается 0, а в других вообще левые числа?
Ilius вне форума Ответить с цитированием
Старый 14.12.2007, 07:34   #9
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Цитата:
a[i, j] := StrToInt(StringGrid1.Cells[i, j]);
b[i, j] := StrToInt(StringGrid2.Cells[i, j]);
В весь код не вникал, но если создаете нормальную (не транспорированную) матрицу из таблицы, то нужно писать
a[i, j] := StrToInt(StringGrid1.Cells[j, i]);
b[i, j] := StrToInt(StringGrid2.Cells[j, i]);
потому что если в матрице сначала указывается строка, а потом столбец , то в таблице наоборот.
puporev вне форума Ответить с цитированием
Старый 14.12.2007, 16:07   #10
Ilius
Пользователь
 
Регистрация: 08.12.2007
Сообщений: 20
По умолчанию

Всем спосибо! Очень помогли!
И последний вопрос есть ли такие процедуры(без дополнит. процедур и функций) для нахождения определителя и ранга матриц любого размера?
Заранее спасибо.
Ilius вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с матрицами в паскале Andris Помощь студентам 7 29.05.2009 21:56
Задачка с матрицами на С urgu_st Помощь студентам 4 02.11.2007 17:44
help!!! работа с матрицами Zagran Паскаль, Turbo Pascal, PascalABC.NET 4 08.01.2007 15:54
Поблема совместимости с вистой GN_ Общие вопросы Delphi 4 23.12.2006 21:43