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

Valeriy.boss

6 / 0 / 0

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

Сообщений: 10

1

Найти среднеарифметическое максимальных элементов в каждой строке матрицы

24.02.2012, 10:54. Показов 786. Ответов 2

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


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

Здравствуйте, помогите пожалуйста.

Задание:

a) Статическая память. Двумерный массив. Дан массив целых чисел. Найти среднеарифметическое
максимальных элементов в каждой строке.

b) Динамическая память. Одномерный массив. Дан массив вещественных чисел. Правда ли, что
цифры минимального элемента входят в состав максимального числ

Исходный код программы для пункта а:

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
#include <stdio.h>
#include <time.h>
int main ()
{
    //a) Статическая память. Двумерный массив. Найти сумму элементов больше 15.    
//Заводим значение о количетсве строк и столбцов массива. 
int n=0, m=0;
    printf ("Enter number rows and colums in massiven");
    scanf("%d%d",&n,&m);
    //Инициализируем массив. 
int mas[n][m];
    //Использование системного времени
srand(time(NULL));
    //Заполнение массива случайными числами
int i=0, j=0;
    for(i = 0; i < n; i++)
        for(j = 0; j < m; j++)
            mas[i][j] = rand() %100 + 1;
    //Вывод массива
printf("nThe initial array of [%d, %d]:n", n, m);
    for(i = 0; i < n; i++)
    {
        for(j = 0; j < m; j++)
            printf("%3d   ", mas[i][j]);
        printf("n");
    }
//Нахождение суммы элементов
int sum = 0; //переменная для хранения суммы
    for(i = 0; i < n; i++)
        for(j = 0; j < m; j++)
            if (mas[i][j]>15)
                sum+=mas[i][j];
    printf("nSumma elements = %2dn", sum);
    return 0;

Исходный код программы для пункта б:

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
#include <stdio.h>
#include <malloc.h>
#include <time.h>
int main ()
{
    //b) Динамическая память. Одномерный массив. Определить количество чётных элементов и
заканчивающихся на 3. 
    //Вводим информацию о количетсве элементов массива. 
int n=0;
    printf ("Enter number elements in massiven");
    scanf("%d",&n);
    //Инициализируем массив.     
int  *arr;
    arr = (int *) (malloc(n*sizeof(int)));
    if (!arr) // условие логического отрицания
    { // выход за пределы памяти
        printf("Out of memory. Press any key: ");
        return 1;
    }  
//Использование системного времени
srand(time(NULL));                            
    //Заполнение массива случайными числами
int i=0;
    for(i = 0; i < n; i++)          
        arr[i] = rand() %1000 + 1;    
    //Вывод массива
printf("nThe initial array of [%d]:n", n);
    for(i = 0; i < n; i++)            
        printf("%3d   ", arr[i]);       
    //поиск четных элементов
int sum1 = 0; //сумма четных элементов
    int sum2 = 0; //сумма элементов заканчивающихся на 3
    for(i = 0; i < n; i++)                
        if (arr[i]%2==0)
            sum1+=arr[i];
        else if (arr[i]%10==3)
            sum2+=arr[i];
printf ("nsumma chentnih elementov = %d nsumma elementov on 3 = %d ", sum1, sum2);
    return 0;

Спасибо!



0



Devochka

31 / 19 / 3

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

Сообщений: 98

24.02.2012, 18:36

2

Первое задание глупое – зачем искать средне арифметическое максимумов, если оно будет равно этому максимуму.

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
# include <iostream>
#include <ctime>
using namespace std;
 
int main()
{
        setlocale(LC_ALL, "Russian");
        srand (time(0));
 
        const int n = 3;
        const int m = 5;
        int Massiv [n][m];
        
        for (int i = 0; i < n; i++) // заполнение массива
                for (int j = 0; j < m; j++)
                        Massiv [i][j] = rand() % 101;
        
        cout << "Наш массив :n" << endl;
        for (int i = 0; i < n; i++) // вывод массива на экран
        {
                for (int j = 0; j < m; j++)
                        cout << Massiv [i][j] << 't';
                cout << endl;
        }
        
        int Max [n]; // объявляем новый массив, в который сложим максимумы каждой строки
        int max = -100; // максимумом объявляем самое маленькое число нашего диапазона, чтобы считать и отрицательные числа
        for (int i = 0; i < n; i++)
        {
                
                Max [i] = 0;
                
                for (int j = 0; j < m; j++)
                {
                        max = (max > Massiv [i][j]) ? max : Massiv [i][j];
                }
                Max [i] = max; // записываем максимум строки в массив
                max = -100; // делаем максимум опять самым маленьким
        }
 
        cout << "Наш массив максимумов:n" << endl;
        for (int i = 0; i < n; i++) // выводим массив максимумов на экран
        {
                cout << Max [i] << 't';
        }
        cout << endl;
        
        return 0;
}

Код на с++. Думаю, труда не составит поменять на с, ведь пример у тебя есть перед глазами.

Добавлено через 1 минуту
Забыла поменять: max = 0; в 27 и 38 строчках.

Добавлено через 3 минуты
А исходный код второго задания позабавил. Нам надо узнать, какие цифры входят в число, а дан код нахождения сумм. Хоть бы убрал ненужное.



1



R136a1

143 / 112 / 36

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

Сообщений: 261

24.02.2012, 19:20

3

Цитата
Сообщение от Valeriy.boss
Посмотреть сообщение

a) Статическая память. Двумерный массив. Дан массив целых чисел. Найти среднеарифметическое
максимальных элементов в каждой строке.

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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
#define ROW 5
#define COLUMN 5
 
int main()
{
    int mass[ROW][COLUMN];
    int max[ROW];
    float res = 0;
    int i,j;
 
    srand(time(NULL));
 
    for(i = 0; i < ROW; i++)
    {
        for(j = 0; j < COLUMN; j++)
        {
            mass[i][j] = rand() % 20 - 10;
            printf("%5d",mass[i][j]);
        }
 
        printf("n");
    }
 
    for(i = 0; i < ROW; i++)
    {
        max[i] = mass[i][0];
 
        for(j = 1; j < COLUMN; j++)
            max[i] = max[i] < mass[i][j] ?
                 mass[i][j] : max[i];
 
        res += max[i];
    }
 
    printf("Среднее арифметическое максимумов: %.1fn",res/ROW);
 
    return 0;
}

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

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

Первое задание глупое – зачем искать средне арифметическое максимумов, если оно будет равно этому максимуму.

наверное имелось в виду брать по одному максимальному элементу с каждой строки

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

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

int max = -100;

ну а если все числа < -100 ?
если уж собираетесь делать так, то правильнее будет

C++
1
int max = std::numeric_limits< int >::min();

из <limits>



1



IT_Exp

Эксперт

87844 / 49110 / 22898

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

Сообщений: 92,604

24.02.2012, 19:20

Помогаю со студенческими работами здесь

В каждой строке матрицы найти количество элементов, больших среднего арифметического
Дана матрица размера 5 x 10. В каждой строке найти количество элементов, больших среднего…

Сформировать вектор из максимальных элементов каждой строки матрицы
Задача: Дана матрица A целых чисел. Сформировать вектор В из максимальных элементов каждой строки….

Найти сумму элементов в каждой строке матрицы, сумму элементов в каждом столбце, max элемент из сумм
Задан двумерный массив целых чисел размерности N на M, массив либо вводится пользователем, либо…

Найти в каждой строке матрицы, если там есть отрицательный элемент, ср. арифметическое всех элементов, исключая нулевые
Задана матрица Z(5,4) Найти в каждой строке, если там есть отрицательный элемент, среднее…

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

Или воспользуйтесь поиском по форуму:

3

На чтение 10 мин Просмотров 9 Опубликовано 10 апреля 2023 Обновлено 10 апреля 2023

Содержание

  1. Основные алгоритмы и их реализация на Python
  2. 2.4 Обработка двумерных массивов (матриц)
  3. Основные алгоритмы и их реализация на Python
  4. 2.4 Обработка двумерных массивов (матриц)
  5. Находить среднее арифметическое и минимальное значение элементов каждой строки матрицы, до выполнения условия. Блок-схема.
  6. Примеры алгоритмов обработки матрицами

Основные алгоритмы и их реализация на Python

2.4 Обработка двумерных массивов (матриц)

Двумерные массивы являются аналогами матриц и имеют «прямоугольную» (табличную) структуру. Описываются массивы так же, как одномерные. Разница состоит в том, что у элемента двумерного массива две координаты (два индекса) — номер строки и номер столбца, в которых находится элемент.

Ввод массива осуществляется построчно при помощи двух циклов. Пусть — количество столбцов, — количество строк. Элементы массива обозначим как mas[i, j] , первый индекс — номер строки, второй — номер столбца.

Вывод массива на экран осуществляется при помощи аналогичных циклов.

Здесь «пустой» оператор вывода обеспечивает переход на новую строку.

В Python для работы с многомерными (когда используется два и более индексов) массивами можно использовать вложенные списки (списки списков, списки списков списков и т. д.).

Однако Python предоставляет более удобный инструмент создания и преобразования многомерных массивов — библиотеку numpy (Numeric Python).

Создание двумерного массива в Python может выглядеть так:

Сначала с помощью функции (метода) numpy.zeros() создаётся двумерный массив (матрица), заполненный нулями, а потом вместо нулей подставляются реальные значения. Индексы элементов, так же как в строках, кортежах и списках, начинаются с 0 (первый — верхний левый — элемент матрицы в Python имеет индекс [0,0]). Оператор print выводит индексы очередного элемента матрицы, который нужно ввести.

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

  • — количество строк в массиве;
  • — количество столбцов в массиве;
  • — элемент массива;
  • — индексы элемента массива.

Блок-схема алгоритма решения показана на рис. 2.15.

Текст программы на «псевдоязыке»:

Текст программы на Python:

print ‘Среднее значение по строкам:’,C

Источник

Основные алгоритмы и их реализация на Python

2.4 Обработка двумерных массивов (матриц)

Двумерные массивы являются аналогами матриц и имеют «прямоугольную» (табличную) структуру. Описываются массивы так же, как одномерные. Разница состоит в том, что у элемента двумерного массива две координаты (два индекса) — номер строки и номер столбца, в которых находится элемент.

Ввод массива осуществляется построчно при помощи двух циклов. Пусть — количество столбцов, — количество строк. Элементы массива обозначим как mas[i, j] , первый индекс — номер строки, второй — номер столбца.

Вывод массива на экран осуществляется при помощи аналогичных циклов.

Здесь «пустой» оператор вывода обеспечивает переход на новую строку.

В Python для работы с многомерными (когда используется два и более индексов) массивами можно использовать вложенные списки (списки списков, списки списков списков и т. д.).

Однако Python предоставляет более удобный инструмент создания и преобразования многомерных массивов — библиотеку numpy (Numeric Python).

Создание двумерного массива в Python может выглядеть так:

Сначала с помощью функции (метода) numpy.zeros() создаётся двумерный массив (матрица), заполненный нулями, а потом вместо нулей подставляются реальные значения. Индексы элементов, так же как в строках, кортежах и списках, начинаются с 0 (первый — верхний левый — элемент матрицы в Python имеет индекс [0,0]). Оператор print выводит индексы очередного элемента матрицы, который нужно ввести.

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

  • — количество строк в массиве;
  • — количество столбцов в массиве;
  • — элемент массива;
  • — индексы элемента массива.

Блок-схема алгоритма решения показана на рис. 2.15.

Текст программы на «псевдоязыке»:

Текст программы на Python:

print ‘Среднее значение по строкам:’,C

Источник

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

Здравствуйте.
Мне по информатикке задали написать алгоритм и блок схему.
Написать алгоритм и составить блок схему.
Дана матрица A с 3 столбцами и 7 строками. Начиная с первой строки находить и печатать среднее арифметическое элементов каждой строки и минимальное значение из значений элементов строки, заканчивая цикл, если разница среднего и минимального из элементов очередной строки оказалась больше заданого значения T.

Впринципе ничего сложного, но я запутался в 1 месте.
Алгоритм я составил на подобии:
1) Ввод матрицы A(i, j) /в конкретном задании A(3, 7)/, ввод ограничения Т, ввод переменных sred для среднего арифметического, min для минимального значения из значений элементов строки, sum /думаю понадобится для подсчета среднего арифметического/.

2) В заданном цикле искать среднее арифметическое каждой строки, начиная с первой, и минимальный элемент этой строки;
Вывод их на печать (или на экран);
После чего сравнить разницу среднего и минимального с введенным ранее ограничением Т.
Если разница меньше или равна Т, то переход на след строку;
Если разница больше T, то закончить цикл и выйти из программы.

Проблема заключается в блок схеме. У меня не получается составить правильный код программы (С++, Delphi, Basic — не важно) с последовательностью формул, чтобы правильно составить блок схему.

Если кто сможет помоч заранее благодарен!

Пример блок схемы:
написать алгоритм и составить блок схему для выражения:
S = X+X^3 / 3! + x^5 / 5! + . + x^(2n + 1) / (2n + 1)!

правда на етой блок схеме считается значение для 1 X, а не как в задании сумма X, но принцип построения тот же.

Вычислить среднее арифметическое значение положительных элементов каждой строки матрицы
нуждаюсь в помощи , кому не сложно помогите пожалуйста 1) для заданного массива А(4,6) вычислить.

Напечатать матрицу, минимальное значение каждой строки, среднее арифметическое каждого столбца
Создайте матрицу (5 строк, 7 столбцов), которая содержит двузначное случайное число (размер.

Найти среднее арифметическое элементов каждой строки матрицы Q (lm) и отнять его от элементов этой строки. размер матрицы 7х7.заранее спасибо
Найти среднее арифметическое элементов каждой строки матрицы Q (lm) и отнять его от элементов этой.

Найти среднее арифметическое значение каждой строки матрицы
Помогите пожалуйста. дана матрица H= размером (p x q). p=3; q=5; Найти среднее арифметическое.

Источник

Примеры алгоритмов обработки матрицами

Алгоритмы обработки матриц

Матрица— это двумерный массив, каждый элемент которого имеет два индекса: номер строки — i; номер столбца — j. Поэтому для работы с элементами матрицы необходимо использовать два цикла. Если значениями параметра первого цикла будут номера строк матрицы, то значениями параметра второго — столбцы (или наоборот). Обработка матрицы заключается в том, что вначале поочередно рассматриваются элементы первой строки (столбца), затем второй и т.д. до последней. Рассмотрим основные операции, выполняемые над матрицами при решении задач.

Алгоритм ввода-вывода матриц

Матрицы, как и массивы, нужно вводить (выводить) поэлементно. Блок-схема ввода элементов матрицы изображена на рис. 4.1. Вывод матрицы организуется аналогично вводу.

Рассмотрим несколько задач обработки матриц. Для их решения напомним читателю некоторые свойства матриц (рис. 4.2):

  • если номер строки элемента совпадает с номером столбца (i = j), это означает что элемент лежит на главной диагонали матрицы;
  • если номер строки превышает номер столбца (i > j), то элемент находится ниже главной диагонали;
  • если номер столбца больше номера строки (i n.

Примеры алгоритмов обработки матрицами

ПРИМЕР 4.1. Найти сумму элементов матрицы, лежащих выше главной диагонали (рис 4.3).

Рис. 4.3. Рисунок к условию задачи из примера 4.1

Алгоритм решения данной задачи (рис. 4.4) построен следующим образом: обнуляется ячейка для накапливания суммы (переменная S). Затем с помощью двух циклов (первый по строкам, второй по столбцам) просматривается каждый элемент матрицы, но суммирование происходит только в том случае если, этот элемент находится выше главной диагонали, то есть выполняется свойство i

ПРИМЕР 4.2. Вычислить количество положительных элементов квадратной матрицы, расположенных по ее периметру и на диагоналях. Напомним, что в квадратной матрице число строк равно числу столбцов.

Прежде чем преступить к решению задачи рассмотрим рисунок 4.6, на котором изображена схема квадратных матриц различной размерности. Из условия задачи понятно, что не нужно рассматривать все элементы заданной матрицы. Достаточно просмотреть первую и последнюю строки, первый и последний столбцы, а так же диагонали. Все эти элементы отмечены на схеме, причем черным цветом выделены элементы, обращение к которым может произойти дважды. Например, элемент с номером (1,1) принадлежит как к первой строке, так и к первому столбцу, а элемент с номером (N,N) находится в последней строке и последнем столбце одновременно. Кроме того, если N — число нечетное (на рисунке 4.6 эта матрица расположена слева), то существует элемент с номером (N/2+1, N/2+1), который находится на пересечении главной и побочной диагоналей. При нечетном значении N (матрица справа на рис. 4.6) диагонали не пересекаются.

Рис. 4.6. Рисунок к условию задачи из примера 4.2

Итак, разобрав подробно постановку задачи, рассмотрим алгоритм ее решения. Для обращения к элементам главной диагонали вспомним, что номера строк этих элементов всегда равны номерам столбцов. Поэтому, если параметр i изменяется циклически от 1 до N, то Ai,i — элемент главной диагонали. Воспользовавшись свойством, характерным для элементов побочной диагонали получим: i+j-1 = n > j = n-i+1, следовательно, для i=1,2,…,n элемент Аi,n-i+1 — элемент побочной диагонали. Элементы, находящиеся по периметру матрицы записываются следующим образом: А1,i — первая строка, АN,i — последняя строка и соответственно Аi,1 — первый столбец, Аi,N — последний столбец.

Блок-схема описанного алгоритма изображена на рис. 4.7. В блоке 1 организуется цикл для обращения к диагональным элементам матрицы. Причем в блоках 2-3 подсчитывается количество положительных элементов на главной диагонали, а в блоках 5-6 на побочной. Цикл в блоке 6 задает изменение параметра i от 2 до N-1. Это необходимо для того, чтобы не обращать к элементам, которые уже были рассмотрены: A11, A1N, AN,1 и AN,N. Блоки 7-8 подсчитывают положительные элементы в первой строке, 9 и 10 — в последней строке, 11 и 12 — в первом столбце, а 13 и 14 в последнем. Блок 15 проверяет, не был ли элемент, находящийся на пересечении диагоналей, подсчитан дважды. Напомним, что это могло произойти только в том случае, если N — нечетное число и этот элемент был положительным. Эти условия и проверяются в блоке 16, который уменьшает вычисленное количество положительных элементов на единицу.

Рис. 4.7. Блок-схема к примеру 4.2

ПРИМЕР 4.3. Проверить, является ли заданная квадратная матрица единичной. Единичной называют матрицу, у которой элементы главной диагонали — единицы, а все остальные — нули.

Решать задачу будем так. Предположим, что матрица единичная (FL=ИСТИНА) и попытаемся доказать обратное. Если окажется, что хотя бы один диагональный элемент не равен единице или любой из элементов вне диагонали не равен нулю, то матрица единичной не является (FL=ЛОЖЬ). Воспользовавшись логическими операциями все эти условия можно соединить в одно и составить блок-схему (рис. 4.8).

Рис. 4.8. Блок-схема к примеру 4.3

ПРИМЕР 4.4. Преобразовать исходную матрицу так, чтобы первый элемент каждой строки был заменен средним арифметическим элементов этой строки.

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

ПРИМЕР 4.5. Задана матрица An, m. Сформировать вектор Pm, в который записать номера строк максимальных элементов каждого столбца.

Алгоритм решения этой задачи следующий: для каждого столбца матрицы находим максимальный элемент и его номер, номер максимального элемента j-го столбца матрицы записываем в j-й элемент массива P. Блок-схема алгоритма приведена на рис. 4.10.

ПРИМЕР 4.6. Написать программу умножения двух матриц An,m и Bm,l.

Например, необходимо перемножить две матрицы

Воспользовавшись правилом «строка на столбец», получим матрицу:

В общем виде формула для нахождения элемента Ci,j матрицы имеет вид:

где i = 1,Nи j = 1,L.

Обратите внимание, что проводить операцию умножения можно только в том случае, если количество строк левой матрицы совпадает с количеством столбцов правой. Кроме того, A >

Источник

  • В этой теме 0 ответов, 1 участник, последнее обновление 3 года, 3 месяца назад сделано Васильев Владимир Сергеевич.
  • Сообщения

    • Написать программу, которая для целочисленной матрицы 10х10 определяет среднее арифметическое ее элементов и количество положительных элементов в каждой строке.

      Материалы по теме: Массивы в С++

      Программа должна:

      1. осуществлять ввод с клавиатуры значений элементов целочисленной матрицы;
      2. определять среднее арифметическое элементов целочисленной матрицы;
      3. определять количество положительных элементов в каждой строке целочисленной матрицы;
      4. выводить результаты вычислений.

      Определение среднего арифметического прямоугольной матрицы воспользуемся формулой:

      $$S = frac{sumlimits_{i=0}^{nrow} sumlimits_{j=0}^{ncol} A_{i,j}}{nrowcdot ncol} $$

      где a[i][j] —элемент i-й строки (i= 1, 2,..., nrow), j-го столбца (j=1, 2,..., ncol).

      Блок-схема алгоритма:

      Исходный код программы:

      #include <iostream>
      #include <iomanip> // для использования манипулятора
      
      using namespace std;
      
      void main()
      {
      
          // инициализация переменных
      
          const int nrow = 10, ncol = 20;
          int a[nrow][ncol];
          int i, j;
      
          setlocale(LC_ALL, "rus"); // возможность вывода информации на экран на русском языке
      
          // ввод элементов массива с клавиатуры
      
          cout << "Введите элементы массива:" << endl;
          for (i = 0; i < nrow; i++)
              for (j = 0; j < ncol; j++)
                  cin >> a[i][j];
      
          // вывод элементов массива на экран
          // ширина поля для вывода устанавливается в четыре символа
          //с помощью манипулятора setw()
      
          for (i = 0; i < nrow; i++) {
              for (j = 0; j < ncol; j++)
                  cout << setw(4) << a[i][j] << " ";
              cout << endl;
          }
      
          // инициализация переменных
          int n_posl_el;
          float s = 0;
      
          // обработка элементов матрицы для определения ее характеристик
      
          for (i = 0; i < nrow; i++) {
              n_posl_el = 0;
              for (j = 0; j < ncol; j++) {
                  s += a[i][j]; // сумма всех элементов матрицы
                  if (a[i][j] > 0)
                      n_posl_el++; // подсчет положительных элементов строки
              }
              cout << "Строка:" << i << "количество: " << n_posl_el << endl;
          }
          s /= nrow * ncol; // расчет среднего арифметического
          cout << "Среднее арифметическое" << s << endl;
      
          system("pause"); // осуществляет задержку экрана
      }
  • Автор

    Сообщения

  • Для ответа в этой теме необходимо авторизоваться.

Добавить комментарий