|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Разное - Ошибка с заменой компонент матрицы |
|
Разное - Ошибка с заменой компонент матрицы
|
Новый участник Сообщения: 3 |
Профиль | Отправить PM | Цитировать По условию: одномерный массив сформировывается из максимальных по абсолютному значению компонентов матрицы. Для наглядности: допустим если наша матрица m[i,j] имеет пять максимумов с индексами [1,1],[1,3],[2,1],[2,3],[2,4] то одномерный массив должен выглядеть вот так v[i]=1 1 -1 -1 1
Помогите с исправлением ошибки в подпрограмме procedure substitution_meaning_massif; Program zadanie; Uses crt; const digits=1; Type matrix = Array [1..10, 1..10] of real; massiv = Array [1..100] of Integer; Var m: matrix; tmp, max:real; v: massiv; s,imax,n,k: Integer; procedure input_matrix; var n,k,i,j,a,b,p1,p2: Integer; begin Write ('Введите количество строк матрицы n'); WriteLN (' не менее 2 и не более 10'); ReadLN (n); If (n<2) Or (n>10) Then Begin Write ('Вы ввели неправильное количество строк меньше 2 или'); Write (' больше 10, поэтому принят'); WriteLN (' максимальный размер, т.е. n=10'); n:=10; End; Write ('Введите количество столбцов матрицы k'); WriteLN (' не менее 2 и не более 10'); ReadLN (k); If (k<2) Or (k>10) Then Begin Write ('Вы ввели неправильное количество столбцов меньше 2 или'); Write (' больше 10, поэтому принят'); WriteLN (' максимальный размер, т.е. k=10'); k:=10; End; Write ('Введите левую а и правую b границы диапазона'); WriteLN (' значений компонент матрицы'); Write ('a='); ReadLN (a); Write ('b='); ReadLN (b); If a>b Then Begin p1:=a; a:=b; b:=p1; End; If a=b Then Begin p1:=0; p2:=b; End Else If b=0 Then Begin p1:=a; p2:=0; End Else Begin p1:=b-a; p2:=a; End; Randomize; For j:=1 To k Do begin For i:=1 To n Do Begin m[i,j]:=p2+random(p1+1); end end; end; procedure output_matrix; var i,j,n ,k: integer; begin writeln ('Исходная матрица'); For i:=1 To n Do begin For j:=1 To k Do begin Write (m[i,j]:6:digits) end; write(' '); writeln; end; End; procedure seach_abs_max; var i,j,n ,k: integer; begin imax:=1; max :=m[i,j]; for i:=1 to N do begin for j:=1 to k do begin if max<abs(m[i,j]) then begin max:=abs(m[i,j]); imax:=i; imax:=j; end; end; end; writeln('Максимальное абсолютное значение: max=',max:5:digits); end; procedure seach_quantum_abs_max; var i,j,n ,k: integer; begin For i:=1 to n do begin For j:=1 to k do begin If abs(m[i,j])=max then begin s:=s+1 end end end; Writeln('Количество совпадений max= ',s); end; procedure substitution_meaning_massif; var i,j,n ,k: integer; begin write('Одномерный массив'); if ((i+j) mod 2)=0 then begin v[s]:=1 end else begin v[s]:=-1 end; For i:=1 to s do begin write(v[i]:3) end; end; procedure output_regenerate_matrix; var i,j,n ,k: integer; begin Writeln; Write('Измененная матрица'); for i:= 1 to n do begin tmp:= m[1,i]; m[1,i]:= m[n,i]; m[n,i]:= tmp; end; for i:= 1 to n do begin writeln; for j:= 1 to k do begin write(m[i,j]:6:digits) end; end; end; begin input_matrix; output_matrix; seach_abs_max; seach_quantum_abs_max; substitution_meaning_massif; output_regenerate_matrix; END. |
|
Отправлено: 10:37, 18-03-2013 |
Ветеран Сообщения: 1810
|
Профиль | Отправить PM | Цитировать Пример абсолютно не понятен. Да и задание сформировать массив из максимальных элементов матрицы - тоже. Ежели матрица - это массив Array of real, как у Вас написано. Действительные числа отображаются в памяти компьютера только приближенно. Если вы сравниваете два действительных числа, вроде
if max<abs(m[i,j]) то и погрешность отображения этих чисел компьютером тоже должна учитываться. |
Отправлено: 13:52, 18-03-2013 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 6211
|
Профиль | Отправить PM | Цитировать Цитата XPEHOMETP:
Цитата:
Надо вводить Epsilon > 0, и считать равными m[i,j]) и max, если abs( abs( m[i,j]) ) - max ) < Epsilon. |
||
Отправлено: 23:01, 18-03-2013 | #3 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - Количество компонент матрицы совпадающих по абсолютному значению с максимумом | MAKS-I | Программирование и базы данных | 0 | 07-03-2013 20:34 | |
CMD/BAT - Копирование файла с заменой | Meloslavsky | Скриптовые языки администрирования Windows | 3 | 31-01-2013 11:39 | |
C/C++ - [решено] Нахождение обратной матрицы методом Гаусса и рассширенной матрицы | D.Y. | Программирование и базы данных | 64 | 06-05-2011 22:59 | |
Разное - Проблемы с заменой иконок | DimonV | Оформление Windows XP | 7 | 05-01-2009 18:50 | |
C/C++ | Матрицы | Kuron | Программирование и базы данных | 2 | 21-01-2007 10:09 |
|