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

Создать вектор с суммами строк матрицы и определить номер строки с максимальной суммой

14.01.2016, 15:52. Показов 555. Ответов 14

Есть программа, в которой выводится массив. Затем ищется строка с максимальным значением и выводится на экран. Так вот, проблема в том, что я не знаю, как сделать следующие задания
1. Вывести на экран исходный массив, а также вектор, содержащий суммы строк и номер строки с максимальной суммой.
2. Использовать исходный массив для расчёта формулы: f(x)=x^4+x^3=6*x^2+0,5
Помогите, пожалуйста. Очень много тем просмотрел - ничего не могу найти. Возможно, это я глуп, но прошу помощи

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<ctime>
#include <vector>
#include <algorithm>    
using namespace std; 
int main(){
setlocale(LC_ALL,"rus");
cout << "Укажите размер матрицы (m x n):\n\tm = ";
int m,n;
cin >> m;
cout << "\tn = ";
(cin >> n).get();
cout << endl << "Матрица:" << endl;
srand(time(0));
int ** M=new int*[m];
for(int i=0;i<m;++i){
M[i]=new int[n];
for(int j=0;j<n;++j)
cout << (M[i][j]=15+rand()%196)<< "\t";
cout << endl;}
int max=0,str=0;
for(int i=0;i<n;++i){
int sum=0;
for(int j=0;j<m;++j)
sum+=M[i][j];
if(max<=sum){
max=sum;
str=i;}}
cout << "Максимальная сумма: " << max << endl;
cout << "Максимальная сумма в строке: " << str+1 << endl;
cin.get();
return 0;}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.01.2016, 15:52
Ответы с готовыми решениями:

Определить номер строки квадратной матрицы с максимальной суммой элементов
Написать программу, которая определяет номер строки квадратной матрицы, сумма элементов которой...

Найти номер строки матрицы с максимальной суммой элементов
Условие: Дано массив А(4,5). Найти номер К строки с максимальной суммой элементов. Дальше...

Найти номер строки матрицы с максимальной суммой элементов
4Решите плиз, на Dev-C++ Ввести с клавиатуры целочисленную матрицу размера 4X4. Найти номер...

После строк матрицы с максимальной суммой элементов вставить копию строки с минимальной суммой элементов
Ввести целочисленный двумерный массив , состоящий из строк произвольной длины . После строк с...

14
76 / 57 / 19
Регистрация: 22.11.2015
Сообщений: 193
14.01.2016, 16:22 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<iostream>
#include<ctime>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
 
// Твоя функция 
// ---------------------------------------------------------------------------------------
void f_my(int x) {
    double t = pow(x, 4) + pow(x, 3) - 6 * pow(x, 2) - 0.5;
    cout << t << " ";
}
//----------------------------------------------------------------------------------------
 
int main() {
    setlocale(LC_ALL, "rus");
    cout << "Укажите размер матрицы (m x n):\n\tm = ";
    int m, n;
    cin >> m;
    cout << "\tn = ";
    (cin >> n).get();
    cout << endl << "Матрица:" << endl;
    srand(time(0));
    int ** M = new int*[m];
    for (int i = 0; i<m; ++i) {
        M[i] = new int[n];
        for (int j = 0; j<n; ++j)
            cout << (M[i][j] = 15 + rand() % 196) << "\t";
        cout << endl;
    }
    int max = 0, str = 0;
    for (int i = 0; i<n; ++i) {
        int sum = 0;
        for (int j = 0; j<m; ++j)
            sum += M[i][j];
        if (max <= sum) {
            max = sum;
            str = i;
        }
    }
// Вывод решений функции
//---------------------------------------------------------------------------------------------
    for (int i = 0; i < m; i++)
    {
        for (int j = 0; j < n; j++)
        {
            cout << "Для элемента массива " << M[i][j] << "\n"
                << "Функция f(x)=x^4 +x^3 = 6*x^2 +0.5 == "; 
            f_my(M[i][j]);
            cout << "\n";
        }
    }
//------------------------------------------------------------------------------------------
    cout << "Максимальная сумма: " << max << endl;
    cout << "Максимальная сумма в строке: " << str + 1 << endl;
    cin.get();
    return 0;
}
1
0 / 0 / 0
Регистрация: 14.01.2016
Сообщений: 9
14.01.2016, 16:43  [ТС] 3
Спасибо

Добавлено через 50 секунд
Цитата Сообщение от Termit779 Посмотреть сообщение
Может так?
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<iostream>
#include<ctime>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
 
// Твоя функция 
// ---------------------------------------------------------------------------------------
void f_my(int x) {
    double t = pow(x, 4) + pow(x, 3) - 6 * pow(x, 2) - 0.5;
    cout << t << " ";
}
//----------------------------------------------------------------------------------------
 
int main() {
    setlocale(LC_ALL, "rus");
    cout << "Укажите размер матрицы (m x n):\n\tm = ";
    int m, n;
    cin >> m;
    cout << "\tn = ";
    (cin >> n).get();
    cout << endl << "Матрица:" << endl;
    srand(time(0));
    int ** M = new int*[m];
    for (int i = 0; i<m; ++i) {
        M[i] = new int[n];
        for (int j = 0; j<n; ++j)
            cout << (M[i][j] = 15 + rand() % 196) << "\t";
        cout << endl;
    }
    int max = 0, str = 0;
    for (int i = 0; i<n; ++i) {
        int sum = 0;
        for (int j = 0; j<m; ++j)
            sum += M[i][j];
        if (max <= sum) {
            max = sum;
            str = i;
        }
    }
// Вывод решений функции
//---------------------------------------------------------------------------------------------
    for (int i = 0; i < m; i++)
    {
        for (int j = 0; j < n; j++)
        {
            cout << "Для элемента массива " << M[i][j] << "\n"
                << "Функция f(x)=x^4 +x^3 = 6*x^2 +0.5 == "; 
            f_my(M[i][j]);
            cout << "\n";
        }
    }
//------------------------------------------------------------------------------------------
    cout << "Максимальная сумма: " << max << endl;
    cout << "Максимальная сумма в строке: " << str + 1 << endl;
    cin.get();
    return 0;
}
Спасибо большое. Конечно, это может показаться наглостью, но не могли бы вы мне и с вектором помочь?
А то я вообще ничего не понимаю, в первый раз работаю с векторами. К сожалению, в институте нам не выдаются никакие пособия и ничего не изучается. Только задания дают и всё.
0
76 / 57 / 19
Регистрация: 22.11.2015
Сообщений: 193
14.01.2016, 17:15 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
#include<iostream>
#include<ctime>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
 
void f_my(int x) {
    double t = pow(x, 4) + pow(x, 3) - 6 * pow(x, 2) - 0.5;
    cout << t << " ";
}
 
int main() {
    setlocale(LC_ALL, "rus");
    cout << "Укажите размер матрицы (m x n):\n\tm = ";
    int m, n;
    cin >> m;
    cout << "\tn = ";
    (cin >> n).get();
    cout << endl << "Матрица:" << endl;
    srand(time(0));
    int ** M = new int*[m];
    for (int i = 0; i<m; ++i) {
        M[i] = new int[n];
        for (int j = 0; j<n; ++j)
            cout << (M[i][j] = 15 + rand() % 196) << "\t";
        cout << endl;
    }
    int max = 0, str = 0;
    for (int i = 0; i<n; ++i) {
        int sum = 0;
        for (int j = 0; j<m; ++j)
            sum += M[i][j];
        if (max <= sum) {
            max = sum;
            str = i;
        }
    }
    for (int i = 0; i < m; i++)
    {
        for (int j = 0; j < n; j++)
        {
            cout << "Для элемента массива " << M[i][j] << "\n"
                << "Функция f(x)=x^4 +x^3 = 6*x^2 +0.5 == "; 
            f_my(M[i][j]);
            cout << "\n";
        }
    }
    // Тут вывод Вашего вектора
    // (Отредактируй только пробелы или перевод на новую строку и т.д)
    //---------------------------------------------------
    for (int i = 0; i < m; i++)
    {
        cout << M[str][i];
    }
// ----------------------------------------------------
    cout << "Максимальная сумма: " << max << endl;
    cout << "Максимальная сумма в строке: " << str + 1 << endl;
    cin.get();
    return 0;
}
0
0 / 0 / 0
Регистрация: 14.01.2016
Сообщений: 9
14.01.2016, 17:31  [ТС] 5
Проблема в том...что я вообще не знаю, как делать вектор.
0
76 / 57 / 19
Регистрация: 22.11.2015
Сообщений: 193
14.01.2016, 17:38 6
Storwayne, Все уже у Вас сделано. Вам нужно только его вывести. Вот так выводится вектор (в котором самая макс. сумма элементов)
C++
1
2
3
4
5
6
7
8
// Тут вывод Вашего вектора
    // (Отредактируй только пробелы или перевод на новую строку и т.д)
    //---------------------------------------------------
    for (int i = 0; i < m; i++)
    {
        cout << M[str][i] << " ";
    }
    // ----------------------------------------------------
0
0 / 0 / 0
Регистрация: 14.01.2016
Сообщений: 9
14.01.2016, 17:42  [ТС] 7
Ребятушки, помогите, пожалуйста. Добавить что-то к коду, чтобы вывести на экран исходный массив, а также вектор, содержащий суммы строк и номер строки с максимальной суммой.Вот код, простите, но редактировать сообщения тут не умею. Пожалуйста, напишите, что именно и куда нужно добавить. Очень выручите.

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
#include<iostream>
#include<ctime>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
 
void f_my(int x) {
double t = pow(x, 4) + pow(x, 3) - 6 * pow(x, 2) - 0.5;
cout << t << " ";
}
int main() {
setlocale(LC_ALL, "rus");
cout << "Укажите размер матрицы (m x n):\n\tm = ";
int m, n;
cin >> m;
cout << "\tn = ";
(cin >> n).get();
cout << endl << "Матрица:" << endl;
srand(time(0));
int ** M = new int*[m];
for (int i = 0; i<m; ++i) {
M[i] = new int[n];
for (int j = 0; j<n; ++j)
cout << (M[i][j] = 15 + rand() % 196) << "\t";
cout << endl;
}
int max = 0, str = 0;
for (int i = 0; i<n; ++i) {
int sum = 0;
for (int j = 0; j<m; ++j)
sum += M[i][j];
if (max <= sum) {
max = sum;
str = i;
}
}
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
cout << "Для элемента массива " << M[i][j] << "\n"
<< "Функция f(x)=x^4 +x^3 = 6*x^2 +0.5 == "; 
f_my(M[i][j]);
cout << "\n";
}
}
for (int i = 0; i < m; i++)
{
cout << M[str][i];
}
cout << "Максимальная сумма: " << max << endl;
cout << "Максимальная сумма в строке: " << str + 1 << endl;
cin.get();
return 0;
0
Любитель чаепитий
3713 / 1776 / 558
Регистрация: 24.08.2014
Сообщений: 5,972
Записей в блоге: 1
14.01.2016, 17:46 8
Storwayne, Почитать о том, что куда добавить можно тут.
C++
1
2
3
4
5
6
7
// вывести исходный массив
for( int i = 0; i < m; i++ ) {
    for( int j = 0; j < n; j++ ) {
        cout << M[i][j] << ' ';
    }
    cout << endl;
}
0
Модератор
Эксперт С++
11955 / 9675 / 5860
Регистрация: 18.12.2011
Сообщений: 25,939
14.01.2016, 17:48 9
Вот этот образец написан как будто специально для Вас
Образцы (шаблоны) программ для типовых задач
Осталось в полученном векторе найти максимум.
Попытайтесь сделать это самостоятельно.
0
0 / 0 / 0
Регистрация: 14.01.2016
Сообщений: 9
14.01.2016, 18:12  [ТС] 10
Цитата Сообщение от Termit779 Посмотреть сообщение
Storwayne, Все уже у Вас сделано. Вам нужно только его вывести. Вот так выводится вектор (в котором самая макс. сумма элементов)
C++
1
2
3
4
5
6
7
8
// Тут вывод Вашего вектора
    // (Отредактируй только пробелы или перевод на новую строку и т.д)
    //---------------------------------------------------
    for (int i = 0; i < m; i++)
    {
        cout << M[str][i] << " ";
    }
    // ----------------------------------------------------
Видимо я очень и очень глуп...но у меня не показывает вектор...
0
76 / 57 / 19
Регистрация: 22.11.2015
Сообщений: 193
14.01.2016, 18:42 11
Я задание не правильно прочитал!!!
0
0 / 0 / 0
Регистрация: 14.01.2016
Сообщений: 9
14.01.2016, 18:48  [ТС] 12
Цитата Сообщение от Termit779 Посмотреть сообщение
Я задание не правильно прочитал!!!
Так нужно же, чтобы в векторе были суммы каждой из строк и потом номер строки с максимальной суммой
0
76 / 57 / 19
Регистрация: 22.11.2015
Сообщений: 193
14.01.2016, 19:08 13
Проверь только. А то у меня под вечер голова не варит.
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
#include<iostream>
#include<ctime>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
 
void f_my(int x) {
    double t = pow(x, 4) + pow(x, 3) - 6 * pow(x, 2) - 0.5;
    cout << t << " ";
}
 
int main() {
    setlocale(LC_ALL, "rus");
    vector<int> v_vector;
    cout << "Укажите размер матрицы (m x n):\n\tm = ";
    int m, n;
    cin >> m;
    cout << "\tn = ";
    (cin >> n).get();
    cout << endl << "Матрица:" << endl;
    srand(time(0));
    int ** M = new int*[m];
    for (int i = 0; i<m; ++i) {
        M[i] = new int[n];
        for (int j = 0; j<n; ++j)
            cout << (M[i][j] = 15 + rand() % 196) << "\t";
        cout << endl;
    }
    int max = 0, str = 0;
    for (int i = 0; i<n; ++i) {
        int sum = 0;
        for (int j = 0; j<m; ++j)
            sum += M[i][j];         
        if (max <= sum) {
            max = sum;
            str = i;
        }
        v_vector.push_back(sum);
    }
    v_vector.push_back(str+1);
    for (int i = 0; i < m; i++)
    {
        for (int j = 0; j < n; j++)
        {
            cout << "Для элемента массива " << M[i][j] << "\n"
                << "Функция f(x)=x^4 +x^3 = 6*x^2 +0.5 == "; 
            f_my(M[i][j]);
            cout << "\n";
        }
    }   
    
    
    
    cout << "\nМаксимальная сумма: " << max << endl;
    cout << "Максимальная сумма в строке: " << str + 1 << endl;
    cout << "Суммы строк: ";
    for (int i = 0; i < v_vector.size()-1; i++)
    {
        cout << v_vector[i] << " ";
    }
    
    cout << "Номер строки с максимальной суммой: " << v_vector[v_vector.size() - 1];
 
    
    
    cin.get();
    return 0;
}
0
0 / 0 / 0
Регистрация: 14.01.2016
Сообщений: 9
14.01.2016, 19:32  [ТС] 14
Цитата Сообщение от Termit779 Посмотреть сообщение
Проверь только. А то у меня под вечер голова не варит.
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
#include<iostream>
#include<ctime>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
 
void f_my(int x) {
    double t = pow(x, 4) + pow(x, 3) - 6 * pow(x, 2) - 0.5;
    cout << t << " ";
}
 
int main() {
    setlocale(LC_ALL, "rus");
    vector<int> v_vector;
    cout << "Укажите размер матрицы (m x n):\n\tm = ";
    int m, n;
    cin >> m;
    cout << "\tn = ";
    (cin >> n).get();
    cout << endl << "Матрица:" << endl;
    srand(time(0));
    int ** M = new int*[m];
    for (int i = 0; i<m; ++i) {
        M[i] = new int[n];
        for (int j = 0; j<n; ++j)
            cout << (M[i][j] = 15 + rand() % 196) << "\t";
        cout << endl;
    }
    int max = 0, str = 0;
    for (int i = 0; i<n; ++i) {
        int sum = 0;
        for (int j = 0; j<m; ++j)
            sum += M[i][j];         
        if (max <= sum) {
            max = sum;
            str = i;
        }
        v_vector.push_back(sum);
    }
    v_vector.push_back(str+1);
    for (int i = 0; i < m; i++)
    {
        for (int j = 0; j < n; j++)
        {
            cout << "Для элемента массива " << M[i][j] << "\n"
                << "Функция f(x)=x^4 +x^3 = 6*x^2 +0.5 == "; 
            f_my(M[i][j]);
            cout << "\n";
        }
    }   
    
    
    
    cout << "\nМаксимальная сумма: " << max << endl;
    cout << "Максимальная сумма в строке: " << str + 1 << endl;
    cout << "Суммы строк: ";
    for (int i = 0; i < v_vector.size()-1; i++)
    {
        cout << v_vector[i] << " ";
    }
    
    cout << "Номер строки с максимальной суммой: " << v_vector[v_vector.size() - 1];
 
    
    
    cin.get();
    return 0;
}
Спасибо Вам большое! Всё работает! Моя курсовая спасена благодаря Вам!
0
76 / 57 / 19
Регистрация: 22.11.2015
Сообщений: 193
14.01.2016, 19:43 15
Пожалуйста!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.01.2016, 19:43
Помогаю со студенческими работами здесь

После строк матрицы с максимальной суммой элементов вставить копию строки с минимальной суммой элементов
Ввести целочисленный двумерный массив , состоящий из строк произвольной длины . После строк с...

Найти строку матрицы с максимальной суммой элементов, вывести номер строки и значение суммы элементов в ней
В массиве NxM целых чисел найти строку с максимальной суммой элементов. Программа должна вывести...

Найти номер строки с максимальной суммой элементов
Задано массив А (4,5). Найти номер К строки с максимальной суммой элементов. Далее сформировать...

Найти и вывести номер столбца матрицы с максимальной суммой элементов
Задана матрица А размера 4х4 с вещественными элементами. Требуется найти и вывести на печать номер...


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

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

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