Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 25.09.2018
Сообщений: 5

Переписать в одномерный массив элементы матрицы, превосходящие среднее арифметическое ее положительных элементов

27.09.2018, 18:52. Показов 1717. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
задание: Составить функцию переписывающую из матрицы А[m][n] в одномерный массив элементы, превосходящие среднее арфметическое положительных элементов этой матрицы. Исходная матрица в функции main() - B[4][4], Сама программа работает но не правильно считает среднее арифметическое значение!



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
#include "stdafx.h"
#include "iostream"
#include "conio.h"
#include "time.h"
using namespace std;
 
void mathMatrix(int** arr, int n, int m, int* b) {
    for (int i = 0; i < n; i++) {
        int count = 0;
        for (int j = 0; j < m; j++) {
            if (((arr[i][j]>0)&&(arr[i][j+1]<0)) || ((arr[i][j]<0)&&(arr[i][j+1]>0)))   {
                count++;
            }
        }
        b[i] = count;
    }
}
 
int maxInArr(int* arr, int m) {
    int max = arr[0];
    for (int i = 0; i < m; i++) {
        if (arr[i] > max) {
            max = arr[i];
        }
    }
    return max;
}
 
int main() {
    srand((unsigned)time(NULL));
    int n, m ;
    int** arr;
    int* b;
cout << "Input n and m:\n";
cin >> n >> m;
    arr = new int*[n];
    b = new int[n];
    for (int i = 0; i < n; i++) {
        arr[i] = new int[n];
    }
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            arr[i][j] = rand() % 200-100;
            cout << arr[i][j] << " ";
        }
        cout << endl;
    }
    mathMatrix(arr, n, m, b);
cout << "Array b:\n";
    for (int i = 0; i < n; i++) {
cout << b[i] << " ";
    }
    cout << endl;
    int max = maxInArr(b, n);
cout << "Max: " << max << "\n";
    getchar();
    getchar();
    return 0;
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.09.2018, 18:52
Ответы с готовыми решениями:

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

Cформировать одномерный массив , элементы которого - среднее арифметическое строк матрицы
Задана матрица целых чисел . Cформировать одномерный массив , элементы которого - среднее арифметическое строк матрицы.

Массив: Найти среднее арифметическое из всех положительных элементов этой матрицы
Привет всем) пожалуйста решите пару задач по теме массивы)) очень надо сдать эти задачи) а сроки поджимают) 1)Найти среднее ...

6
30 / 21 / 8
Регистрация: 23.09.2018
Сообщений: 186
27.09.2018, 19:29
Цитата Сообщение от denisgold Посмотреть сообщение
Сама программа работает но не правильно считает среднее арифметическое значение!
почему?
0
0 / 0 / 0
Регистрация: 25.09.2018
Сообщений: 5
27.09.2018, 19:35  [ТС]
Когда считаю не получается, максимальное значение правильное. Может где нибудь sum нужно дописать, про бывал диапазон, 2х2 так же, рандом менял все равно не верно.
0
30 / 21 / 8
Регистрация: 23.09.2018
Сообщений: 186
27.09.2018, 19:40
Цитата Сообщение от denisgold Посмотреть сообщение
b[i] = count;
может это стоить написать после цикла?
Цитата Сообщение от denisgold Посмотреть сообщение
Может где нибудь sum нужно дописать
где?
0
458 / 294 / 191
Регистрация: 23.06.2018
Сообщений: 678
27.09.2018, 19:49
Окей, у меня всего один вопрос: вы задание не перепутали когда сюда скидывали его? То что вы пытаетесь сделать в коде расходится с тем, что у вас написано в задании.
Вроде бы всё просто: взять среднее арифметическое всех положительных элементов матрицы, скопировать всё, что больше него.
Вы же почему-то в каждой строке считаете кол-во пар соседей с разными знаками и потом ищете в какой строке их больше.
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
27.09.2018, 20:32
Лучший ответ Сообщение было отмечено denisgold как решение

Решение

Цитата Сообщение от denisgold Посмотреть сообщение
Составить функцию переписывающую из матрицы А[m][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
#include <iostream>
#include <iomanip>
#include <ctime>
using namespace std;
 
void F (double**A, int m, int n, double*B, double delta)
{    
    int p=0;
    for (int i = 0; i < m; i++)    
    for (int j = 0; j < n; j++) 
    if (A[i][j]>delta) B[p++]=A[i][j]; 
}
 
int main()
{
    srand((int)time(0));
    int m, n, k=0, count_pos=0;
    
    cout <<"m="; cin >>m;
    cout <<"n="; cin >>n;
    
      double **A = new double*[m], sum_pos=0.0, delta; 
    for (int i = 0; i < m; i++)
      A[i]=new double[n];
      
    cout <<"Matrix A:\n";
    for (int i = 0; i < m; i++)
    {
    for (int j = 0; j < n; j++)
    {
    A[i][j]=rand()%19 - 9;
    if (A[i][j]>0) {sum_pos+=A[i][j]; count_pos++;}
    cout <<setw(3)<<A[i][j]<<" ";
    }
    cout << endl;
    }
    
    delta=sum_pos/count_pos;
    cout <<"delta="<<delta;
    
    for (int i = 0; i < m; i++)    
    for (int j = 0; j < n; j++) 
    if (A[i][j]>delta) k++;     
    
    double*B = new double[k];     
    
    F (A, m, n, B, delta);
    
    cout <<"\nMatrix B:\n";
    for (int i = 0; i < k; i++)    
    cout <<B[i]<<" ";   
    cout << endl;
    
    for (int i = 0; i < m; i++)
    delete [] A[i];
    delete [] A;
    delete [] B;
system("pause");
return 0;
}
1
0 / 0 / 0
Регистрация: 25.09.2018
Сообщений: 5
27.09.2018, 21:21  [ТС]
Большое спасибо, нашел ошибки!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.09.2018, 21:21
Помогаю со студенческими работами здесь

Из заданной матрицы сформировать одномерный массив; найти среднее арифметическое элементов полученного массива
Дана целочисленная прямоугольная матрица размера n x m. Сформировать одномерный массив, состоящий из элементов, лежащих на отрезке . Найти...

Подсчитать среднее арифметическое элементов каждого столбца матрицы и ввести все это в одномерный массив
Есть уже отсортированный двумерный массив NxM. Нужно подсчитать средн.арифмет. элементов каждого столбца и ввести все это в массив B. ...

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

Одномерный массив, найти среднее арифметическое отрицательных элементов
подскажите пожалуйста как решить: Дано два массива а (n) и в (n) .Найти среднее арифметическое отрицательных элементов в двух массивах....

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


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru