Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Pascal

Выпуск № 44
от 11.04.2005, 00:10

Администратор:Калашников О.А.
В номере:Вопросов: 1, Ответов: 5


Вопрос № 19293: Помогите решить следующую задачу Преобразовать матрицу А[m,m], разделив элементы 1-го столбца на сумму положительных элементов 1-ой строки, элементы 2-го столбца на сумму положительных элементов 2-ой строки и т.д описание массива и пр...

Вопрос № 19293
Помогите решить следующую задачу
Преобразовать матрицу А[m,m], разделив элементы 1-го столбца на сумму
положительных элементов 1-ой строки, элементы 2-го столбца на сумму
положительных элементов 2-ой строки и т.д
описание массива и прочие мелочи писать не надо, меня конкретно интересует
само действие деление элементов 1 столбца на сумму положительных элементов 1
сторки и т.д. как это сделать
Отправлен: 06.04.2005, 00:03
Вопрос задал: ger (статус: Посетитель)
Всего ответов отправлено: 5

Отвечает: Полховский Александр Владимирович
Здравствуйте, ger!
Необходимо организовать несколько циклов:
1. перебор столбцов;
2. перебор элементов столбца;
3. перебор элементов строки с целью выщитывания делителя, состоящего только из положительных элементов. Легко и незаумно. Алгоритм снизу.

Приложение:

Ответ отправил: Полховский Александр Владимирович (статус: Студент)
Отправлен: 06.04.2005, 00:51

Отвечает: Master135
Здравствуйте, ger!
var Sum:array[1..m] of integer; //массив с сумой положит эл-тов кажд. строки
for i:=1 to m do
Sum[i]:=0;
for i:=1 to m do
begin
for j:=1 to m do
if A[i,j]>0 then Sum[m]:=Sum[m]+A[i,j];
for j:=1 to m do
A[j,i]:=A[j,i]/Sum[i];
end;
Ответ отправил: Master135 (статус: 4-ый класс)
Отправлен: 06.04.2005, 00:57

Отвечает: Malish
Здравствуйте, ger!
Создай дополнительный массив в m строк
заполняешь его:
for i:=0 to M do
Temp[i]:=0;
for i:=0 to M do
for j:=0 to M do
begin
if X[i,j]>0 then
Temp[i]:=Temp[i]+X[i,j];
end;
потом
for i:=0 to M do
for j:=0 to M do
begin
if Temp[i]<>0 then //Обязательно !!!! на 0 делить нельзя
Х[j,i]:=X[j,i]/Temp[i]
else
Х[i,j]:=0;
end;
Ответ отправил: Malish (статус: 8-ой класс)
Отправлен: 06.04.2005, 01:14

Отвечает: sir henry
Здравствуйте, ger!
Чтобы не париться с придумыванием своих функций, вот Вам уже готовый модуль:
http://delphi.mtu-net.ru/zip/hmatrixw.zip
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 06.04.2005, 07:08

Отвечает: Владислав
Здравствуйте, ger!
var i:integer; // номер столбца
j:integer; // номер в строке
for i:=1 to m do
begin
sum:=0;
for j=1 to m do
begin
if A[i,j]>0 then sum:=sum+A[i,j];
end;
for j=1 to m do
begin
A[j,i]:=A[j,i]/sum;
end;
end;
Это справедливо если A["номер строки", "номер столбца"]
Ответ отправил: Владислав (статус: Студент)
Отправлен: 08.04.2005, 09:05


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.


http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.pasplus
Отписаться

В избранное