Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 06.03.2009
Сообщений: 17

массив с подпрограммами

10.04.2009, 14:21. Показов 1069. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Массив

Найти суммы компонент целочисленной матрицы 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 может быть от двух до десяти.
В программе должен быть предусмотрен ввод пользователем количества строк и столбцов матрицы при исполнении программы.

Значения компонент матрицы следует задавать случайным образом в таком диапазоне, чтобы получаемые данные были не тривиальными, т.е. неочевидными, не лежащими на поверхности.

Отнюдь не с клавиатуры.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
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
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.04.2009, 14:21
Ответы с готовыми решениями:

Задания с подпрограммами
Помогите с 2мя заданиями: 1. Составить программу, использующую подпрограмму-функцию: Вычислить z=(v1+v2+v3)/3, где v1, v2, v3 – объем...

Задача с подпрограммами
Из массива удалить элемент, стоящий перед максимальным элементом, а затем вставить заданное число после каждого отрицательного элемента. ...

двумерные массивы с подпрограммами
Здравствуйте!Найдите,ПОЖАЛУЙСТА, ошибку!!!Задание значит такое: Даны 2 целочисленные матрицы разной размерности,заполненные...

4
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
11.04.2009, 12:13
До боли знакомый код, только зачем в него столько ошибок вставили?
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
Program pascal;
uses crt;
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
clrscr;
writeln('Введите размерность матрицы m[n,k]');
repeat
write('n= ');readln(n);
write('k= ');readln(k);
until(n>=2)and(n<=10)and(k>=2)and(k<=10);{проверяем правильность размеров}
writeln('Матрица M');
for i:=1 to n do
  begin
   for j:=1 to k do
     begin
      m[i,j]:=random(10)+10;{ввод случайных чисел из диапазона [10;19]}
      write(m[i,j]:4);
     end;
   writeln;
  end;
{разбивка по четвертям}
{1 четверть}
v[1]:=0; {обязательно обнулить начальное значение суммы}
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;
{начало остальных четвертей h-по вертикали g-по горизонтали}
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 четверть}
v[2]:=0;
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 четверть}
v[3]:=0;
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 четверть}
v[4]:=0;
for i:=h to n do
for j:=g 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:=g to k do m[i,j]:=0{здесь не от h, а от g}
else
for i:=h to n do
for j:=g to k do m[i,j]:=1;
writeln('Вектор V');
for i:=1 to 4 do
write(v[i],' ');
writeln;
l:=4;
max:=v[l];
for i:=4 downto 1 do{последний макс ищут с конца}
if v[i]>max then
  begin
   max:=v[i];
   l:=i;
  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]:4);
    writeln;
  end;
write('Нажмите Enter');
readln
end.
0
0 / 0 / 0
Регистрация: 06.03.2009
Сообщений: 17
11.04.2009, 12:38  [ТС]
Puporev Спасибо тебе огромное за столь подробное описание с указанием ошибок!!!
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
11.04.2009, 13:20
То же, с подпрограммами.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
Program pascal;
uses crt;
type matr=array[1..10,1..10] of integer;
     mas=array[1..4] of integer;
procedure Vvod(var x,y:byte;var mt:matr);
var i,j:byte;
begin
writeln('Введите размерность матрицы:');
repeat
write('Kol. strok= ');readln(x);
write('Kol.stolbcov=');readln(y);
until(x>=2)and(x<=10)and(y>=2)and(y<=10);
for i:=1 to x do
  begin
   for j:=1 to y do
     begin
      mt[i,j]:=random(10)+10;
      write(mt[i,j]:4);
     end;
   writeln;
  end;
end;
procedure Vyvod(x,y:byte;var mt:matr);
var i,j:byte;
begin
for i:=1 to x do
  begin
   for j:=1 to y do
   write(mt[i,j]:4);
   writeln;
  end;
end;
procedure Preobr(x,y:byte;var mt:matr;var ms:mas);
var i,j,h,g:byte;
begin
{разбивка по четвертям}
{1 четверть}
ms[1]:=0;
for i:=1 to x div 2 do
for j:=1 to y div 2 do
ms[1]:=ms[1]+mt[i,j];
if ms[1] mod 2 =0 then
for i:=1 to x div 2 do
for j:=1 to y div 2 do
mt[i,j]:=0 else
for i:=1 to x div 2 do
for j:=1 to y div 2 do
mt[i,j]:=1;
{начало остальных четвертей h-по вертикали g-по горизонтали}
if x mod 2 <> 0 then h:=x div 2+2
else h:=x div 2+1;
if y mod 2 <> 0 then g:=y div 2+2
else g:=y div 2+1;
{2 четверть}
ms[2]:=0;
for i:=1 to x div 2 do
for j:=g to y do
ms[2]:=ms[2]+mt[i,j];
if ms[2] mod 2 =0 then
for i:=1 to x div 2 do
for j:=g to y do mt[i,j]:=0
else
for i:=1 to x div 2 do
for j:=g to y do mt[i,j]:=1;
{3 четверть}
ms[3]:=0;
for i:=h to x do
for j:=1 to y div 2 do
ms[3]:=ms[3]+mt[i,j];
if ms[3] mod 2 =0 then
for i:=h to x do
for j:=1 to y div 2 do mt[i,j]:=0
else
for i:=h to x do
for j:=1 to y div 2 do mt[i,j]:=1;
{4 четверть}
ms[4]:=0;
for i:=h to x do
for j:=g to y do
ms[4]:=ms[4]+mt[i,j];
if ms[4] mod 2 =0 then
for i:=h to x do
for j:=g to y do mt[i,j]:=0
else
for i:=h to x do
for j:=g to y do mt[i,j]:=1;
end;
procedure MaxEl(ms:mas;var mx:integer;imx:byte);
var i:byte;
begin
imx:=4;
mx:=ms[imx];
for i:=4 downto 1 do
if ms[i]>mx then
  begin
   mx:=ms[i];
   imx:=i;
  end;
end;
procedure VyvVec(var ms:mas);
var i:byte;
begin
for i:=1 to 4 do
write(ms[i],' ');
writeln;
end;
Var m:matr;
    v:mas;
    n,k,l:byte;
    max:integer;
begin
clrscr;
writeln('Исходная матрица М:');
Vvod(n,k,m);
Preobr(n,k,m,v);
writeln('Вектор V');
VyvVec(v);
MaxEl(v,max,l);
writeln('Максимальный элемент Вектора V=',max);
writeln('Индекс максимального элемента=',l);
writeln('Преобразованная Матрица M');
Vyvod(n,k,m);
write('Нажмите Enter');
readln
end.
1
0 / 0 / 0
Регистрация: 06.03.2009
Сообщений: 17
11.04.2009, 14:48  [ТС]
Спасибо Puporev
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.04.2009, 14:48
Помогаю со студенческими работами здесь

Работа с подпрограммами - функциями
Составить программу вычисления значения выражения используя способы программирования с созданием функции пользователя. Вид выражения: ...

Разработать библиотечный модуль с подпрограммами
Разработать библиотечный модуль, содержащий следующие подпрограммы (процедуры или функции) для работы со строками: 1. Заменить в заданной...

Задачи на многомерные массивы и разработка программ с подпрограммами
Добрый день! Помогите пожалуйста решить следующие задачи: 1. Дана целочисленная матрица из N строк и M столбцов (1&lt;N&lt;=100,...

Срочно помогите с подпрограммами. Пожалуйста. Заранее благодарю.
1) Напишите программу, которая с помощью функции Chr выводит на экран кодовую таблицу ASCII. После задержки в 5 секунд очистить экран. 2)...

Найти максимальный элемент К-ого столбца. сделать с подпрограммами
Найти максимальный элемент К-ого столбца. сделать задачу с подпрограммами и вторая задача, тоже с подпрограммами нужно сделать найти...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru