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

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

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

> Нужно написать прогу по сортировке элементов побочной диагонали матрицы А по убыванию абсолютных значений, помогите пожалуйста очень нужна прога по этим заданиям
qiwi23
сообщение 16.05.2012 16:37
Сообщение #1





Группа: Пользователи
Сообщений: 1
Пол: Мужской

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


разработка в среде turbo pascal программы сортировки элементов побочной диагонали матрицы А по убыванию абсолютных значений.
1) расчет элементов квадратной матрицы А(n,n):
a(i,j)=(j^(1/i))+(i^(1/j))/((i*j)^(1/2));
2)вычисление элементов вектора Х(n):
х(i) - среднее арифметическое значение положительных элементов i-ой строки;
3)упорядочить элементы побочной диагонали матрицы А по убыванию абсолютных значений;
4)вычисление значения Y по заданной формуле:

у = max (x(i)/a(ii))
i=1,n

более подробно и более четко условия написаны в фотографии которая прикреплена в теме)


Эскизы прикрепленных изображений
Прикрепленное изображение
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
IUnknown
сообщение 2.08.2012 10:55
Сообщение #2


a.k.a. volvo877
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской

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


Главное замечание - задача решена неправильно. Выведи матрицу до сортировки побочной диагонали и после нее, и сравни.

До:
 2.00 2.71 3.58 4.50 5.45
2.41 2.12 2.25 2.42 2.60
2.73 1.97 1.92 1.97 2.03
3.00 1.90 1.77 1.77 1.79
3.24 1.86 1.69 1.65 1.66


После:
 2.00 2.41 2.12 1.97 1.90
2.71 2.73 2.25 1.92 1.77
3.58 3.00 2.42 1.86 1.69
4.50 3.24 1.97 1.77 1.65
5.45 2.60 2.03 1.79 1.66


Почему изменились значения элементов, не лежащих не побочной диагонали? Упорядочивание их не должно было затронуть. Вот этого вполне достаточно:


for i:=n-1 downto 1 do // Оно и так обойдет все элементы, не надо оборачивать еще одним циклом
for j:=2 to n do
if abs(matrix[n-j+1,j]) < abs(matrix[n-j+2,j-1]) then
begin
tmp:=matrix[n-j+1,j];
matrix[n-j+1,j]:=matrix[n-j+2,j-1];
matrix[n-j+2,j-1]:=tmp;
end;



Второе замечание - нет в Турбо-Паскале (а задача была именно для него) ни модуля Math, ни динамических массивов. А если уж берешься делать задачу там, где они есть - то доводи всё до конца: память надо освобождать, а не сваливать это на систему.

Сообщение отредактировано: IUnknown - 2.08.2012 10:56
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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


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

 



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