GAECHKA
Твоя помощница в решении задач

Задачи с использованием подпрограмм

1. Дан произвольный одномерный массив A(N). Значения элементов массива сформировать случайным образом в диапазоне от -50 до +50. Определить номер элемента, который имеет наибольшее значение.
2. Дан произвольный двумерный массив B(N,M). Формирование элементов происходит вводом их с клавиатуры. Вычислить сумму нечетных элементов массива.
3. Дан произвольный двумерный массив A(N,N). Значения элементов массива сформировать случайным образом в диапазоне -25 до +40. Все диагональные элементы заменить суммой положительных элементов соответствующих строк.

Во всех задачах формирование массивов оформить отдельными процедурами. В заданиях 1-2 для обработки использовать функции. В 3 задаче - процедуру.

Заранее спасибо)
0
вопрос задан

Источник


1 ответ
Решение
Задание 1.

program Project1;
const
  maxelem = 25;
type
  TArr = array [1..maxelem] of integer;
 
procedure RandomInfInArray (var arr: TArr; narr,leftval,rightval: integer);
// Процедура для заполнения одномерного массива случайными числами.
var
   i: integer;
begin
for i:= 1 to narr do
  arr[i]:= leftval + random(rightval - leftval + 1) ;
 
end;
 
procedure InfOutMatrix (arr: TArr; narr: integer);
// Процедура для вывода элементов массива на экран.
var
   i: integer;
begin
  for i:= 1 to narr do
    begin
      Write(arr[i]:4);
      if i mod 10 = 0 then
        Writeln;
    end;
end;
 
function IndexMaxElementArray (arr: TArr; narr: integer): integer;
// Функция для нахождения индекса элемента с максимальным значением.
var
   i: integer;
   max: integer;
   ind: integer;
begin
  max:= - 2147483648;
  for i:= 1 to narr do
    if arr[i] > max then
      begin
        max:= arr[i];
        ind:= i;
    end;
  IndexMaxElementArray:= ind;
end;
 
 
var
  a:TArr;  // Переменная для хранения массива.
  n: integer;  // Переменные для хранения значения количества строк и столбцов.
begin
  Randomize;
  Write('Введите значение размерности матрицы: ');
  Readln(n);
  RandomInfInArray(a,n,-50,50);
  Writeln('Исходная матрица: ');
  InfOutMatrix(a,n);
  Writeln('Индекс элемента с максимальным значением: ',IndexMaxElementArray(a,n));
  Readln;
end.

Задание 2.

program Project1;
const
  maxelem = 25;
type
  TArr = array [1..maxelem,1..maxelem] of integer;
 
procedure InfInMatrix (var arr: TArr; narr,marr: integer);
// Процедура для ручного ввода значений элементов массива.
var
   i,j: integer;
begin
for i:= 1 to narr do
    for j:= 1 to marr do
      begin
        Write('Введите элемент ',i,' строки ',j,' столбца: ');
        Readln(arr[i,j]);
      end;
end;
 
procedure InfOutMatrix (arr: TArr; narr,marr: integer);
// Процедура для вывода элементов массива на экран.
var
   i,j: integer;
begin
  for i:= 1 to narr do
    begin
    for j:= 1 to marr do
      Write(arr[i,j]:4);
      Writeln;
    end;
end;
 
function SumOddElementMatrix (arr: TArr; narr,marr: integer): integer;
// Функция для вычисления суммы нечетных элементов массиа.
var
   i,j: integer;
   sum: integer;
begin
  sum:= 0;
  for i:= 1 to narr do
    for j:= 1 to marr do
      if odd(arr[i,j]) then
        sum:= sum + arr[i,j];
  SumOddElementMatrix:= sum;
end;
 
 
var
  a:TArr;  // Переменная для хранения массива.
  n,m: integer;  // Переменные для хранения значения количества строк и столбцов.
begin
  Write('Введите значение количества строк: ');
  Readln(n);
  Write('Введите значение количества столбцов: ');
  Readln(m);
  InfInMatrix(a,n,m);
  InfOutMatrix(a,n,m);
  Writeln('Сумма нечетных элементов массива: ', SumOddElementMatrix(a,n,m));
  Readln;
end.

Задание 3.

program Project1;
const
  maxelem = 25;
type
  TArr = array [1..maxelem,1..maxelem] of integer;
 
procedure RandomInfInMatrix (var arr: TArr; narr,marr,leftval,rightval: integer);
// Процедура для заполнения двумерного массива случайными числами.
var
   i,j: integer;
begin
for i:= 1 to narr do
    for j:= 1 to marr do
      arr[i,j]:= leftval + random(rightval - leftval + 1) ;
 
end;
 
procedure InfOutMatrix (arr: TArr; narr,marr: integer);
// Процедура для вывода элементов массива на экран.
var
   i,j: integer;
begin
  for i:= 1 to narr do
    begin
    for j:= 1 to marr do
      Write(arr[i,j]:4);
      Writeln;
    end;
end;
 
procedure SumToDiagonalElementMatrix (var arr: TArr; narr,marr: integer);
// Процедура для замены диагональных элементов суммами положительных элементов соответствующих строчек.
var
   i,j: integer;
   sum: integer;
begin
  for i:= 1 to narr do
    begin
      sum:= 0;
      for j:= 1 to marr do
        if arr[i,j] > 0 then
          sum:= sum + arr[i,j];
      arr[i,i]:= sum;
    end;
end;
 
 
var
  a:TArr;  // Переменная для хранения массива.
  n: integer;  // Переменные для хранения значения количества строк и столбцов.
begin
  Randomize;
  Write('Введите значение размерности матрицы: ');
  Readln(n);
  RandomInfInMatrix(a,n,n,-25,40);
  Writeln('Исходная матрица: ');
  InfOutMatrix(a,n,n);
  SumToDiagonalElementMatrix(a,n,n);
  Writeln('Измененная матрица: ');
  InfOutMatrix(a,n,n);
  Readln;
end.