Форум программистов, компьютерный форум CyberForum.ru

Получить вектор B, каждый элемент которого равен среднему арифметическому соответствующей строки массива A - C++

Восстановить пароль Регистрация
 
BoxHead
0 / 0 / 0
Регистрация: 25.04.2016
Сообщений: 26
02.07.2016, 15:05     Получить вектор B, каждый элемент которого равен среднему арифметическому соответствующей строки массива A #1
Дана матрица A. Получить вектор B, каждый элемент которого равен среднему арифметическому соответствующей строки массива A.
Ввод: Из консоли. Подается число строк массива n, затем число столбцов m, затем элементы массива, построчно, через пробел.
Вывод: Каждый элемент вектора B через пробел. Вещественное число с точностью 2.
Длина вектора B соответственно равна n.
Пример ввода:
2 6
8 5 6 4 2 8
4 5 10 6 2 4
Пример вывода:
5.50 5.17
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.07.2016, 15:05     Получить вектор B, каждый элемент которого равен среднему арифметическому соответствующей строки массива A
Посмотрите здесь:

C++ Получить третий массив той же размерности, каждый элемент которого равен большему из соответствующих элементов данного массива
C++ Сформировать одномерный массив, каждый элемент которого равен наибольшему по модулю элементу соответствующей строки двумерного массива.
C++ Построить вектор, каждый элемент которого равен количеству равных элементов в соответствующей строке матрицы
Задача по многомерным массивам (Сформировать одномерный массив, каждый элемент которого равен количеству элементов соответствующей строки, больших да) C++
C++ Создать массив, каждый элемент которого равен среднему арифметическому соответствующей строки данной матрицы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Peoples
715 / 375 / 339
Регистрация: 06.02.2016
Сообщений: 989
Записей в блоге: 10
Завершенные тесты: 3
02.07.2016, 17:10     Получить вектор B, каждый элемент которого равен среднему арифметическому соответствующей строки массива A #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
#include<iostream>
#include <vector>
#include <iomanip>
using namespace std;
int main() {
    setlocale(LC_ALL,"RUS");
    int n,m;
    cout<<"Введите количество строк и столбцов"<<endl;
    cin>>n>>m;
    int a[n][m];
    for (int i=0; i<n; i++)
        for (int j=0; j<m; j++) {
            cin>>a[i][j];
        }
 
    for (int i=0; i<n; i++) {
 
        for (int j=0; j<m; j++)
            cout<<setw(4)<<a[i][j]<<" ";
        cout<<endl;
    }
    double sum=0;
    vector<double>val;
    cout<<endl;
    for (int i=0; i<n; i++) {
        sum=0;
        for (int j=0; j<m; j++) {
            sum+=a[i][j];
        }
        double avg=sum/m;
        val.push_back(avg);
    }
    cout<<endl;
    cout<<"Vector"<<endl;
    for (vector<double>::iterator iter=val.begin(); iter!=val.end(); iter++) {
        cout<<fixed<<setprecision(2)<<*iter<<" ";
    }
 
    system("pause") ;
    return 0;
}
Хрисипп
 Аватар для Хрисипп
17 / 27 / 8
Регистрация: 09.02.2016
Сообщений: 212
02.07.2016, 17:44     Получить вектор B, каждый элемент которого равен среднему арифметическому соответствующей строки массива A #3
Цитата Сообщение от Peoples Посмотреть сообщение
C++
Цитата Сообщение от BoxHead Посмотреть сообщение
Дана матрица A.
вот покороче. вроде работает. только VS жалуется, что массив не константами объявляется, я забил и gcc скомпилил
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
#include <vector>
 
 
using namespace std;
 
int main()
{
    int x, y;
    cout<<"Number of rows   "; cin>>y;
    cout<<"Number of columns   "; cin>>x;
    int m[y][x];
    vector <double> vec;
    for (int str = 0; str < y; str++) {
        double sum=0;
        cout<<"Row number "<<str+1<<endl;;
        for (int stb = 0; stb < x;stb++) {
            cin>>m[stb][str];
            sum+=m[stb][str];
        }
        vec.push_back(sum/x);
 
    }
    cout<<"\n\nShowTime\n\n";
    for (int sh = 0; sh < (y); sh++) {
        cout << vec[sh]<<endl;
    }
    return 0;
}
BoxHead
0 / 0 / 0
Регистрация: 25.04.2016
Сообщений: 26
02.07.2016, 18:52  [ТС]     Получить вектор B, каждый элемент которого равен среднему арифметическому соответствующей строки массива A #4
Спасибо большое Peoples! Все работает просто замечательно!
Но есть маленькое но, ее надо бы упростить (просто я банально не проходил некоторые функции). Объясните пожалуйста те места которые мне не понятны и если это возможно то упростите ее. (Я в вашей программе кое что убрал то что мне не нужно было)
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
#include<iostream>
#include <vector> //я так понимаю эта библиотека отвечает за вектора
#include <iomanip> //это я не знаю что это!
using namespace std;
int main() {
    setlocale(LC_ALL,"RUS");
    int n,m;
    scanf("%d", &n);
    scanf("%d", &m);
    int a[20][20];
    for (int i=0; i<n; i++)
        for (int j=0; j<m; j++) {
            scanf("%d", &a[i][j]);
        }
    double sum=0;
    vector<double>val; //это я не знаю что это!
    for (int i=0; i<n; i++) {
        sum=0;
        for (int j=0; j<m; j++) {
            sum+=a[i][j];
        }
        //все что ниже я не знаю что это!
        double avg=sum/m;
        val.push_back(avg);
    } 
    for (vector<double>::iterator iter=val.begin(); iter!=val.end(); iter++) {
        cout<<fixed<<setprecision(2)<<*iter<<" ";
    }
  printf("\n");
    system("pause") ;
    return 0;
}
Peoples
715 / 375 / 339
Регистрация: 06.02.2016
Сообщений: 989
Записей в блоге: 10
Завершенные тесты: 3
02.07.2016, 19:18     Получить вектор B, каждый элемент которого равен среднему арифметическому соответствующей строки массива A #5
C++
1
2
3
4
        //все что ниже я не знаю что это!
        double avg=sum/m; // почитали сумму для строки, теперь к переменной avg присвоим  значение  sum/n(среднее арифметическое, то есть сумма элементов данной строки делить на количество этих элементов, то есть количества столбцов
        val.push_back(avg);   // стандартная функция добавления значения в конец вектор (с помощью неё и заполняют вектора) 
    }
C++
1
2
3
4
5
6
7
8
 
//все что ниже я не знаю что это!
        double avg=sum/m;
        val.push_back(avg);
    } 
    for (int i=0;i!=val.size();i++) {  // такой вариант перебора должен быть вам знаком
        cout<<fixed<<setprecision(2)<<val[i]<<" ";  //<<fixed<<setprecision(2)<< выводит 2 знака после запятой, как написано в задании. Вызывается библиотекой #include <iomanip>, #include <vector>-эта для работы с векторами, вектор объявляется vector<double> val--это значит объявления вектора val типа double
    }
val.size(); -возвращает размер вектора, но или же можно написать просто n, ведь элементов в нём столько же сколько строк
BoxHead
0 / 0 / 0
Регистрация: 25.04.2016
Сообщений: 26
02.07.2016, 19:50  [ТС]     Получить вектор B, каждый элемент которого равен среднему арифметическому соответствующей строки массива A #6
Спасибо большое Peoples! Более менее разобрался с новыми для меня функциями.
Помогите с последним, на что вот это можно заменить?
C++
1
2
vector<double>val;
val.push_back(avg);
Или это нельзя ничем заменить?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.07.2016, 19:54     Получить вектор B, каждый элемент которого равен среднему арифметическому соответствующей строки массива A
Еще ссылки по теме:

C++ Определить квадратную матрицу, каждый элемент которой равен сумме элементов соответствующей строки
C++ Получить массив, каждый элемент которого равен среднему арифметическому остальных элементов исходного массива
Получить массив B, очередной элемент которого равен среднему арифметическому тройки элементов массива A C++

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

Или воспользуйтесь поиском по форуму:
Peoples
715 / 375 / 339
Регистрация: 06.02.2016
Сообщений: 989
Записей в блоге: 10
Завершенные тесты: 3
02.07.2016, 19:54     Получить вектор B, каждый элемент которого равен среднему арифметическому соответствующей строки массива A #7
BoxHead, вектор есть вектор, создать его можно только так.
Yandex
Объявления
02.07.2016, 19:54     Получить вектор B, каждый элемент которого равен среднему арифметическому соответствующей строки массива A
Ответ Создать тему
Опции темы

Текущее время: 20:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru