Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 14.11.2020
Сообщений: 24
1

Задача на сравнение частей двумерного массива с использованием подпрограммы

25.11.2020, 21:12. Показов 1244. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В двумерном массиве A из m строк и n столбцов (m-четное) для каждой его половины (верхней и нижней) вычислить и вывести количество положительных элементов. Также определить в какой из этих половин среднее арифметическое прочих элементов имеет большую величину (вывести одно из сообщений: Больше в верхней, Больше в нижней или Одинаково. Для вычисления среднего арифметического значения прочих элементов в произвольной части двумерного массива использовать подпрограмму.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.11.2020, 21:12
Ответы с готовыми решениями:

Задача на сравнение столбцов двумерного массива
Выдает ошибку ..is not a valid integr value. Также ему что то не нравится с динамическим массивом...

Задача с ладьей на шахматном поле с использованием двумерного массива
Дано шахматное поле 8х8. Рандомно выбирается положение ладьи на поле. Рандомно выбранной клетке...

Обработка массива данных, сравнение двух частей массива
Добрый день! Есть такой массив данных test.txt (разделитель ",") t-online.de,...

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

2
0 / 0 / 0
Регистрация: 14.11.2020
Сообщений: 24
26.11.2020, 23:19  [ТС] 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
50
51
52
53
54
55
56
57
58
59
60
#include "stdafx.h"
#include <iostream>
using namespace std;
 
const int n = 2;
int fun(int x[])
{
    int i, s = 0, sr=0;
    for (i = 0; i < n; i++) 
    {
        if (x[i] > 0)
        {
            s = s + x[i];
        }
    }
    sr = s / n;
    return sr;
}
 
 
int main()
{
    setlocale(LC_ALL, "ru");
    int i, j, t;
    int A[n][n], B[n], C[n];
 
    for (i = 0; i < n; i++)
    {
        for (j = 0; j < n; j++) 
        {
 
            cin >> A[i][j];
                }
}
    for (i = 0; i < n; i++)
    {
        for (j = 0; j < n; j++)
        {
            B[i] = A[i][j];
            t = fun(B);
            C[i] = t;
        }
    }
    for (i = 0; i < n; i++) 
    {
        cout << C[i] << endl;
    }
    cout << endl;
    if (C[0] > C[1]) {
        cout << "БОЛЬШЕ В ВЕРХНЕЙ";
    
    }
    else if (C[0] <C[1]) {
        cout << "БОЛЬШЕ В НИЖНЕЙ";
    }
    else if (C[0] == C[1]) {
        cout << "ОДИНАКОВО";
    }
    return 0;
}
Где-то проблема. Выдает неправильный результат. Не могу найти решение.
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
27.11.2020, 04:44 3
Лучший ответ Сообщение было отмечено Иваноп как решение

Решение

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
73
74
75
76
77
78
79
80
81
82
83
84
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>
using namespace std;
 
double AverageNoPos(double** A, int m, int n, int i1, int i2, int j1, int j2)
{
    int p=0;
    double avg=1.;
    for (int i = 0; i < m; i++)    
        for (int j = 0; j < n; j++)        
        if(i>=i1 && i<=i2 && j>=j1 && j<=j2 && A[i][j]<=0.) {p++;avg+=A[i][j];}            
    if(p) {avg-=1.;avg/=p;}    
    return avg;
}
 
int main()
{
    srand((int)time(0));
    char ch;
    int m, n, count_pos_up=0, count_pos_down=0;
    double avg_no_pos_up, avg_no_pos_down, eps=1e-9;
    
    do
    {
    cout << "even  m="; cin >> m;
    if (m%2) cout << "Repeat please...\n";
    }
    while (m%2);
    cout << "n="; cin >> n;
    
      double **A = new double*[m]; 
    for (int i = 0; i < m; i++)
       A[i]=new double[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)
            {
                if(i<m/2) count_pos_up++;
                else count_pos_down++;
            }    
        cout << setw(3) << A[i][j] << " ";
        }
    cout << "\n";
    }
    
    cout << "count positive up = " << count_pos_up << "\n";
    cout << "count positive down = " << count_pos_down << "\n";
    
    avg_no_pos_up=AverageNoPos(A,m,n,0,m/2-1,0,n-1);    
    avg_no_pos_down=AverageNoPos(A,m,n,m/2,m-1,0,n-1);    
    
    if(avg_no_pos_up!=1.)
    {      
        cout << "average no positive up = " << avg_no_pos_up << "\n";
    }
    else cout << "No positive numbers are absent in the up part\n";
    
    if(avg_no_pos_down!=1.)
    {  
        cout << "average no positive down = " << avg_no_pos_down << "\n";
    }
    else cout << "No positive numbers are absent in the down part\n";
    
    if(avg_no_pos_up!=1. && avg_no_pos_down!=1.)
    {  
        if(avg_no_pos_up > avg_no_pos_down+eps) ch='>';
        else if(avg_no_pos_up < avg_no_pos_down-eps) ch='<';
        else ch='=';
        cout << "average no positive up " << ch << " average no positive down\n";
    }
    else cout << "comparison is impossible\n";    
    
    for (int i = 0; i < m; i++)
    delete[]A[i];
    delete[]A;
system("pause");
return 0;
}
1
27.11.2020, 04:44
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.11.2020, 04:44
Помогаю со студенческими работами здесь

подпрограммы.обработка одномерного массива с использованием подпрограмм
Дан массив действительных чисел А1...,А16. получить min(A1*A9,A2*A10,....,A8*A16). Но работать не с...

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

Сравнение элементов двумерного массива
Доброго времени суток. Нужно написать программу, которая проверяет, есть ли во введённом с...

Сравнение строк двумерного массива
Здравствуйте. Есть проблема: Имеется двумерный массив к примеру(2,6) состоящий из элементов (1 и...

Сравнение элементов двумерного массива
Моя задача сделать программу в которую вначале водят данные типо ip (матрица из 4 элементов)....

Сравнение элементов двумерного массива
извините помогите пожалуйста . дан двумерный массив int a; 1 )как проверить сколько столбцов у...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru