Как найти среднее значение двумерного массива

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

Содержание:

  • Двумерный массив в Pascal
  • Описание, ввод и вывод элементов двумерного массива
  • Главная и побочная диагональ при работе с двумерными матрицами в Pascal

Матрица или двумерный массив – это прямоугольная таблица чисел (или других элементов одного типа). Каждый элемент матрицы имеет два индекса (номер строки и номер столбца).

матрица

Исходные данные для решения многих задач можно представить в табличной форме:
двумерный массив Pascal
Таблица результатов производственной деятельности нескольких филиалов фирмы может быть представлена так:

zavod1: array [1..4] of integer;
zavod2: array [1..4] of integer; 
zavod3: array [1..4] of integer;

Или в виде двумерного массива так:

Объявление двумерного массива:

var A: array[1..3,1..4] of integer;
begin
{...}
begin
  var  a := new integer[3,4];
  {...}
end.

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

Варианты описания двумерного массива (традиционный pascal)

  1. Описание массива в разделе переменных:
  2. const N = 3;
          M = 4;
    var A: array[1..N,1..M] of integer;
  3. Описание массива через раздел type:
  4. const
      M=10;
      N=5;
    type
      matrix=array [1..M, 1..N] of integer;
    var A: matrix;

Ввод двумерного массива m x n с клавиатуры:

ввод двумерного массива

for i:=1 to N do
  for j:=1 to M do begin
    write('A[',i,',',j,']=');
    read ( A[i,j] );
  end;

for var i:=0 to a.RowCount-1 do
  for var j:=0 to a.ColCount-1 do
     a[i,j]:=readinteger;

Заполнение случайными числами:

заполнение случайными числами


var a := MatrRandomInteger(3,4,0,10); // целые числа в диапазоне от 0 до 10
var a1 := MatrRandomReal(3,4,1,9) // веществ. числа в диапазоне от 1 до 9

«Красивый» вывод элементов двумерного массива m x n:

Следующий фрагмент программы выводит на экран значения элементов массива по строкам:
вывод двумерного массива

1
2
3
4
5
for i:=1 to N do begin
  for j:=1 to M do
     write ( A[i,j]:5 );
  writeln;
end;

1
2
3
4
5
6
begin
  var a := MatrRandomInteger(3,4,0,10);
  var a1 := MatrRandomReal(3,4,1,9);
  a.Println;
  a1.Println(6,1) // 6 позиций всего на вывод, 1 знак после десят. запятой
end.

Результат:

   8   2   1   3
   5   8   0   8
   6   3   9   3
   3.3   4.7   3.7   5.4
   2.9   1.7   2.3   4.0
   8.3   3.7   8.4   1.4

Рассмотрим следующую задачу: Получены значения температуры воздуха за 4 дня с трех метеостанций, расположенных в разных регионах страны:

Номер станции 1-й день 2-й день 3-й день 4-й день
1 -8 -14 -19 -18
2 25 28 26 20
3 11 18 20 25

Т.е. запись показаний в двумерном массиве выглядела бы так:

t[1,1]:=-8; t[1,2]:=-14; t[1,3]:=-19; t[1,4]:=-18;
t[2,1]:=25; t[2,2]:=28; t[2,3]:=26; t[2,4]:=20;
t[3,1]:=11; t[3,2]:=18; t[3,3]:=20; t[3,4]:=25;

Или в pascalabc.NET:

var t := Matr(3,4,-8,-14,-19,-18,25,28,26,20,11,18,20,25);  
t.Println;

Объявление двумерного массива:

var t: array [1..3, 1..4] of integer;

Задание array 1: Необходимо:

  1. Распечатать температуру на 2-й метеостанции за 4-й день и на 3-й метеостанции за 1-й день.
  2. Распечатать показания термометров всех метеостанций за 2-й день.
  3. Определить среднюю температуру на 3-й метеостанции.
  4. Распечатать, в какие дни и на каких метеостанциях температура была в диапазоне 24-26 градусов тепла.

Дополните код:

Показать решение:

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
var t: array [1..3, 1..4] of integer;
s,i,j:integer;
begin
t[1,1]:=-8; 	t[1,2]:=-14; 	t[1,3]:=-19; 	t[1,4]:=-18;
t[2,1]:=25; 	t[2,2]:=28; 	t[2,3]:=26; 	t[2,4]:=20;
t[3,1]:=11; 	t[3,2]:=18; 	t[3,3]:=20; 	t[3,4]:=25;
{1. Распечатать показания термометров на 2-й метеостанции за 4-й день и на 3-й метеостанции за 1-й день}
writeln('1-е задание: ',t[2,4] , ' и ',t[...,...]);
 
{2. Показания термометров всех метеостанций за 2-й день}
for i:=1 to ... do 
   writeln ('2-е задание: ',t[...,...]);
 
{3. Определим среднее значение температуры на 3-й метеостанции:}
i:=3;
s:=0;
for j:=1 to 4 do 
   s:=...; {сумматор}
writeln('3-е задание: ', s/4);
{распечатаем всю таблицу}
for i:=1 to 3 do
    for j:=1 to 4 do
        writeln(t[i,j]);
{4. Распечатаем станции и дни с температурой 24-26 гр}
writeln('4-е задание: ');
for i:=1 to 3 do
    for ... ... do
        if (...) and (...) then
           writeln('станция ', i, ' день ', j)
end.

Самостоятельно подумайте, как находится сумма элементов массива pascal.

Задание array 2. Найти сумму элементов массива (прямоугольной таблицы) размером [m x n]

Задание array 4.
Найти сумму всех элементов массива (переменная sum) 5 x 4, а также сумму элементов, составляющих столбцы таблицы (двумерного массива). Для хранения сумм столбцов чисел использовать одномерный массив (s). Дополните код.
двумерный массив в 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
const  m = 5;
       n = 4;
var
    a: array[1..m,1..n] of byte;
    s: array[1..n] of byte;
    i,j, sum: byte;
begin
    randomize;
    for i := 1 to m do begin
        for j := 1 to n do begin
            ... {инициализация элементов массива случайными числами}
            ... {вывод элементов массива}
        end;
        writeln
    end;
    writeln ('------------'); {для оформления}
    {обнуление значений массива суммы s[]:}
    ...
    {поиск сумм элементов по столбцам:}
    for i := 1 to n do begin
         for j := 1 to m do begin
           s[i]:=...;
        end;
     write(...)  ; 
    end;
    {поиск общей суммы:}
    sum:=0;
    ...
    {вычисление суммы элементов массива значений сумм по столбцам:}
    for ...
        ...
    write (' | sum = ', sum);
readln
end.

Задание array 4_1.
Найти сумму элементов двумерного массива [m x n] по строкам:

2 8 1 9  : sum = 20
3 1 7 2  : sum = 13
4 5 6 2  : sum = 17

Методы матриц для работы со строками и столбцами:

begin
  var a := MatrRandomInteger(3,4);  
  a.Println;
 
  a.Row(0).Sum.Println();
  a.Row(1).Average.Println;
  a.Row(2).Product.Println;
 
  a.Col(0).Min.Println;
  a.Col(1).Max.Println;
end.

Результат:

  86  62  80  33
  51   4  36  65
  78  30   5  16
261 
39 
187200 
51 
62 

Главная и побочная диагональ при работе с двумерными матрицами в Pascal

Главная диагональ квадратной матрицы n x n (т.е. той, у которой количество строк равно количеству столбцов) проходит с верхнего левого угла матрицы (элемент 1,1) до правого нижнего угла матрицы (элемент n,n).

Побочная диагональ квадратной матрицы n x n проходит с нижнего левого угла матрицы (элемент n,1) до правого верхнего угла матрицы (элемент 1,n).

Формулу поиска элементов диагоналей проще всего искать, нарисовав элементы матрицы:
Если индексы начинаются с единицы (традиционный Паскаль):

1,1 1,2 1,3 1,4
2,1 2,2 2,3 2,4
3,1 3,2 3,3 3,4
4,1 4,2 4,3 4,4

Если индексы начинаются с нуля (pascalAbc.NET):

0,0 0,1 0,2 0,3
1,0 1,1 1,2 1,3
2,0 2,1 2,2 2,3
3,0 3,1 3,2 3,3

 
Учитывая, что первая цифра в программе будет соответствовать счетчику i, а вторая — счетчику j, то из таблицы можно вывести формулы:

Главная диагональ матрицы в Паскаль имеет формулу:
i=j
Побочная диагональ матрицы в Паскале традиционном имеет формулу:
n=i+j-1 (или j=n-i+1)

где n — размерность квадратной матрицы

Побочная диагональ матрицы в pascalAbc.Net имеет формулу:
n=i+j+1

где n — размерность квадратной матрицы

Пример: Вывести на экран сначала главную диагональ квадратной матрицы из N строк и N столбцов, а затем ее побочную диагональ.

Решение:
Вывод элементов главной диагонали
Вывод элементов побочной диагонали

Пример: Заменить элементы главной и побочной диагонали квадратной матрицы нулями

Показать решение:

Паскаль:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
var i,j,n:integer;
a: array[1..100,1..100]of integer;
begin
   randomize;
   writeln ('введите размерность матрицы:');
   readln(n);
   for i:=1 to n do begin
        for j:=1 to n do  begin
            a[i,j]:=random(10);
            write(a[i,j]:3);
        end;
        writeln;
   end;
   writeln;
   for i:=1 to n do begin
        for j:=1 to n do  begin
            if (i=j) or (n=i+j-1) then a[i,j]:=0;
            write(a[i,j]:3)
        end;
        writeln;
   end;
end.

PascalAbc.Net

1
2
3
4
5
6
7
8
9
10
11
12
begin
  var n := readinteger('введите размерность матрицы:');
  var a := matrRandomInteger(n, n, -10, 10);
  a.Println(6);
  for var i := 0 to n - 1 do
  begin
    a[i, i] := 0;
    a[i, n - i - 1] := 0;
  end;
  writeln();
  a.Println(6);
end.

Задание array 5:
Найти отдельно сумму элементов главной и побочной диагонали квадратной матрицы

1 7 3 7
2 1 8 3
5 7 6 4
8 2 3 1
-------
sum1 = 9
sum2 = 30

Пример:
Дана матрица 5х5. Найти сумму элементов, стоящих на двух соседних диагоналях с главной и параллельных ей.
побочная диагональ матрицы паскаль и главная
Для решения задачи воспользуйтесь таблицей

Показать решение:

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
var
A:array[1..5,1..5] of integer;
i,j:integer;
sum,sum1,sum2:integer;
begin
randomize;
for i:=1 to 5 do
for j:=1 to 5 do
    A[i,j]:=random(10);
write ('Исходный массив A: ');
for i:=1 to 5 do begin
    writeln;
    for j:=1 to 5 do
        write (A[i,j]:2,' ');
    end;
sum1:=0;
for i:=1 to 5 do
    for j:=1 to 5 do
        if (i-j=1) then
            sum1:=sum1+A[i,j];
sum2:=0;
for i:=1 to 5 do
    for j:=1 to 5 do
        if (j-i=1) then
           sum2:=sum2+A[i,j];
sum:=sum1+sum2;
writeln;
writeln('Сумма = ',sum);
end.

Задание array 6: Сформировать матрицу размерностью n. Вывести ее на экран. Затем преобразовать ее, заменив необходимые элементы на 0:
главная и побочная диагональ матрицы паскаль

Задание array 7: Сформировать матрицу размерностью n. Вывести ее на экран. Затем преобразовать ее, заменив необходимые элементы на 0:
главная и побочная диагональ матрицы паскальдиагонали матрицы Паскаль

Задание array 8: Сформировать матрицу размерностью n. Вывести ее на экран. Затем преобразовать ее, заменив необходимые элементы на 0:
диагонали матрицы Паскаль
главная и побочная диагональ матрицы паскаль

Задание array 9: Составить программу, позволяющую с помощью датчика случайных чисел сформировать матрицу размерностью N. Определить:

  • минимальный элемент, лежащий ниже побочной диагонали;
  • произведение ненулевых элементов последней строки.
  • Рассмотрим еще один пример работы с двумерным массивом.

    Пример: В двумерном массиве размером N х M определить среднее значение элементов. Найти индекс элемента массива, наиболее близкого к среднему значению.

    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
    
    var index1,index2,i,j,N,M:integer;
    s,min,f:real;
    a:array[1..300,1..300] of real;
    begin
    N:=10;
    M:=5;
    for i:=1 to N do begin
      for j:=1 to M do begin
        a[i,j]:=random(20);
        s:=s+a[i,j];
        write(a[i,j]:3);
       end;
       writeln;
    end;
     
    f:=s/(N*M);
    writeln('srednee znachenie ',f);
    min:=abs(a[1,1]-f);
    for i:=1 to N do begin
      for j:=1 to M do begin
        if abs(a[i,j]-f)<min then begin
          min:=abs(a[i,j]-f);
          index1:=i;
          index2:=j;
        end;
      end;
    end;
    writeln('naibolee blizkiy ',index1,' ',index2);
    end.

    Потренируйтесь в решении задач по теме, щелкнув по пиктограмме:

    проверь себя

    Не называйте свои переменные именами встроенных функций python.

    lst = [[1, 2, 3, 4, 5], [10, 11, 12, 13, 14, 15], [20, 21, 22, 23, 24, 25]]
    
    
    res = [x for y in lst for x in y] # превращаем двумерный список в одномерный
    res = list(filter(lambda x: x > 0, res)) # отсеиваем положительные числа 
    my_mean = sum(res)/len(res) # вычисляем арифметическое среднее
    print(my_mean)
    

    13.235294117647058

    без lambda:

    lst = [[1, 2, 3, 4, 5], [10, 11, 12, 13, 14, 15], [20, 21, 22, 23, 24, -25]]
    
    def checkpositive(a):
        return a>0
    
    res = [x for y in lst for x in y]
    res = list(filter(checkpositive, res))
    print (res)
    

    [1, 2, 3, 4, 5, 10, 11, 12, 13, 14, 15, 20, 21, 22, 23, 24]

    Добрый день друзья.

    Сегодня затронем новую тему. Двумерные массивы. Или их еще
    называют матрицы.   

    Прочитайте улучшенную версию этого урока «Двумерные массивы».

    В новой версии:

    • Ещё более доступное объяснение
    • Дополнительные материалы
    • 10 задач на программирование с автоматической проверкой решения

    Что такое двумерный массив?

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

    Рис.1. Двумерный массив. Общий вид.

    Обратите внимание, что столбцы и строки нумеруются, начиная
    с нуля, как и в одномерных массивах.

    Сразу же покажу, как объявить двумерный массив. В сущности,
    ничего нового. Синтаксис прост и очень похож на объявление обычного массива и
    любой другой переменной.  Сначала
    указываем тип данных, затем имя массива, а после в квадратных скобках его
    размерность, то есть количество строк и количество столбиков.  На рисунке ниже мы объявили двумерный массив
    размерностью 6 на 7.

    Рис.2 Двумерный массив, объявление.

    Важно помнить, что первая строка и первый столбик имеют
    индекс нуль, поэтому последняя строка будет иметь номер не шесть, а пять, и
    аналогично последний столбец будет иметь номер шесть, а не семь.

    Кстати, нельзя путать местами строки и столбики. Сначала
    записывается количество строк, потом количество столбиков.

    Следующий естественный вопрос:

    Как работать с двумерным массивом?

    Как и другие переменные, двумерные массивы мы можем
    инициализировать  при их объявлении. Для
    этого нам нужно указать все элементы массива. Делается это следующим образом.

    Листинг 19.1

    int arr [2][4]
    = {{1,2,4,29},{3,4,6,1}};

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

    Рис.3. Двумерный массив инициализированный при объявлении

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

    Листинг 19.2

    int arr [2][4]
    = {{1,2,4},{3,4}};

    При таком объявлении мы получим массив, который изображен на
    следующем рисунке.

    Рис.4. Двумерный массив, инициализированный не полностью.

    Понятно, что если у нас будет большой массив, то мы
    замучаемся так все записывать. Да и редко такое бывает нужно.  

    Как работать с отдельным элементом
    массива.

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

    Рис.5. Обращение к элементу двумерного массива.

    Обращение к конкретному элементу происходит так же, как и в
    одномерном массиве. Сначала пишут имя массива, а затем, в квадратных скобках
    номер строки и номер столбика.  Опять
    напоминаю, сначала идет номер строки, а потом номер столбика. Не путайте это. А
    так же, помните, что нумерация идет не с единицы, а с нуля.  Это очень частая ошибка, всегда следите за
    этим.

    Помните, когда мы хотели пройтись по всему одномерному
    массиву, мы использовали цикл for,
    который изменял наш индекс. Так как в двумерном массиве у нас два индекса (
    один для строки и один для столбца), то для того, чтобы пройтись по всему
    массиву нам потребуется два вложенных цикла for. Разберите следующий пример. 

    Листинг
    19.3

    #include <stdio.h> 

    int main (){ 

          int arr [2][4] = {{1,2,4},{3,4}}; 

          for (int i=0; i<2;
    i++){ // 1
    цикл
     

                for (int j=0; j<4;
    j++) // 2
    цикл
     

                      printf(«%dt»,arr[i][j]); 

                printf(«n»); 

          } 

    return 0; 

    }  

    Данная программа, выводит последовательно все элементы
    массива. Результат её работы, представлен на следующем рисунке.

    Рис.6. Двумерный массив. Поэлементный вывод на экран.

    Как  работает
    вложенный цикл, вам уже должно быть понятно.

    Сначала переменной i присваивается значение нуль,
    проверяется условие 0<2, и так как оно выполняется, программа начинает
    выполнять тело первого цикла. В теле первого цикла программа опять попадает в
    цикл, теперь уже второй. Переменной j присваивается значение 0 и проверяется
    условие 0<4. Оно истинно, поэтому выполняется тело второго цикла. Оно состоит
    из одной инструкции вывода на экран элемента arr[i][j]. Так как на данном шаге у
    нас i=0 j=0, то выводится значение элемент
    из нулевой строки и нулевого столбика. В нашем примере это элемент число 1.
    Тело второго цикла закончилось, происходит увеличение j на единицу j=1.

    Проверка условия 1<4. Выполнение тела второго цикла:
    вывод на экран элемента arr[0][1]
    в нашем случае это 2. И так далее …

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

    Зачем нужны двумерные массивы?

    Двумерные массивы используются для хранения данных одинакового
    типа и одинаковой структуры. Приведу пример. В одном из практических заданий к
    прошлым урокам,  необходимо было
    составить программу, которая хранила оценки ученика по разным предметам. Для их
    хранения в памяти компьютера мы использовали несколько одномерных массивов. Это
    было не очень удобно. Для этих же целей, мы могли использовать двумерный
    массив. Например, нам нужно хранить оценки ученика по русскому, математике,
    физике и информатике, за целый месяц. Для этого мы создадим массив с 4 строками
    и 30 столбиками (или наоборот, 30 строк и 4 столбика, кому как больше нравится),
    и в каждую отдельную строчку будем записывать оценки по какому либо предмету. Это
    гораздо удобнее и практичнее.

    Например, рассмотрим такую задачку. Пусть нам нужно было бы
    найти среднее арифметическое всех оценок по всем предметам.  Если бы у нас было четыре одномерных массива,
    то нам пришлось бы писать четыре цикла, в каждом из них считать среднее
    арифметическое оценок по одному предмету, потом 
    находить среднее арифметическое этих четырех чисел. Если оценки у нас
    хранятся в двумерном массиве, нам достаточно будет просто пройтись по всем
    элементам массива, используя два вложенных цикла for, и найти среднее арифметическое.

    Но это еще не всё. Представьте, что вы хотите добавить один
    предмет и снова посчитать среднюю арифметическую оценку для всех предметов.   Сколько мороки будет, если вы храните оценки
    в одномерных массивах. Вам придется кучу изменений вносить, дописывать еще один
    цикл (а вдруг добавилось 7 предметов?). Потом еще среднее искать между этими цифрами.

    Другое дело если вы храните оценки в двумерном массиве. Всего
    лишь изменить условие в одном из циклов. Поменять одно число, представляете как
    удобно?

    Напишите в комментариях пожалуйста, понятен ли вам этот пример, или лучше его подробно расписать?

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

    Практическое задание.

    Напишите программу, работающую следующим образом. Создайте массив 10 на 10. Заполните его нулями. Считайте два произвольных целых числа с клавиатуры, меньших либо равных 10. Первое число количество строк, второе — количество столбцов.  Напишите функцию, которая заполняет массив по спирали и выводит его на экран. Т.е. если бы мы ввели 6 и 7, то получили бы следующий массив.

    При этом табличка  приблизительно должна быть выровнена по центру окна вывода.

    Готовое решение пользователя с ником «Дмитрий». За проявленное упорство и трудолюбие, и как первый выполнивший правильно практическое задание, Дмитрий награждается печенькой:

    Ruslan11kh

    0 / 0 / 0

    Регистрация: 22.03.2016

    Сообщений: 14

    1

    Двумерный массив, среднее арифметическое

    17.04.2016, 13:23. Показов 9658. Ответов 5

    Метки нет (Все метки)


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

    Дана задача найти среднее арифметическое массива. Написал данную программу:

    C++
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    int _tmain(int argc, _TCHAR* argv[])
    {setlocale(LC_ALL, "rus");
    int x[3][5]; 
    int i,j,s1,s2,s0;
    printf("Введите массив X n"); 
    for(i=0;i<3;i++)
    {
    for (j=0;j<5;j++)
    scanf("%d",&x[i,j]);
    }
    s1=0;
    s2=0;
    for (i=0;i<3;i++)
    {s1 += x[i];
    for (j=0; j=5; j++)
        s2+= x[j];}
    s0= (s1+s2)/15;
    printf (" Среднее арифметическое:", s0);
    getch();
    }

    При расчете s1 и s2 , т.е суммы элементов появляется ошибка: выражение должно иметь арифметический или перечисляемый тип. Кто то может объяснить,почему появляется ошибка?



    0



    1174 / 835 / 359

    Регистрация: 26.02.2015

    Сообщений: 3,743

    17.04.2016, 13:28

    2

    Цитата
    Сообщение от Ruslan11kh
    Посмотреть сообщение

    x[i]

    Цитата
    Сообщение от Ruslan11kh
    Посмотреть сообщение

    x[j]

    Потому что ты не двумерный массив обходишь с помощью индексов i и j, а одномерный. Причем Второй индекс явно выходит за пределы массива и берет какую-то ерунду из памяти.



    1



    0 / 0 / 0

    Регистрация: 22.03.2016

    Сообщений: 14

    17.04.2016, 13:30

     [ТС]

    3

    т.е я не правильно задаю сам массив? Или как нужно сделать правильно?



    0



    dcshowcousa

    28 / 20 / 97

    Регистрация: 22.10.2015

    Сообщений: 304

    17.04.2016, 14:28

    4

    Лучший ответ Сообщение было отмечено Ruslan11kh как решение

    Решение

    Ruslan11kh,

    C++
    1
    2
    3
    4
    
    for (i=0; i<3; i++)
        for (j=0; j<5; j++)
            s1+= x[i][j];
    s0= s1/15.0;



    0



    1174 / 835 / 359

    Регистрация: 26.02.2015

    Сообщений: 3,743

    17.04.2016, 14:47

    5

    Лучший ответ Сообщение было отмечено Ruslan11kh как решение

    Решение

    Ruslan11kh, задаешь правильно, обходишь его не правильно. Чтобы обходить его, нужно двойную индексацию использовать, как при объявлении и определении массива — [i][j]. Впрочем, тебе уже написали правильный вариант.



    1



    0 / 0 / 0

    Регистрация: 22.03.2016

    Сообщений: 14

    17.04.2016, 15:02

     [ТС]

    6

    Спасибо !



    0



    Двумерные
    массивы 181

    Кроме
    одномерных массивов, в практических
    задачах часто используются и двумерные
    массивы. Двумерный массив представляет
    собой таблицу из однотипных элементов,
    организованную по строкам и столбцам.
    Элемент такого массива записывается
    так: A[I][J],
    где первый индекс I
    представляет собой номер строки, а
    второй индекс J
    является номером столбца. Местоположение
    каждого элемента массива в памяти
    компьютера определяется этими индексами.

    В языке
    С/С++ используется следующее описание
    двумерного массива:

    Тип_элементов
    Имя_массива[число строк][число столбцов];

    Описание
    вполне аналогичное описанию одномерного
    массива.

    Нахождение суммы элементов массива

    Исходная ситуация традиционна для
    работы с двумерными массивами: дан
    массив A[I,J],
    где индексы I,
    J
    принимают значения от 1 до N.
    В данном случае будем считать элементы
    массива целыми числами (имеющими тип
    int).
    Сумма элементов двумерного массива
    вычисляется по следующей формуле:

    .
    (4.1)

    Алгоритм
    вычисления S
    по соотношению (4.1) достаточно простой
    и программа, его реализующая, не требует
    пояснения с использованием блок-схемы
    (как и ряд других программ, рассматриваемых
    в примерах этой главы). В листинге 4.1
    приведена реализация решения данной
    задачи. Для определенности мы установили
    размерность массива: 10 строк и 10 столбцов.
    Как и в разработках предыдущих глав, в
    данной программе обеспечено первоначальное
    заполнение элементов массива с помощью
    датчика случайных чисел.

    Листинг
    4.1. Вычисление суммы значений элементов
    двумерного массива

    #include
    <iostream>

    using
    namespace std;

    #include
    <conio.h>

    #include
    <math.h>

    #define
    N 10

    #define
    NM 11

    void
    main()

    {

    int
    A[NM][NM];

    int
    J,I,S;

    for
    (I=1;I<=N; I++)

    for
    (J=1;J<=N; J++)

    A[I][J]=rand()%100;

    S=0;

    for
    (I=1;I<=N; I++)

    for
    (J=1;J<=N; J++)

    S=
    S + A[I][J];

    cout<<«Сумма
    элементов двумерного массива=»<<S;

    _getch();

    }

    Сумма элементов с заданными свойствами

    Несколько
    изменим формулировку предыдущего
    задания. Будем считать, что требуется
    просуммировать только те элементы,
    значения которых являются нечетными
    числами, а кроме того, эти значения
    должны располагаться в интервале от 10
    до 100. В листинге 4.2 приведена программа,
    реализующая решение данной задачи.

    Листинг
    4.2. Вычисление суммы значений элементов
    массива при условии

    #include
    <iostream>

    using
    namespace std;

    #include
    <conio.h>

    #include
    <math.h>

    #define
    N 10

    #define
    NM 11

    void
    main()

    {

    int
    A[NM][NM];

    int
    J,I,S;

    for
    (I=1;I<=N; I++)

    for
    (J=1;J<=N; J++)

    A[I][J]=rand()%100;

    S=0;

    for
    (I=1;I<=N; I++)

    for
    (J=1;J<=N; J++)

    if(((A[I][J]%2)==1)&&(A[I][J]>=10)&&(A[I][J]<=100))

    S= S + A[I][J];

    cout<<«Сумма
    элементов двумерного массива=»<<S;

    _getch();

    }

    Расчет среднего арифметического

    В данном
    случае нам требуется вычислить среднее
    арифметическое значение только
    положительных значений элементов
    двумерного массива. В листинге 4.3
    приведена программа, реализующая решение
    данной задачи. Здесь мы использовали
    две переменные:

    • S —
      для суммы интересующих нас элементов;

    • M —
      количество элементов, по которым
      подсчитывается сумма.

    Листинг
    4.3. Вычисление среднего арифметического

    #include
    <iostream>

    using
    namespace std;

    #include
    <conio.h>

    #include
    <math.h>

    #define
    N 10

    #define
    NM 11

    void
    main()

    {

    int
    A[NM][NM];

    int
    J,I,M;

    float
    S;

    for
    (I=1;I<=N; I++)

    for
    (J=1;J<=N; J++)

    A[I][J]=rand()%100;

    S=0;

    M=0;

    for
    (I=1;I<=N; I++)

    for
    (J=1;J<=N; J++)

    if (A[I][J]>0)

    { S= S + A[I][J];

    M=M+1;}

    S=S/M;

    cout<<«‘Среднее
    арифметическое равно «<<S;

    _getch();

    }

    Соседние файлы в папке файлы по информатике

    • #
    • #
    • #
    • #
    • #
    • #

    Понравилась статья? Поделить с друзьями:

    Не пропустите также:

  • Как быстро найти клиентов менеджеру
  • Как найти центральную базу
  • Как исправить минусовку
  • Как найти дневную амплитуду температуры
  • Как найти элементальный след в геншине

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии