Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
0 / 0 / 2
Регистрация: 02.07.2013
Сообщений: 49
1

Выбрать строку матрицы с наибольшей суммой элементов и каждый отрицательный элемент умножить на номер столбца

07.05.2016, 13:40. Просмотров 1528. Ответов 8
Метки нет (Все метки)

Задана матрица Z(5,6). Выбрать строку с наибольшей суммой элементов и вывести элементы этой строки в массив, затем каждый отрицательный элемент умножить на номер столбца. Вывести исходную и преобразованную матрицы, полученный массив. Переделайте пожалуйста программу так что бы она была без функции sumOfRow

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
#include <iostream>
#include <iomanip>
#include <cstdlib>
 
 using namespace std;
int sumOfRow(const int [][6], int, int);
 
int main()
{
    setlocale( LC_ALL, "Russian" ); 
    int z[5][6];
    int mass[6];
    int maxRow;
    int maxIndex = 0;
 
    for(int i = 0; i < 5; i++)
    {
        for(int j = 0; j < 6; j++)
        {
         cout << "Ведите элемент" <<"["<<i<<"]["<<j<< "]"<<"\n"; 
           cin >> z[i][j]; 
       
        }  
    }
 cout<<"Текущая матрица: "<<"\n";
 for(int i=0;i<5;++i,cout<<endl)
 for(int j=0;j<6;++j)
cout << setw(5) << z[i][j];
    maxRow = sumOfRow(z,0,5);
 
    for(int i = 1; i < 5; i++)
        if(sumOfRow(z,i,5) > maxRow)
        {
            maxRow = sumOfRow(z,i,5);
            maxIndex = i;
        }
    cout<<"\n";
    cout << "Строка с максимальной суммой элементов: " <<"\n";
 
    for(int j = 0; j < 6; j++)
    {
        mass[j] = z[maxIndex][j];
        cout<<setw(5)<<mass[j];
    }
    cout<<"\n";
    cout << "Преобразованная матрица: " << std::endl;
 
    for(int i = 0; i < 5; i++)
    {
        for(int j = 0; j < 6; j++)
        {
            z[i][j] = z[i][j] < 0 ?
            z[i][j] * i : z[i][j];
 
            cout<<setw(5)<<z[i][j];
        }
 
        cout << "\n";
    }
 
    return 0;
}
 
 
int sumOfRow(const int z[][6], int row, int steps)
{
    if(!steps)
        return z[row][steps];
    else
        return z[row][steps] + sumOfRow(z,row,steps-1);
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.05.2016, 13:40
Ответы с готовыми решениями:

Матрицы. Умножить каждый элемент матрицы на номер ее строки, прибавить номер ее столбца
Программа генерирует матрицу размерностью 5х5 со значениями в интервале от 0 до 9 включительно и...

Найти и распечатать номер столбца матрицы с наибольшей суммой элементов
Задана матрица целочисленных значений. Найти и распечатать номер столбца с наибольшей суммой...

Найти номер столбца матрицы с наибольшей суммой четных элементов
Помогите пожалуйста сделать это задание. дана матрица MxN найти номер её столбца с наибольшей...

Выбрать строку матрицы с наибольшей суммой элементов, и вывести элементы этой строки в вектор
program qqq; var a: array of integer; var sum: array of integer; var i, j, max: integer;...

8
50 / 51 / 34
Регистрация: 29.12.2012
Сообщений: 478
07.05.2016, 14:01 2
сложный для понимания твой код
0
0 / 0 / 2
Регистрация: 02.07.2013
Сообщений: 49
07.05.2016, 14:24  [ТС] 3
Сам не понимаю как работает функция
0
50 / 51 / 34
Регистрация: 29.12.2012
Сообщений: 478
07.05.2016, 14:29 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
66
67
68
69
70
71
72
73
74
75
#include <iostream>
#include <iomanip>
#include <cstdlib>
 
 using namespace std;
 
const int N=2;
const int M=3;
int sumOfRow(const int [][M], int, int);
int main()
{
    setlocale( LC_ALL, "Russian" );
    int z[N][M],mass[M]={0,},tmpmass[M];
    int maxRow = 0 ,maxIndex = 0;
    for(int i = 0; i < N; i++)
    {
        for(int j = 0; j < M; j++)
        {
            cout << "Ведите элемент " <<"["<<i<<"]["<<j<< "] = ";
            cin >> z[i][j];
        }
    }
    cout<<"Текущая матрица: "<<"\n";
    for(int i=0;i<N;++i)
    {
        for(int j=0;j<M;++j)
        {
            cout << setw(5) << z[i][j];
        }
        cout<<endl;
    }
 
 
    for(int i = 0; i < N; i++)
        if(sumOfRow(z,i,M) > maxRow)
        {
            maxRow = sumOfRow(z,i,N);
            maxIndex = i;
        }
    cout<<"\n";
    cout << "Строка с максимальной суммой элементов: " <<"\n";
    cout<<"\n";
    for(int j = 0; j < M; j++)
    {
        mass[j] = z[maxIndex][j];
        cout<<setw(5)<<mass[j];
    }
 
    cout<<"\n";
    cout << "Преобразованная матрица: " << std::endl;
 
    for(int i = 0; i < N; i++)
    {
        for(int j = 0; j < M; j++)
        {
            z[i][j] = z[i][j] < 0 ?
            z[i][j] * i : z[i][j];
 
            cout<<setw(5)<<z[i][j];
        }
 
        cout << "\n";
    }
 
    return 0;
}
 
 
int sumOfRow(const int z[][M], int row,int steps)
{
    static int sum = 0;
    if(!steps)
        return sum;
    else
        return sum + sum
0
0 / 0 / 2
Регистрация: 02.07.2013
Сообщений: 49
07.05.2016, 14:30  [ТС] 5
dell
0
50 / 51 / 34
Регистрация: 29.12.2012
Сообщений: 478
07.05.2016, 14:33 6
lokort, Значит тогда вам, и не надо задумываться как работает, а то я давненько тоже нечего не писал поправляя ваш код(или чейто) я его усложнил...

Добавлено через 1 минуту
lokort, Ах да 7 и 8 строчку измените поставте вашу размерность массива.
0
0 / 0 / 2
Регистрация: 02.07.2013
Сообщений: 49
07.05.2016, 14:39  [ТС] 7
Не правильно выводит строку с максимальной суммой
0
Миниатюры
Выбрать строку матрицы с наибольшей суммой элементов и каждый отрицательный элемент умножить на номер столбца  
0 / 0 / 2
Регистрация: 02.07.2013
Сообщений: 49
07.05.2016, 20:06  [ТС] 8
Ну помогите пожалуйста кто нибудь

Добавлено через 4 часа 33 минуты
Решил задачу так:
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
#include <iostream>
#include <iomanip>
#include <cstdlib>
 using namespace std;
int main()
{
    setlocale( LC_ALL, "Russian" ); 
    int z[5][6];
    int max=0;
    int max_num=0;
    int i;
    int sum=0;
    int sum_max[6];
    for(int i = 0; i < 5; i++)
    {
        for(int j = 0; j < 6; j++)
        {
         cout << "Ведите элемент" <<"["<<i<<"]["<<j<< "]"<<"\n"; 
           cin >> z[i][j]; 
        }  
    }
 cout<<"Текущая матрица: "<<"\n";
 for(int i=0;i<5;++i,cout<<endl){
 for(int j=0;j<6;++j){
    cout << setw(5) << z[i][j];
   if (i==0) //если строка первая
        {
          sum=sum+z[i][j]; //сумма
          max=max+z[i][j]; //максимальная сумма
        }
    else sum=sum+z[i][j]; //для всех остальных строк считаем сумму
}
if (sum>max) //если сумма строки больше максимальной
{
    max=sum; //максимальному значению присваиваем сумму этой строчки.
    max_num=i; //номер текущей строки присваиваем номеру максимальной строки по умолчанию
}
sum=0; //перед переходом на новую строку обнуляем сумму
}
  i=max_num;
    cout<<"\n";
    cout << "Строка с максимальной суммой элементов: " <<"\n";
   for (int j=0; j<6; j++){
    sum_max[j]=z[i][j]; //Вывод строки с максимальной суммой в массив по заданию
    cout<<z[i][j]<<" ";
}
    cout<<"\n";
    cout<<"Сумма ее элементов = "<<max;
    cout<<"\n";
    cout << "Преобразованная матрица: " <<"\n";
 
    for(int i = 0; i < 5; i++)
    {
        for(int j = 0; j < 6; j++)
        {
            z[i][j] = z[i][j] < 0 ? //если число меньше нуля то умнажаем на номер столбца
            z[i][j] * j : z[i][j]; 
 
            cout<<setw(5)<<z[i][j];
        }
 
        cout << "\n";
    }
 
    return 0;
}
0
0 / 0 / 0
Регистрация: 29.06.2016
Сообщений: 3
16.10.2016, 16:45 9
Дана целочисленная матрица R размером n x n (n<=8). Если над главной диагональю матрицы есть отрицательные числа, то поменять местами столбцы с наибольшей и наименьшей суммой элементов?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.10.2016, 16:45

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Умножить каждый отрицательный элемент матрицы на 3
Осуществите ввод с клавиатуры целочисленные элементы матрицы 3x4. Выведите исходную матрицу на...

Вывести номер столбца матрицы N*N, который обладает наибольшей суммой модулей элементов. Если таких столбиков несколько, то взять первый из них.
Задание: Вывести номер столбца матрицы N*N, который обладает наибольшей суммой модулей элементов....

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

Определить номер столбца с наибольшей суммой элементов
Составить программу обработки матрицы размерности NxN. В программе предусмотреть ввод, вывод...


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

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

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