|
|
Опции темы | Опции просмотра |
09.03.2013, 14:41 | #1 (permalink) |
Новичок
Регистрация: 09.03.2013
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Количество компонент матрицы совпадающих по абсолютному значению с максимумом
2. Записать в одномерный массив значения:-1, если сумма индексов максимальной по абсолютному значению компоненты матрицы m[n,k] является нечетным числом, и 1-если четным числом. Код:
Program zadanie; Uses crt; const digits=1; Type matrix = Array [1..10, 1..10] of real; massiv = Array [1..10] of Integer; Var m: matrix; max:real; v: massiv; imax,n, k, i, j, a, b,p1, p2, min,imin,s,t: 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; s:=0; For j:=1 To k Do For i:=1 To n Do Begin m[i,j]:=p2+random(p1+1); End; begin For i:=1 To n Do Begin For j:=1 To k Do Write (m[i,j]:6:digits); WriteLN; End; writeln; imax:=1; max:=m[i,j]; for i:=1 to N do for j:=1 to k do if max<abs(m[i,j]) then begin max:=abs(m[i,j]); imax:=i; imax:=j; end; writeln('Максимальное абсолютное значение: max=',max:5:digits); write('Индекс max '); For i:=1 to n do For j:=1 to k do If abs(m[i,j])=max Then Write('[',i,';',j,']'); end; end. |
09.03.2013, 14:41 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Интересующие вас ответы могут содержаться в этих темах Повредил компонент LED гирлянды, нужна помощь Найти количество нулей на С# Количество гласных букв в тексте |
09.03.2013, 17:24 | #2 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Да... программа работает, но она, если так можно выразиться, весьма далека от совершенства. Давайте разберем:
Код:
Uses crt; Код:
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; Код:
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; Код:
For j:=1 To k Do For i:=1 To n Do Begin m[i,j]:=p2+random(p1+1); End; Код:
End; begin For i:=1 To n Do Далее. Вот это: Код:
imax:=1; Код:
imax:=i; imax:=j; Код:
writeln; max:=m[i,j]; for i:=1 to N do for j:=1 to k do if max<abs(m[i,j]) then max:=abs(m[i,j]); writeln('Максимальное абсолютное значение: max=',max:5:digits) Код:
For i:=1 to n do For j:=1 to k do If abs(m[i,j])=max Then Write('[',i,';',j,']'); Код:
For i:=1 to n do For j:=1 to k do If abs(m[i,j])=max then begin Write('[',i,';',j,']'); s:=s+1; end; Writeln('Количество совпадений - ',s); Код:
Readln; Теперь по второй части задания (насчет одномерного массива). Там явно что-то пропущено, типа поиска локальных максимумов по строкам либо по столбцам матрицы. Иначе из чего же формировать массив? Уточните. |
09.03.2013, 18:03 | #3 (permalink) |
Новичок
Регистрация: 09.03.2013
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Vladimir_S спасибо, что уделили внимание моей теме. По поводу второго задания- это продолжение первого. Там одномерный массив сформировывается из максимальных по абсолютному значению компонентов матрицы. Для наглядности: допустим если наша матрица m[i,j] имеет пять максимумов с индексами [1,1],[1,3],[2,1],[2,3],[2,4] то одномерный массив должен выглядеть вот так v[i]=1 1 -1 -1 1
|
09.03.2013, 20:04 | #4 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
Тут так. В определении типов нужно поставить Код:
massiv = Array [1..100] of Integer; Код:
For i:=1 to n do For j:=1 to k do If abs(m[i,j])=max then begin Write('[',i,';',j,']'); s:=s+1; if ((i+j) mod 2)=0 then v[s]:=1 else v[s]:=-1; end; Writeln; Writeln('Количество совпадений - ',s); For i:=1 to s do write(v[i]:3); |
|
09.03.2013, 22:18 | #5 (permalink) |
Новичок
Регистрация: 09.03.2013
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Vladimir_S огромное человеческое СПАСИБО!!!
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|