Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Лиза Бледных
0 / 0 / 0
Регистрация: 07.10.2018
Сообщений: 12
1

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

17.03.2019, 20:19. Просмотров 870. Ответов 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
59
60
61
62
63
64
65
#include "stdafx.h"
#include <iostream>
using namespace std;
 
 
int main ()
{
    setlocale(LC_ALL, "Russian");
    float *A;
    int n, m;
    cout << "Введите количество строк n: " << endl;
    cin >> n;
    cout << "Введите количество столбцов m: " << endl;
    cin >> m;
    if (n == m)
        cout << "Нужна прямоугольная матрица!" << endl;
    else if (n != m)
    {
        A = new float [n*m];
        cout << "Введите матрицу А: " << endl;
            for (int i = 0; i < n; i++)
                for (int j = 0; j < m; j++)
                {
                    cin >> *(A+i*m+j);
                    //A[i][j] = *(A+i*m+j);
                }
                cout << "Матрица А " << endl;
                for (int i = 0; i < n; i++)
                { 
                    for (int j = 0; j < m; j++)
                        cout << A[i*m+j] << " ";
                    cout << endl;
                    
                }
 
 int k = m;
                double *SrArifm = new double [k];
    for (int j = 0; j < m; j++)
    {
        
    double summ = 0;
       for (int i = 0; i < n; i++)
         {
            summ += *(A+i*m+j);
         }
    
       double SrArifm;
       SrArifm = (summ/n);
 
    }
       
  double result = 1;
  for (int i = 0; i < k; i++)
    {
  result *= SrArifm[i];
    } 
  cout << "Перемноженное среднее арифметическое каждого столбца: " << result << endl; 
 
  
  
            
    delete []A;
    system ("pause");
    return 0;
}
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.03.2019, 20:19
Ответы с готовыми решениями:

Найти среднее арифметическое каждого столбца матрицы
Доброго времени суток. Может кто-нибудь встречался с подобной задачей. Задача. Дана...

Найти среднее арифметическое для каждого столбца матрицы
Целое число задается в массиве A . Найдите среднее арифметическое для каждого столбца С++

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

Найти среднее арифметическое элементов, кратных 3, для каждого столбца матрицы
матрица n*m

Найти среднее арифметическое наименьших элементов каждого столбца квадратной матрицы
Дана квадратная матрица. Найти среднее арифметическое наименьших элементов каждого столбца. не...

4
mdonttrack
7 / 5 / 2
Регистрация: 22.09.2018
Сообщений: 26
17.03.2019, 22:47 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
#include "stdafx.h"
#include <iostream>
using namespace std;
 
 
int main()
{
    setlocale(LC_ALL, "Russian");
    float *A;
    int n, m;
    cout << "Введите количество строк n: " << endl;
    cin >> n;
    cout << "Введите количество столбцов m: " << endl;
    cin >> m;
    if (n == m)
        cout << "Нужна прямоугольная матрица!" << endl;
    else if (n != m)
    {
        A = new float[n*m];
        cout << "Введите матрицу А: " << endl;
        for (int i = 0; i < n; i++)
            for (int j = 0; j < m; j++)
            {
                cin >> *(A + i * m + j);
                //A[i][j] = *(A+i*m+j);
            }
        cout << "Матрица А " << endl;
        for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < m; j++)
                cout << A[i*m + j] << " ";
            cout << endl;
 
        }
        int k = m;
        double *SrArifm = new double[k];
        for (int j = 0; j < m; j++)
        {
 
            double summ = 0;
            for (int i = 0; i < n; i++)
            {
                summ += *(A + i * m + j);
                
            }
            *(SrArifm+j) = (summ / n);
        }
        double result = 1;
        for (int i = 0; i < k; i++)
        {
            result *= SrArifm[i];
        }
        cout << "Перемноженное среднее арифметическое каждого столбца: " << result << endl;
        delete[]A;
        system("pause");
        getchar();
        return 0;
    }
}
1
Лиза Бледных
0 / 0 / 0
Регистрация: 07.10.2018
Сообщений: 12
18.03.2019, 00:12  [ТС] 3
Всё работает! Вы просто не представляете, как мне помогли.
Но я всё же не совсем понимаю, как раз, эту 46-ую строку кода, где и сделала ошибку... Почему там идёт SrArifm+j ?
Ещё раз большое спасибо! Будем разбираться дальше
0
mdonttrack
7 / 5 / 2
Регистрация: 22.09.2018
Сообщений: 26
18.03.2019, 19:18 4
эти записи равнозначны
C#
1
*(SrArifm+j)==SrArifm[j]
ваша ошибка была в том что вместо того что бы данные вносить в массив вы вносили в новую переменную
а в массиве соответственно оставался мусор который при перемножении выдавал "страшный набор из цифр и букв"
(экспоненту порядок и мантиссу)
1
Лиза Бледных
0 / 0 / 0
Регистрация: 07.10.2018
Сообщений: 12
18.03.2019, 19:30  [ТС] 5
Уже разобралась, спасибо большое ещё раз
0
18.03.2019, 19:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.03.2019, 19:30

Среднее арифметическое элементов каждого столбца матрицы
Что не так? в SA выводит все элементы = 0 Задание: Найти среднее арифметическое элементов каждого...

Среднее арифметическое каждого (четного) столбца матрицы
Дано натуральное число n, действительная матрица размером n*9. Найти среднее арифметическое: а)...

Определить среднее арифметическое положительных элементов каждого столбца матрицы
дан двухмерный массив 5х6. Определить среднее арифметическое положительных элементов каждого...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru