|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
05.04.2009, 18:49 | #1 |
Регистрация: 13.03.2009
Сообщений: 6
|
Массив с подпрограммами
Найти суммы компонент целочисленной матрицы m[n,k] в ее четвертях и записать их в одномерный массив v[4]. Если количество строк и (или) столбцов матрицы нечетное, то при суммировании компоненты средних строк и (или) столбцов исключить.
Заменить значения компонент в четвертях матрицы m[n,k] на 1, если сумма соответствующей четверти окажется нечетной, и на 0, если сумма – четная. Найти максимальное значение компонент массива n[4]. Если максимумов в массиве несколько, то запомнить индекс последнего при переборе из максимумов. На экран вывести исходную матрицу m[n,k], массив n[4], измененную матрицу m[n,k], последнюю встречную максимальную компоненту с индексом. Над матрицей m[n,k], у которой количество строк n и столбцов k может быть от двух до десяти. В программе должен быть предусмотрен ввод пользователем количества строк и столбцов матрицы при исполнении программы. Значения компонент матрицы следует задавать случайным образом в таком диапазоне, чтобы получаемые данные были не тривиальными, т.е. неочевидными, не лежащими на поверхности. Отнюдь не с клавиатуры. Program pascal; Var m:array[1..10,1..10] of integer; v:array[1..4] of integer; n,k,i,j,h,g,max,l:integer; begin writeln('Введите размерность матрицы m[n,k]'); write('n= ');readln(n); write('k= ');readln(k); for i:=1 to n do for j:=1 to k do begin write('m[',i,',',j,']= '); readln(m[i,j]); end; writeln('Матрица M'); for i:=1 to n do begin for j:=1 to k do write(m[i,j],' '); writeln; end; {разбивка по четвертям} {1 четверть} for i:=1 to n div 2 do for j:=1 to k div 2 do v[1]:=v[1]+m[i,j]; if v[1] mod 2 =0 then for i:=1 to n div 2 do for j:=1 to k div 2 do m[i,j]:=0 else for i:=1 to n div 2 do for j:=1 to k div 2 do m[i,j]:=1; if n mod 2 <> 0 then h:=n div 2+2 else h:=n div 2+1; if k mod 2 <> 0 then g:=k div 2+2 else g:=k div 2+1; {2 четверть} for i:=1 to n div 2 do for j:=g to k do v[2]:=v[2]+m[i,j]; if v[2] mod 2 =0 then for i:=1 to n div 2 do for j:=g to k do m[i,j]:=0 else for i:=1 to n div 2 do for j:=g to k do m[i,j]:=1; {3 четверть} for i:=h to n do for j:=1 to k div 2 do v[3]:=v[3]+m[i,j]; if v[3] mod 2 =0 then for i:=h to n do for j:=1 to k div 2 do m[i,j]:=0 else for i:=h to n do for j:=1 to k div 2 do m[i,j]:=1; {4 четверть} for i:=h to n do for j:=h to k do v[4]:=v[4]+m[i,j]; if v[4] mod 2 =0 then for i:=h to n do for j:=h to k do m[i,j]:=0 else for i:=h to n do for j:=h to k do m[i,j]:=1; writeln('Вектор V'); l:=1; max:=v[l]; for i:=1 to 4 do begin write(v[i],' '); if max<v[i] then begin max:=v[i]; l:=i; end; end; writeln; writeln('Максимальный элемент Вектора V: ',max); writeln('Индекс максимального элемента: ',l); writeln('Преобразованная Матрица M'); for i:=1 to n do begin for j:=1 to k do write(m[i,j],' '); writeln; end; write('Нажмите Enter'); readln; end. Что я сделал не так. Помогите разобраться. Заранее всех благодарю за любую помощь! medic357@inbox.ru |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Массив | Walter | Помощь студентам | 3 | 02.01.2009 17:21 |
Массив | Hworang | Паскаль, Turbo Pascal, PascalABC.NET | 8 | 23.12.2008 22:50 |
Массив | юра 3 | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 23.12.2008 18:15 |
Упорядочить массив в порядке возрастания и напечатать входной и исходный массив. | TheVenny | Помощь студентам | 3 | 26.11.2008 15:06 |
Массив | Elizaveta | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 10.11.2008 02:35 |