Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.01.2020, 00:28   #1
alice.grape
Новичок
Джуниор
 
Регистрация: 14.01.2020
Сообщений: 2
По умолчанию (Pascal) Сформировать двумерный массив из целых чисел, записанный по столбцам, найти номер строки с наибольшим средним арифметическим значением

Код:
Uses
 CRT;
Const
 nmax=20;
 mmax=20;
var
 X:array[1..nmax,1..mmax] of integer;
 N,M,Count:integer;
 S,sum:real;
Begin
randomize;
FOR M:=  1 to mmax DO
begin
FOR N:= 1 to nmax DO
begin
   X[N,M]:=random(10)-3;
  write(X[N,M]:3);
 end;
writeln;
end;
writeln;
FOR N:=  1 to nmax DO
begin
sum:=0;
Count:=0;
FOR M:= 1 to mmax DO
if X[N,M]> X[N+1,M] then begin
FOR M:= 1 to mmax DO
  sum:=sum+X[N,M];
  S:= sum/mmax;end;end;

End.
alice.grape вне форума Ответить с цитированием
Старый 14.01.2020, 10:34   #2
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Вариант с использованием дополнительного массива

Код:
var
  a: array of array of integer;
  sred: array of real;
  i, j, n, max_sr: integer;
  max: real;
  s: string;

begin
  
  write('Введите размер массива (матрицы)...');
  readln(n);
  
  if n <= 0 then   
    writeln('Массив должен состоять больше чем из одного элемента!') else
  begin
    
    setlength(a, n); //инициализируем размер массива
    for i := 0 to n - 1 do 
      setlength(a[i], n); // инициализирум элемент каждой строки для столбца
    
    setlength(sred, n); //инициализируем массив со среднем арифметическим каждой строки массива a
    
    
    Randomize; //"встряхиваем" числовую "тарелку" рандомных чисел
    
    writeln('Заполненный рандомом массив: ');
    
    for i := 0 to n - 1 do
    begin
      sred[i] := 0; // обнуляем массив sred для корректного суммирования
      for j := 0 to n - 1 do
      begin
        a[i][j] := Random(150); //заполняем массив
        
        sred[i] := sred[i] + a[i][j]; //вычисляем среднее арифметическое массива А и записываем в массив sred
        
        write(a[i][j], ' ');// выводим массив А
      end;
      sred[i] := sred[i] / n; // присваиваем значение суммы элементов массива А деленное на общее количество элементов в строке
      writeln();
    end;
    
    writeln('');
    writeln('Ваш результат:');
    writeln('Сренднее арифметическое каждой строки...');
    
    
    s := '';
    
    
    max := sred[0];
    
    
    for i := 0 to n - 1 do    
    begin
      writeln('строка ', i + 1, ' = ', sred[i]);
      if sred[i] > max then 
      begin
        max_sr := i;
        max := sred[i];
      end;  
    end;
    
       
    
    for i := 0 to n - 1 do s := s + ' ' + a[max_sr][i];

    
    writeln('Столбец с максимальным средним арифметическим значением: ', max_sr + 1, ' строка: ', s);
    
    
    sred := nil;//освобождаем память массивов
    a := nil;
  end;
  
  writeln('Нажмите Enter');
  readln;
  
  
end.


либо второй вариант без дополнительного массива

Код:

var
  a: array of array of integer;
  sred, max: real;
  i, j, n, max_sr: integer;
  
  s: string;

begin
  
  write('Введите размер массива (матрицы)...');
  readln(n);
  
  if n <= 0 then   
    writeln('Массив должен состоять больше чем из одного элемента!') else
  begin
    
    setlength(a, n); //инициализируем размер массива
    for i := 0 to n - 1 do 
      setlength(a[i], n); // инициализирум элемент каждой строки для столбца
    
    
    
    
    Randomize; //"встряхиваем" числовую "тарелку" рандомных чисел
    
    writeln('Заполненный рандомом массив: ');
    
    for i := 0 to n - 1 do
    begin
      
      sred := 0; // обнуляем массив sred для корректного суммирования
      
      for j := 0 to n - 1 do
      begin
        a[i][j] := Random(150); //заполняем массив
        
        sred := sred + a[i][j]; //вычисляем среднее арифметическое массива А и записываем в массив sred
        
        write(a[i][j], ' ');// выводим массив А
      end;
      sred := sred / n; // присваиваем значение суммы элементов массива А деленное на общее количество элементов в строке
      WRITE('; sred[', sred, ']');
      writeln();
      
      
      if i = 0 then max := sred else       
      
      if (sred > max) then
      begin
        max_sr := i;
        max := sred;
      end;
      
      
    end;
    
    writeln('');
    writeln('Ваш результат:');
        
    
    s := '';
              
    for i := 0 to n - 1 do s := s + ' ' + a[max_sr][i];
    
    
    writeln('Столбец с максимальным средним арифметическим значением: ', max_sr + 1, ' строка: ', s);
    
    
    a := nil;
  end;
  
  writeln('Нажмите Enter');
  readln;
  
  
end.
from dark to light)

Последний раз редактировалось Алексей_2012; 14.01.2020 в 11:00.
Алексей_2012 вне форума Ответить с цитированием
Старый 14.01.2020, 21:36   #3
alice.grape
Новичок
Джуниор
 
Регистрация: 14.01.2020
Сообщений: 2
По умолчанию

Алексей_2012, вы сделали для одномерного(
alice.grape вне форума Ответить с цитированием
Старый 15.01.2020, 10:26   #4
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Код:
  a: array of array of integer;
в первой задаче используется доп массив одномерный для хранения суммы значения элементов массива, деленное на общее количество элементов, т.е. для среднего арифметического!

МАССИВ а - ДВУМЕРНЫЙ ДИНАМИЧЕСКИЙ МАССИВ!
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Pascal] Сформировать новый одномерный массив, в котором элементы массива, стоящие на позиции кратной трем, будут заменены средним арифметическим значением этих элементов Dianam Паскаль, Turbo Pascal, PascalABC.NET 1 25.12.2016 09:12
Сделать блок-схему: ана матрица целых чисел C размером 10х10. Найти номер строки и сумму элементов строки с минимальным mari999 Помощь студентам 0 13.01.2015 20:18
Сформировать двумерный массив целых чисел Obe1 Паскаль, Turbo Pascal, PascalABC.NET 0 27.05.2013 17:57
дан массив целых чисел.Найти номер максимального элемента массива Assembler Napo Помощь студентам 0 02.11.2012 22:29
двумерный массив целых чисел А размером N на M. найти максимальный элемент и поменять его местами с A[1,1]. Задача в Pascal flo90 Помощь студентам 4 19.05.2012 20:00