0 / 0 / 0
Регистрация: 25.04.2016
Сообщений: 92
1

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

02.07.2016, 15:05. Показов 2564. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дана матрица 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
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.07.2016, 15:05
Ответы с готовыми решениями:

Создать массив, каждый элемент которого равен среднему арифметическому соответствующей строки данной матрицы
Матрица А(5,3) задать по формуле A=-cos(-4,3i-j). Создать новый одномерный массив, каждый элемент...

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

Из матрицы получить массив, каждый элемент которого равен среднему арифметическому каждой строки матрицы
Очень прошу помочь! Из 2мерной квадратной матрицы (7х7) получить 1мерный массив, каждый элемент...

Получить массив B, очередной элемент которого равен среднему арифметическому тройки элементов массива A
Задача простая :) (На языке Си/Си++) Из массива а0, а1, ... , а(3n-1) получить массив b0, b1,...

6
Эксперт С++
1623 / 953 / 782
Регистрация: 06.02.2016
Сообщений: 2,452
Записей в блоге: 30
02.07.2016, 17:10 2
Лучший ответ Сообщение было отмечено BoxHead как решение

Решение

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;
}
1
19 / 29 / 13
Регистрация: 09.02.2016
Сообщений: 230
02.07.2016, 17:44 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;
}
0
0 / 0 / 0
Регистрация: 25.04.2016
Сообщений: 92
02.07.2016, 18:52  [ТС] 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;
}
0
Эксперт С++
1623 / 953 / 782
Регистрация: 06.02.2016
Сообщений: 2,452
Записей в блоге: 30
02.07.2016, 19:18 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, ведь элементов в нём столько же сколько строк
1
0 / 0 / 0
Регистрация: 25.04.2016
Сообщений: 92
02.07.2016, 19:50  [ТС] 6
Спасибо большое Peoples! Более менее разобрался с новыми для меня функциями.
Помогите с последним, на что вот это можно заменить?
C++
1
2
vector<double>val;
val.push_back(avg);
Или это нельзя ничем заменить?
0
Эксперт С++
1623 / 953 / 782
Регистрация: 06.02.2016
Сообщений: 2,452
Записей в блоге: 30
02.07.2016, 19:54 7
BoxHead, вектор есть вектор, создать его можно только так.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.07.2016, 19:54
Помогаю со студенческими работами здесь

Сформировать одномерный массив, каждый элемент которого равен наибольшему по модулю элементу соответствующей строки двумерного массива.
Дан двумерный массив целых чисел. Сформировать одномерный массив, каждый элемент которого равен...

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

Массив: Заполнить массив B, i-тый элемент которого равен среднему арифметическому первых i элементов массива А...
Дан одномерный массив целых чисел a1, a2, …, an. Заполнить массив b1, b2, …, bn, i-тый элемент...

Сформировать из массива A массив B: элемент B(K) равен среднему арифметическому элементов массива A с номерами от K до N
Как перевести из &quot;С&quot; в С++? Дан массив A размера N. Сформировать новый массив B того же...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru