Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 06.04.2015
Сообщений: 7
1

Определение макс и мин элементов в массивах в виде подпрограммы

06.04.2015, 19:40. Показов 1218. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Помогите, пожалуйста, вот с такой задачей:
Дано: массивы А1(N1,M1), A2(N2,M2), A3(N3,M3). Вычислить Х=Х1+Х2+Х3 и Y=Y1+Y2+Y3, где Х1,Х2,Х3 - минимальные элементы среди нечетных строк массивов А1,А2,А3 соответственно, а Y1,Y2,Y3 -максимальные элементы среди нечетных строк массивов А1,А2,А3 соответственно. Определение максимальных и минимальных элементов в нечетных строках массива оформить в виде подпрограммы.


Я как всегда пытаюсь что-то сделать, но не получается. Здесь фрагмент программы...не работает и без суммы элементов...Если можно переделайте всю программу от начала до конца. Заранее спасибо!

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
program p62;
type massiv = array [1..100,1..100] of integer;
 
procedure vvod (var n, m: integer; var x: massiv; Q: string);
var i, j: integer;
begin
writeln('Введите размеры массива ', Q);
readln(n,m);
writeln('Введите элементы массива, целые числа');
for i:=1 to n do
for j:=1 to m do
 begin
  write(Q,'[',i,',',j,']= ');
  readln(x[i,j]);
 end;
end;
 
procedure vivod (n, m: integer; x: massiv; Q: string);
var i,j: integer;
begin
writeln('массив ',Q);
for i:=1 to n do
 begin
  for j:=1 to m do
  write (x[i,j]:4);
  writeln
 end;
end;
 
procedure minmax (n,m: integer; x: massiv);
var i,j,min,max: integer;
begin
for i:=1 to n do
for j:=1 to m do
if (i mod 2<>0) then
min:=x[i,j];
if (x[i,j]>min) then
min:=x[i,j];
end;
begin
max:=x[i,j];
if (x[i,j]>min)then
max:=x[i,j];
 
var A1,A2,A3:massiv;
   n1,m1,n2,m2,n3,m3:integer;
begin
vvod(n1,m1,A1,'A1');
vvod(n2,m2,A2,'A2');
vvod(n3,m3,A3,'A3');
vivod(n1,m1,A1,'A1');
vivod(n2,m2,A2,'A2');
vivod(n3,m3,A3,'A3');
end;
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.04.2015, 19:40
Ответы с готовыми решениями:

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

Нужно найти мин, макс, и срзнач элементов функции
Вот есть функция: Нужно найти мин, макс, и срзнач элементов функции. Пробую через max(f(x))= Так...

Процедуры и функции. Найти макс\ мин значение элементов массива
Я не нашел на форуме эту программу в которой процедуры и функции использовались бы. Паскаль....

Убрать все символы, кроме массива и макс. мин. элементов
Есть программа, которая показывает элементы массива, а ниже минимальные и максимальные элементы...

6
0 / 0 / 0
Регистрация: 06.04.2015
Сообщений: 7
07.04.2015, 19:44  [ТС] 2
У кого есть свободное время, пожалуйста, посмотрите мою задачку... Вот я еще так пробовала написать подпрограммы про максимум и минимум:
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
procedure minimum(x:massiv;n,m:integer);
var i,j,min:integer;
begin
if (i mod 2<>0) then
     min:=x[1,1];
     for i:=1 to n do
         for j:=1 to m do
         begin
              if x[i,j]<min then
                 min:=x[i,j];
         end;
     writeln('минимальный: ', min);
end;
 
procedure maximum(x:massiv;n,m:integer);
var i,j,max:integer;
begin
if (i mod 2<>0) then
     max:=x[1,1];
     for i:=1 to n do
         for j:=1 to m do
         begin
              if x[i,j]>max then
                 max:=x[i,j];
         end;
     writeln('максимальный: ', max);
end;
0
3030 / 1916 / 1649
Регистрация: 30.04.2011
Сообщений: 3,060
07.04.2015, 20:14 3
Лучший ответ Сообщение было отмечено Juliee как решение

Решение

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
type
  matrix = array [1..100, 1..100] of integer;
 
procedure Create(var x: matrix; rows, cols: byte);
// создаем массив
var
  i, j: byte;
begin
  for i := 1 to rows do
    for j := 1 to cols do
      x[i, j] := Random(100)
end;
 
procedure Print(x: matrix; rows, cols: byte);
// вывод массива на экран
var
  i, j: byte;
begin
  for i := 1 to rows do
  begin
    for j := 1 to cols do
      Write(x[i, j]:3);
    WriteLn
  end
end;
 
function Maximum(x: matrix; rows, cols: byte): integer;
// максимум среди нечетных строк
var
  i, j: byte;
  max: integer;
begin
  max := -MAXINT - 1;
  for i := 1 to rows do
    if Odd(i) then
      for j := 1 to cols do
        if x[i, j] > max then
          max := x[i, j];
  Maximum := max
end;
 
function Minimum(x: matrix; rows, cols: byte): integer;
// минимум среди нечетных строк
var
  i, j: byte;
  min: integer;
begin
  min := MAXINT;
  for i := 1 to rows do
    if Odd(i) then
      for j := 1 to cols do
        if x[i, j] < min then
          min := x[i, j];
  Minimum := min
end;
 
var
  a1, a2, a3: matrix;
  n1, m1, n2, m2, n3, m3: byte;
  x, x1, x2, x3, y, y1, y2, y3: integer;
 
begin
  Write('Введите количество строк для массива A1: '); ReadLn(n1);
  Write('Введите количество столбцов для массива A1: '); ReadLn(m1);
  Write('Введите количество строк для массива A2: '); ReadLn(n2);
  Write('Введите количество столбцов для массива A2: '); ReadLn(m2);
  Write('Введите количество строк для массива A3: '); ReadLn(n3);
  Write('Введите количество столбцов для массива A3: '); ReadLn(m3);  
  WriteLn('Массив A1:');
  Create(a1, n1, m1);
  Print(a1, n1, m1);
  WriteLn('Массив A2:');
  Create(a2, n2, m2);
  Print(a2, n2, m2);
  WriteLn('Массив A3:');
  Create(a3, n3, m3);
  Print(a3, n3, m3);
  x := Minimum(a1, n1, m1) + Minimum(a2, n2, m2) + Minimum(a3, n3, m3);
  y := Maximum(a1, n1, m1) + Maximum(a2, n2, m2) + Maximum(a3, n3, m3);
  WriteLn('X = ', x, ';    Y = ', y)
end.
1
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
07.04.2015, 20:31 4
Лучший ответ Сообщение было отмечено Juliee как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
procedure minmax(x:massiv;n,m:integer;var min,max:integer);
var i,j:integer;
begin
min:=x[1,1];
max:=x[1,1];
for i:=1 to n do
if odd(i) then
if x[i,j]<min then min:=x[i,j]
else if x[i,j]>max then max:=x[i,j];
writeln('минимальный: ', min);
writeln('максимальный: ', max);
end;
1
0 / 0 / 0
Регистрация: 06.04.2015
Сообщений: 7
07.04.2015, 21:05  [ТС] 5
Kodzaev, а Вы не подскажите, пожалуйста, как вывести значения х1,х2,х3 и у1,у2,у3? Чтобы при выводе не сразу ответы их сумм были, а и и сами значения. Их вывод в алгоритм основной программы писать ?

Добавлено через 3 минуты
Все, разобралась!)
0
3030 / 1916 / 1649
Регистрация: 30.04.2011
Сообщений: 3,060
07.04.2015, 21:09 6
Цитата Сообщение от Juliee Посмотреть сообщение
Их вывод в алгоритм основной программы писать ?
Да, правильно. Я первоначально так и хотел сделать. Вот так можно подкорректировать немного:
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
type
  matrix = array [1..100, 1..100] of integer;
 
procedure Create(var x: matrix; rows, cols: byte);
// создаем массив
var
  i, j: byte;
begin
  for i := 1 to rows do
    for j := 1 to cols do
      x[i, j] := Random(100)
end;
 
procedure Print(x: matrix; rows, cols: byte);
// вывод массива на экран
var
  i, j: byte;
begin
  for i := 1 to rows do
  begin
    for j := 1 to cols do
      Write(x[i, j]:3);
    WriteLn
  end
end;
 
function Maximum(x: matrix; rows, cols: byte): integer;
// максимум среди нечетных строк
var
  i, j: byte;
  max: integer;
begin
  max := -MAXINT - 1;
  for i := 1 to rows do
    if Odd(i) then
      for j := 1 to cols do
        if x[i, j] > max then
          max := x[i, j];
  Maximum := max
end;
 
function Minimum(x: matrix; rows, cols: byte): integer;
// минимум среди нечетных строк
var
  i, j: byte;
  min: integer;
begin
  min := MAXINT;
  for i := 1 to rows do
    if Odd(i) then
      for j := 1 to cols do
        if x[i, j] < min then
          min := x[i, j];
  Minimum := min
end;
 
var
  a1, a2, a3: matrix;
  n1, m1, n2, m2, n3, m3: byte;
  x, x1, x2, x3, y, y1, y2, y3: integer;
 
begin
  Write('Введите количество строк для массива A1: '); ReadLn(n1);
  Write('Введите количество столбцов для массива A1: '); ReadLn(m1);
  Write('Введите количество строк для массива A2: '); ReadLn(n2);
  Write('Введите количество столбцов для массива A2: '); ReadLn(m2);
  Write('Введите количество строк для массива A3: '); ReadLn(n3);
  Write('Введите количество столбцов для массива A3: '); ReadLn(m3);  
  WriteLn('Массив A1:');
  Create(a1, n1, m1);
  Print(a1, n1, m1);
  WriteLn('Массив A2:');
  Create(a2, n2, m2);
  Print(a2, n2, m2);
  WriteLn('Массив A3:');
  Create(a3, n3, m3);
  Print(a3, n3, m3);
  x1 := Minimum(a1, n1, m1); x2 := Minimum(a2, n2, m2); x3 := Minimum(a3, n3, m3);
  y1 := Maximum(a1, n1, m1); y2 := Maximum(a2, n2, m2); y3 := Maximum(a3, n3, m3);
  WriteLn('X1 = ', x1, ';   X2 = ', x2, ';   X3 = ', x3);
  WriteLn('Y1 = ', y1, ';   Y2 = ', y2, ';   Y3 = ', y3);
  x := x1 + x2 + x3;
  y := y1 + y2 + y3;
  WriteLn('X = ', x, ';    Y = ', y)
end.
1
0 / 0 / 0
Регистрация: 06.04.2015
Сообщений: 7
07.04.2015, 21:14  [ТС] 7
Kodzaev, я додумалась и исправила так же) спасибо Вам огромное!
0
07.04.2015, 21:14
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.04.2015, 21:14
Помогаю со студенческими работами здесь

Возникает IndexOutOfRangeException при поиске мин/макс элементов массива
Код не упорядочен пока,но логических ошибок вроде нет. Он должен давать пользователю выбрать...

Найти мин элемент каждой строки и макс элемент столбцов, строку с макс суммой, строку с макс элем.
Массив 10х10 N=10 1) Минимальный элемент каждой строки 2) Максимальный элемент каждого столбца...

Не правильно выводит произведение элементов массива кратных 3-ем, между мин. и макс
Привет ребят,посмотрите почему у меня не правильно выводит произведение элементов массива кратных...

Как найти сумму чётных элементов, расположенных между макс. и мин. элементами?
Всем привет!!! Помогите решить задачу: в произвольном списке (к примеру, ) найти сумму четных...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru