Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль

Купить рекламу на форуме 15-35 тыс рублей в месяц

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.09.2007, 16:27   #1
Илья Кибель
Пользователь
 
Регистрация: 09.09.2007
Сообщений: 13
По умолчанию Вызов процедуры

Дана процедура:

procedure MultMatVecString(a:aType; b,c:bType);
var i,j:integer;
begin
for i:=Low(a) to High(a) do begin
c[i]:=0;
for j:=Low(c) to High(c) do
c[i]:=c[i]+a[i,j]*b[i]
end;
end;

При вызове по имени и формальным параметрам
MultMatVecString(n,u,a) прога виснет. Значения элементов вектора a не выводятся. Как правильно вызвать процедуру из тела программы?

Последний раз редактировалось Илья Кибель; 15.09.2007 в 16:30.
Илья Кибель вне форума Ответить с цитированием
Старый 15.09.2007, 20:16   #2
rubi
Пользователь
 
Регистрация: 01.09.2007
Сообщений: 35
По умолчанию

Попробуй сделать трассировку программы. Может какой нить цикл вызывает зависание. При пошаговом выполнении все увидишь
rubi вне форума Ответить с цитированием
Старый 15.09.2007, 21:25   #3
chingiz
Пользователь Подтвердите свой е-майл
 
Аватар для chingiz
 
Регистрация: 21.05.2007
Сообщений: 88
По умолчанию

Я не сталкивался в своей практике с такими процедурами, но думаю ошибка в for i:=Low(a) to High(a) do begin, т.к у тебя (а)-двухмерный массив, а функция Low(a) и High(a) возвращают минимальный и максимальный индекс массива (а), ну одномерного массива это понятно, а двухмерного как это ты себе представляешь?
Уже Чему-то научился Но этого мало
chingiz вне форума Ответить с цитированием
Старый 15.09.2007, 21:57   #4
Илья Кибель
Пользователь
 
Регистрация: 09.09.2007
Сообщений: 13
По умолчанию Вызов процедуры

Цитата:
Сообщение от chingiz Посмотреть сообщение
Я не сталкивался в своей практике с такими процедурами, но думаю ошибка в for i:=Low(a) to High(a) do begin, т.к у тебя (а)-двухмерный массив, а функция Low(a) и High(a) возвращают минимальный и максимальный индекс массива (а), ну одномерного массива это понятно, а двухмерного как это ты себе представляешь?
А как должен выглядеть цикл для двухмерного массива?
Илья Кибель вне форума Ответить с цитированием
Старый 15.09.2007, 23:38   #5
chingiz
Пользователь Подтвердите свой е-майл
 
Аватар для chingiz
 
Регистрация: 21.05.2007
Сообщений: 88
По умолчанию

Цитата:
Сообщение от Илья Кибель Посмотреть сообщение
А как должен выглядеть цикл для двухмерного массива?
Немного не понятно что ты хочешь сделать в этой процедуре?
Уже Чему-то научился Но этого мало
chingiz вне форума Ответить с цитированием
Старый 16.09.2007, 10:24   #6
Илья Кибель
Пользователь
 
Регистрация: 09.09.2007
Сообщений: 13
По умолчанию

Цитата:
Сообщение от chingiz Посмотреть сообщение
Немного не понятно что ты хочешь сделать в этой процедуре?
Процедура умножает матрицу на вектор-строку.
Илья Кибель вне форума Ответить с цитированием
Старый 16.09.2007, 18:13   #7
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

for i:=Low(a) to High(a) do begin

по идее принимает M*N значений, тогда идёт выход за границы массива c[i]:=0;
Carbon вне форума Ответить с цитированием
Старый 17.09.2007, 19:43   #8
chingiz
Пользователь Подтвердите свой е-майл
 
Аватар для chingiz
 
Регистрация: 21.05.2007
Сообщений: 88
По умолчанию

Цитата:
Сообщение от Илья Кибель Посмотреть сообщение
Процедура умножает матрицу на вектор-строку.
К сожалению не помню как умножается матрица на вектор.
поэтому не могу сказать алгоритм, но в общем случае
Цикл с двухмерной матрицей a[i,j] можно задать следующим образом:

for K1:=1 to I do
for k2:=1 to J do
begin
...
end;
Уже Чему-то научился Но этого мало
chingiz вне форума Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вызов процедуры igbizon Общие вопросы Delphi 5 02.09.2008 10:44
Вызов процедуры Kashp Общие вопросы Delphi 4 31.03.2008 16:22
Вызов процедуры Stanislav Общие вопросы Delphi 9 22.11.2007 19:01
вызов процедуры из exe? Volkogriz Общие вопросы Delphi 9 16.11.2007 22:34
Вызов процедуры Monoflextor Общие вопросы Delphi 2 28.04.2007 17:32