![]() |
|
Модераторы: volvo877, Snowy, MetalFan |
![]()
|
|
| medic357 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 11.4.2009 Репутация: нет Всего: нет |
Массив
Найти суммы компонент целочисленной матрицы 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. Объясните, пожалуйста. Что я сделал не так. Помогите разобраться. писать можно [email protected] |
|||
|
||||
| ФедосеевПавел |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 7.2.2009 Репутация: 2 Всего: 10 |
А как собственно проявляется это "не так"? Но кое-что навскидку: 1. Перед вычислением (суммированием) массива v[i] стоит его обнулить
2. Заполнение матрицы m случайными значениями
3. Так как операции над каждым кадрантом однотипные, то можно создать одну процедуру, которая и будет их выполнять над нужным диапазоном индексов. |
||||
|
|||||
| medic357 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 11.4.2009 Репутация: нет Всего: нет |
большое человеческое спасибо
|
|||
|
||||
![]()
|
| Правила форума "Delphi" | |
|
|
Запрещается! 1. Обсуждать и делится взломанными компонентами или программным обеспечением 2. Публиковать ссылки на варез 3. Оффтопить
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |