Как найти максимальный элемент в строке матрицы

Visary_Master

17 / 18 / 1

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

Сообщений: 296

1

Найти максимальный элемент в строке матрицы

03.05.2011, 14:15. Показов 19398. Ответов 14

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


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

Здравствуйте, помогите в решении вопроса.
Я делал. Но сейчас что-то не могу разобраться

Что мне исправить, чтобы мне выводило только правильно? Мне нужно посчитать максимальный элемент в каждой строке и вывести его и его индексы.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int maxElement = 0;
  int maxi = 0; 
  int maxj = 0;
 
  maxElement = mass[0][0];
  
  for (int i=0; i<N; i++)
  {  
    for (int j=0; j<N; j++)
    {
      if (mass[i][j] >= maxElement)
      {  
        maxElement = mass[i][j];
        maxi = i;
        maxj = j;
        cout << maxElement << endl;
        cout << maxi << " " << maxj << endl;
      }
    }
  }



0



mimicria

return (true);

1976 / 1111 / 221

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

Сообщений: 2,345

03.05.2011, 14:25

2

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int maxElement = 0;
  int maxi = 0; 
  int maxj = 0;
 
  maxElement = mass[0][0];
  
  for (int i=0; i<N; i++)
  {  
    for (int j=0; j<N; j++)
    {
      if (mass[i][j] >= maxElement)
      {  
        maxElement = mass[i][j];
        maxi = i;
        maxj = j;
      }
    }
 cout << maxElement << endl;
 cout << maxi << " " << maxj << endl;
}



0



Visary_Master

17 / 18 / 1

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

Сообщений: 296

03.05.2011, 14:36

 [ТС]

3

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

Добавлено через 1 минуту

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

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int maxElement = 0;
  int maxi = 0; 
  int maxj = 0;
 
  maxElement = mass[0][0];
  
  for (int i=0; i<N; i++)
  {  
    for (int j=0; j<N; j++)
    {
      if (mass[i][j] >= maxElement)
      {  
        maxElement = mass[i][j];
        maxi = i;
        maxj = j;
      }
    }
 cout << maxElement << endl;
 cout << maxi << " " << maxj << endl;
}

Этот код ищет по всему массиву.



0



mimicria

return (true);

1976 / 1111 / 221

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

Сообщений: 2,345

03.05.2011, 14:43

4

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

Этот код ищет по всему массиву.

А Вам по половине надо?

Как вариант: под строкой вы какой индекс массива имеете ввиду? Можно местами поменять:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int maxElement = 0;
  int maxi = 0; 
  int maxj = 0;
 
  maxElement = mass[0][0];
  
  for (int i=0; i<N; i++)
  {  
    for (int j=0; j<N; j++)
    {
      if (mass[j][i] >= maxElement)
      {  
        maxElement = mass[j][i];
        maxi = i;
        maxj = j;
      }
    }
 cout << maxElement << endl;
 cout << maxi << " " << maxj << endl;
}



0



17 / 18 / 1

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

Сообщений: 296

03.05.2011, 14:48

 [ТС]

5

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

А Вам по половине надо?

Как вариант: под строкой вы какой индекс массива имеете ввиду? Можно местами поменять:

Мы находим макс. элемент, и запоминаем его индексы i и j.

Есть двумерный массив. Ищем в каждой строке этого массива максимальный элемент, и выводим его индекс.



0



Эксперт С++

1067 / 846 / 60

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

Сообщений: 1,659

03.05.2011, 14:54

6

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

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

Этот код ищет по всему массиву.

Нет. Вывод на экран — после каждой строки.



0



mimicria

return (true);

1976 / 1111 / 221

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

Сообщений: 2,345

03.05.2011, 14:56

7

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

Мы находим макс. элемент, и запоминаем его индексы i и j.

Есть двумерный массив. Ищем в каждой строке этого массива максимальный элемент, и выводим его индекс.

Ах, ну да. В каждой новой строке максимум надо обнулить

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int maxElement = 0;
  int maxi = 0; 
  int maxj = 0;
 
  maxElement = mass[0][0];
  
  for (int i=0; i<N; i++)
  {  
    for (int j=0; j<N; j++)
    {
      if (mass[j][i] >= maxElement)
      {  
        maxElement = mass[j][i];
        maxi = i;
        maxj = j;
      }
    }
 cout << maxElement << endl;
 cout << maxi << " " << maxj << endl;
 maxElement = 0;
}



1



Visary_Master

17 / 18 / 1

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

Сообщений: 296

03.05.2011, 15:29

 [ТС]

8

Решено! Я нашел свою ошибку.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
        int maxElement = 0;
    int maxi = 0; 
    int maxj = 0;
 
    maxElement = mass[0][0];
    
    for (int i=0; i<N; i++)
    {   
        for (int j=0; j<N; j++)
        {
            if (mass[i][j] >= maxElement)
            {   
                maxElement = mass[i][j];
                maxi = i;
                maxj = j;
            }
        }
        cout << maxElement << endl;
        cout << maxi << " " << maxj << endl;
        // maxElement = 0;  
    }

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

Добавлено через 30 минут
Теперь такая задача:
В первой строке ищем максимальный элемент, а в каждой последующей ищешь максимальный элемент, не превышающий предпоследний.



0



neske

1552 / 918 / 193

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

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

03.05.2011, 15:31

9

C++
1
if ((MAS[i][j] > max) && (MAS[i][j] <= MAS[i][Column - 1])) max = MAS[i][j];



0



mimicria

return (true);

1976 / 1111 / 221

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

Сообщений: 2,345

03.05.2011, 15:47

10

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

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int maxElement = 0;
  int maxi = 0; 
  int maxj = 0;
  int prev_max=99999;
  maxElement = mass[0][0];
  
  for (int i=0; i<N; i++)
  {  
    for (int j=0; j<N; j++)
    {
      if ((mass[j][i] >= maxElement)&&(mass[j][i]<=prev_max))
      {  
        maxElement = mass[j][i];
        maxi = i;
        maxj = j;
      }
    }
 cout << maxElement << endl;
 cout << maxi << " " << maxj << endl;
 prev_max=maxElement;
 maxElement = 0;
}



1



neske

1552 / 918 / 193

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

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

03.05.2011, 15:52

11

mimicria, я ваш код вообще разобрать не смог.

C++
1
2
3
4
5
6
7
8
 for (int i = 0; i < Row; i++) {
    int max = MAS[i][0];
    for (int j = 1; j < Column; j++) {
        if ((!i) && (MAS[i][j] > max)) max = MAS[i][j];
        if ((i) && (MAS[i][j] > max) && (MAS[i][j] <= MAS[i][Column - 1])) max = MAS[i][j];
    }
    std::cout << i << " max: " << max;
}



0



return (true);

1976 / 1111 / 221

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

Сообщений: 2,345

03.05.2011, 15:58

12

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

mimicria, я ваш код вообще разобрать не смог.

Это не страшно, вылечат всех

Добавлено через 3 минуты

а в каждой последующей ищешь максимальный элемент, не превышающий предпоследний найденный максимальный.

Я так задание понял



1



neske

1552 / 918 / 193

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

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

03.05.2011, 16:05

13

Да, это я задание прочитал невнимательно.
И на счет кода, так все-таки лучше не делать:

C++
1
int prev_max=99999;



0



mimicria

return (true);

1976 / 1111 / 221

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

Сообщений: 2,345

03.05.2011, 16:08

14

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

И на счет кода, так все-таки лучше не делать:

C++
1
int prev_max=99999;

За это мне стыдно, но думать как обойти не хотелось



0



Visary_Master

17 / 18 / 1

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

Сообщений: 296

03.05.2011, 21:33

 [ТС]

15

Нужно решить такую задачу. Немного я не правильно разъяснил. Потому что уже долго сижу и голова не варит. Я решаю такую задачу:
Задан двумерный массив N x N. Разрешается произвольно переставлять элементы внутри любого столбца. Про-верить, можно ли выполнив конечное количество перестановок в столбцах, расположить на побочной диагональ элементы так, чтобы он возрастали.

Я думаю что на правильном пути, надо еще реализовать перестановку элементов в столбце. И алгоритм будет примерно такой:
искать надо будет по столбцам…тогда… и еще надо… я запутался.

Вот весь код программы.

C++
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
#include <iostream>
#include <ctime>
using namespace std;
 
const int N = 3;
 
int findMaxElement(int mass[N][N], int);
int main() 
{       
    int mass[N][N];
    srand(time(NULL));
    for (int i=0; i<N; i++)
    {
        for(int j=0; j<N; j++)
        {
            mass[i][j] = rand() % 100;
        }
    }
    for (int i=0; i<N; i++)
    {
        for(int j=0; j<N; j++)
        {
            cout << mass[i][j] << " ";
        }
        cout << endl;
    }
    cout << endl;
    
    int maxElement = 0;
    int maxi = 0; 
    int maxj = 0;
    int prev_max=99999;
 
    maxElement = mass[0][0];
    
    for (int i=0; i<N; i++)
    {   
        for (int j=0; j<N; j++)
        {
            if ((mass[j][i] >= maxElement) && (mass[j][i] <= prev_max))
            {   
                maxElement = mass[i][j];
                maxi = i;
                maxj = j;
            }
        }
        // для проверки
        cout << maxElement << endl;
        cout << maxi << " " << maxj << endl;
        cout << maxElement << endl;
 
        int temp = mass[maxi][maxj];
        mass[maxi][maxj] = mass[i][N - 1 - i];
        mass[i][N - 1 - i] = temp;
 
        prev_max=maxElement;
        //cout << prev_max; // для проверки
        maxElement = 0;
        
    }
    cout << endl;
    for (int i=0; i<N; i++)
    {
        for(int j=0; j<N; j++)
        {
            cout << mass[i][j] << " ";
        }
        cout << endl;
    }
    cout << endl;
    return 0;
}

Добавлено через 1 минуту

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

mimicria, я ваш код вообще разобрать не смог.

C++
1
2
3
4
5
6
7
8
 for (int i = 0; i < Row; i++) {
    int max = MAS[i][0];
    for (int j = 1; j < Column; j++) {
        if ((!i) && (MAS[i][j] > max)) max = MAS[i][j];
        if ((i) && (MAS[i][j] > max) && (MAS[i][j] <= MAS[i][Column - 1])) max = MAS[i][j];
    }
    std::cout << i << " max: " << max;
}

Мой код максимально прост.



0



Given a matrix, the task is to find the maximum element of each row.
Examples: 

Input :  [1, 2, 3]
         [1, 4, 9]
         [76, 34, 21]

Output :
3
9
76

Input : [1, 2, 3, 21]
        [12, 1, 65, 9]
        [1, 56, 34, 2]
Output :
21
65
56

Method 1: The idea is to run the loop for no_of_rows. Check each element inside the row and find for the maximum element. Finally, print the element. 
Below is the implementation : 

Python

import numpy

def maxelement(arr):

    no_of_rows = len(arr)

    no_of_column = len(arr[0])

    for i in range(no_of_rows):

        max1 = 0

        for j in range(no_of_column):

            if arr[i][j] > max1:

                max1 = arr[i][j]

        print(max1)

arr = [[3, 4, 1, 8],

       [1, 4, 9, 11],

       [76, 34, 21, 1],

       [2, 1, 4, 5]]

maxelement(arr)

Output :

8
11
76
5

Time Complexity: O(N^2), where N is the number of rows in the matrix.

Space Complexity: O(1), as no extra space is required for the algorithm.

Method  2: By calculating max element Each list of list of lists using the max() function

Python3

arr = [[3, 4, 1, 8],

       [1, 4, 9, 11],

       [76, 34, 21, 1],

       [2, 1, 4, 5]]

for i in arr:

    print(max(i))

Time complexity: O(n*m), where n is the number of rows and m is the number of columns in the matrix.

Auxiliary space: O(1), as we are only using a constant amount of extra space to store the maximum value of each row.

Another approach that could be used to find the maximum element of each row in a matrix is to use the built-in map() function. The map() function applies a given function to each element of a given iterable (such as a list or a matrix). In this case, we can use the map() function to apply the max() function to each row of the matrix.

Here is an example of how this approach could be implemented:

Python3

def find_max_element(matrix):

  return list(map(lambda row: max(row), matrix))

matrix = [[3, 4, 1, 8],

          [1, 4, 9, 11],

          [76, 34, 21, 1],

          [2, 1, 4, 5]]

max_elements = find_max_element(matrix)

print(max_elements) 

 Time complexity: O(n * m), where n is the number of rows and m is the number of columns in the matrix. 
 Auxiliary Space: O(n), as we are creating a new list to store the maximum elements of each row.

Method#4: Using the Recursive method.

The find_max_recursive function takes a matrix as input, along with an optional index variable i (which is initially set to 0) and a result list res (which is initially empty). The function returns a list of the maximum element in each row of the matrix.

The function first checks if it has reached the end of the matrix (i.e., if i is equal to the length of the matrix). If so, it returns the result list. Otherwise, it finds the maximum element in the current row using the built-in max function, and appends it to the result list. It then recursively calls itself with the index of the next row and the updated result list.

Python3

def find_max_recursive(matrix, i=0, res=[]):

    if i == len(matrix):

        return res

    max_val = max(matrix[i])

    res.append(max_val)

    return find_max_recursive(matrix, i+1, res)

matrix = [[3, 4, 1, 8],

          [1, 4, 9, 11],

          [76, 34, 21, 1],

          [2, 1, 4, 5]]

max_elements = find_max_recursive(matrix)

print(max_elements)

The time complexity of this function is O(n^2), where n is the size of the input matrix. This is because the function iterates over each element in the matrix once to find the maximum value in each row, resulting in n iterations. Additionally, finding the maximum value in each row requires iterating over each element in the row, resulting in another n iterations. Therefore, the total number of iterations is n^2.

The auxiliary space of this function is also O(n^2), as the result array ‘res’ is being appended with the maximum element from each row in the matrix. Since the matrix has n^2 elements, the result array will also have a maximum of n^2 elements, leading to the O(n^2) space complexity.

Method#5: Using the lambda function + list comprehension 

In this method, we define a lambda function that takes a matrix as input and uses a list comprehension to print the maximum element of each row using the NumPy max() function.

Note: Before using numpy you first need to install it by using the following command: pip install numpy

Below is the code for the following method: 

Python3

import numpy as np

maxelement = lambda arr: [print(np.max(row), end = " ") for row in arr]

arr = [[3, 4, 1, 8],

       [1, 4, 9, 11],

       [76, 34, 21, 1],

       [2, 1, 4, 5]]

maxelement(arr)

Output: 

Time complexity:  O(n*m),  where n is the number of rows and m is the number of columns in the matrix.
Auxiliary Space: O(1)

Please refer complete article on Find maximum element of each row in a matrix for more details!

Last Updated :
29 Mar, 2023

Like Article

Save Article

в C# так не работает(хотя в некоторых других языках так можно написать).

C# язык со статической типизацией https://ru.wikipedia.org/wiki/Статическая_типизация

В вашем случае вы не можете изменить тип вашего массива во время работы программы.

int[,] myArr = new int[4, 5];

Во в этой строчке, слева вы сказали(для упрощения), что переменная myArr принадлежит типу int[]. Теперь туда можно добавлять только числа и исправить это нельзя.

Вы дали очень мало описания и возможно не прочитали, как задавать вопросы. Нужно задать конкретный вопрос, ибо в данный момент он звучит «Я ничего не сделал, сделайте за меня»(поэтому вам ставят минусы, а не потому что вопрос плохой).

Для того, чтобы вам ответили, задайте конкретный вопрос. В данном случае он звучит «Как мне вставить в массив чисел символ?»

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

Подсказка, как сделать

Если правильно оформите вопрос, я на него отвечу. Пока пусто.

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

#include <stdio.h>
 
int max_el(int a, int n, int m)
{
    int i, j, max = 0;
    for (i=1; i<=n; i++)
    {
        for (j=1; j<=m; j++)
        {
            if (a[i][j] > a[i][max]) max = j;
        } 
        a[i][max] = 1;   
    }
}
 
int main()
{
    setlocale(0,"");
    int a[100][100], k, n, m, i, j;
    
    printf("Ââåäèòå Г°Г*çìåðГ*îñòü n*m: ");
    scanf("%d %d", &n, &m);
    srand(time(NULL));
    for (i=1; i<=n; i++)
    {
        for (j=1; j<=m; j++)
        {
            a[i][j] = rand()%10;
            printf("%d ", a[i][j]);
        } 
        printf("n");   
    }
    
    max_el(a, n, m);
    
     for (i=1; i<=n; i++)
    {
        for (j=1; j<=m; j++)
        {
            printf("%d", a[i][j]);
        } 
        printf("n");   
    }   
    _getch();
}

Для
поиска максимального элемента матрицы
и определения его индексов нам потребуются
три дополнительные переменные. В первой
из них будем хранить значение максимального
элемента, а во второй – номер строки, к
которой он находится, а в третьей –
номер столбца. Поиск максимального
элемента в матрице традиционно начинают
с элемента, стоящего в нулевой строке
и нулевом столбце. Затем организуют
вложенные циклы, которые позволят
проанализировать все элементы матрицы.
Если значение какой-либо элемента
матрицы окажется больше ранее найденного
максимума, то значение максимума
необходимо обновить, сделав равным
этому элементу. При этом сразу запоминаются
оба его индекса. Рассмотрим особенности
программной реализации этого алгоритма.

Объявляем
необходимые переменные. Переменная maxпредназначена для хранения значения
максимального элемента. Ее тип всегда
должен совпадать с типом элементов
матрицы. В переменнойimaxмы будем запоминать номер строки, в
которой находится максимальный элемент
матрицы, а в переменнойjmaxмы будем хранить номер столбца, в котором
находится максимальный элемент. Эти
две переменные всегда будут иметь
целочисленный тип.

Dim max, imax, jmax As Integer

Поиск максимума мы начинаем с элемента,
стоящего в нулевой строке и нулевом
столбце матрицы.

max = a(0, 0)

В переменные imaxиjmaxмы записываем соответственно номера
строки и столбца, которые равны нулю.

imax = 0

jmax = 0

Организуем цикл по всем строкам матрицы.

For i = 0 To m

Организуем цикл по столбцам матрицы.
Он позволит нам перебрать все элементы
в пределах i-й
строки.

For j = 0 To n

Анализируем очередной элемент матрицы.

If a(i, j) > max Then

Если его значение больше, чем значение
ранее найденного максимума, то необходимо
обновить значение максимума (переменной
max),
записав в него значение текущего
элемента.

max = a(i, j)

Сразу же запоминаем индексы нового
максимума. Номер строки, в которой
находится данный элемент матрицы,
хранится в переменной i,
а номер столбца – в переменнойj.

imax = i

jmax = j

End If

Next

Next

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

lstMatrix.Items.Add(«——————————«)

Заем выведем максимальное значение и
его индексы.

lstMatrix.Items.Add(«Максимум:»
+ Str(max))

lstMatrix.Items.Add(«Строка:»
+ Str(imax))

lstMatrix.Items.Add(«Столбец:»
+ Str(jmax))

Полный
текст программы представлен в приложении
38. Пример работы программы приведен на
рис. 53.

Рис. 53. Пример работы программы
поиска максимального элемента в
прямоугольной матрице

8.4. Обработка матрицы по строкам

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

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

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

Dim sum, kol As Integer

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

Dim sred As Single

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

lstMatrix.Items.Add(«——————————«)

Результаты вычислений мы будем выводить
в две колонки. В первой будет указываться
номер обрабатываемой строки матрицы,
а во второй – найденное значение среднего
арифметического четных элементов.
Выводим поясняющий заголовок. Константа
vbTabпозволяет организовать вывод в две
колонки.

lstMatrix.Items.Add(«Строка»
+ vbTab + _

«Сред.
арифм.»)

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

For i = 0 To m

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

sum = 0

kol = 0

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

For j = 0 To n

На каждом шаге цикла анализируем элемент
матрицы.

If a(i, j) Mod 2 = 0 Then

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

sum += a(i, j)

kol += 1

End If

Next

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

If kol = 0 Then

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

lstMatrix.Items.Add(Str(i)
+ vbTab + _

«В
строке нет четных»)

Else

Иначе мы делим сумму четных элементов
на их количество и получаем искомое
значение.

sred = sum / kol

В окно списка выводим номер строки и
найденное значение среднего арифметического
четных элементов в этой строке.

lstMatrix.Items.Add(Str(i)
+ vbTab + _

Str(sred))

End If

Next

Полный
текст программы представлен в приложении
39. Пример работы программы приведен на
рис. 54.

Рис. 54. Пример работы программы
поиска среднего арифметического четных
элементов в каждой строке прямоугольной
матрицы

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

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

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

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

  • Как найти предложение с обособленными однородными определениями
  • Как найти птенцов ласточек
  • Как найти контакт в телефоне если удалил
  • Как найти список запрещенных сайтов
  • Как найти аннуитетный платеж по кредиту

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

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