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

Сумма минимальных элементов каждого столбца массива АхВ

17.10.2015, 15:51. Просмотров 883. Ответов 6
Метки нет (Все метки)

Сам написал код для определение матрицы и вывод его на МСДОС, дальше никак не получается выполнить условие "Найти сумму минимальных элементов каждого столбца заданной матрицы"

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
// 1234.cpp : Defines the entry point for the console application.
//
 
// 1231.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include "iostream"
#include "conio.h"
#include "math.h"
 
using namespace std;
        int main()
        {
const int mmax=100;
int i, j, strok,stolb, mas[mmax][mmax];
int min,minsum;
cout<<"strok :"<<endl;
cin>>strok;
cout<<"stolb :"<<endl;
cin>>stolb;
 
for(i=0; i<strok; i++)
for(j=0; j<stolb; j++)
        {
    cout<<"elements"<<"i-"<<i<<"j-"<<j<<endl;
cin>>mas[i][j];
cout<<endl;
}
cout<<"Matrica A"<<endl;
for(i=0; i<strok; i++)
    {
for(j=0; j<stolb; j++)
cout<<mas[i][j]<<" ";
cout<<endl;
 
} 
cout<<" strok "<<strok;
cout<<" stolb "<<stolb;
        cout<<endl;
        //---------------------------
    
        for( i=0;i<strok;i++)
    {
        minsum=0;
         for( j=0;j<stolb;j++)
        if(j==0)
            minsum=minsum+mas[i][j];
        
        
            
        //{ 
            min=minsum;
        //}
        
        
    }
    cout<<"minsum "<<min<<endl;
    cout<<endl;
 
_getch();
return 0;
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.10.2015, 15:51
Ответы с готовыми решениями:

Для двумерного массива с M * N чисел получить вектор с минимальных элементов каждого столбца
Для двумерного массива с M * N чисел получить вектор с минимальных...

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

Массив: Найти минимальный среди минимальных элементов каждого столбца.
Дана матрица размера 5 x 10. Найти минимальный среди минимальных элементов...

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

Определить, верно ли утверждение: сумма элементов каждого i-го столбца матрицы больше суммы i-й строки
Дана матрица натуральных чисел,(получаемая через rand()). Определить, верно ли...

6
Barrent
246 / 122 / 54
Регистрация: 04.05.2013
Сообщений: 346
Завершенные тесты: 2
17.10.2015, 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
#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <random>
 
using namespace std;
 
int main()
{
    int rows, cols;
    //выделение памяти
    cout << "Rows: ";
    cin >> rows;
    cout << "Columns: ";
    cin >> cols;
    int* mas = new int[rows*cols];  
 
    //генератор чисел
    random_device rd;
    mt19937 mersenne(rd());
    uniform_int_distribution<int> random_element(-5, 5);
    for (int i = 0; i < rows; i++)
        for (int j = 0; j < cols; j++)
            *(mas+i*cols+j) = random_element(mersenne);
 
    //вывод
    cout << "Matrix A: " << endl;
    for (int i = 0; i < rows; i++)
    {
        for (int j = 0; j < cols; j++)
            cout << setw(4) << *(mas + i*cols + j);
        cout << endl;
 
    }
    
    //Сумма минималных эелементов
    int sum(0);
    int min_element;
    cout << "Min elements:" << endl;
    for (int j = 0; j < cols; j++) {
        min_element = *(mas + 1 * cols + j);        //запоминаем первый эелемент текущего столбца
        for (int i = 1; i < rows; i++) {
            if (min_element > *(mas + i * cols + j))
                min_element = *(mas + i * cols + j);
        }
        cout << setw(4) << min_element;
        sum += min_element;
    }
    cout << endl << "Sum of min elements: " << sum << endl;
 
    //чистка памяти
    delete[] mas;
    system("pause");
    return 0;
}
1
Бурхон
0 / 0 / 0
Регистрация: 17.10.2015
Сообщений: 34
17.10.2015, 17:54  [ТС] 3
хотелось бы этот код видеть в более облегченном варианте, а то этот замудрен, есть вариант этого кода для начинающего ?
0
Barrent
246 / 122 / 54
Регистрация: 04.05.2013
Сообщений: 346
Завершенные тесты: 2
17.10.2015, 18:08 4
Единственное мудреное тут - генерация чисел, а все остальное является основами плюсов.
Код
C++
1
*(mas+i*cols+j)
обозначает элемент матрицы, размещенный на i-й строке в j-м столбце.
1
Бурхон
0 / 0 / 0
Регистрация: 17.10.2015
Сообщений: 34
17.10.2015, 18:51  [ТС] 5
а можно чтоб рандом убрать и чтоб пользователь сам назначил элементы массива?
разъясните cout << setw(4)<< *(mas + i*cols + j) - что выводится на командную строку перед i-ий и j-ий элемент? код setw(4) что выполняет?
можноли это -
Кликните здесь для просмотра всего текста
{
if (min_element > *(mas + i * colm + j))
min_element = *(mas + i * colm + j);
}
заменить на это
Кликните здесь для просмотра всего текста
{
if (min_element >= *(mas + i * colm + j));
}

и пожалуйста сделайте эту часть кода
Кликните здесь для просмотра всего текста
min_element = *(mas + 1 * cols + j); //запоминаем первый эелемент текущего столбца
for (int i = 1; i < rows; i++) {
if (min_element > *(mas + i * cols + j))
min_element = *(mas + i * cols + j);
}
cout << setw(4) << min_element;
sum += min_element;
для этой части
Кликните здесь для просмотра всего текста
#include "stdafx.h"
#include "iostream"
#include "conio.h"
#include "math.h"

using namespace std;
int main()
{
const int mmax=10;
int i, j, strok,stolb, mas[mmax][mmax];
int min,minsum;
cout<<"strok :"<<endl;
cin>>strok;
cout<<"stolb :"<<endl;
cin>>stolb;

for(i=0; i<strok; i++)
for(j=0; j<stolb; j++)
{
cout<<"elements"<<"i-"<<i<<"j-"<<j<<endl;
cin>>mas[i][j];
cout<<endl;
}
cout<<"Matrica A"<<endl;
for(i=0; i<strok; i++)
{
for(j=0; j<stolb; j++)
cout<<mas[i][j]<<" ";
cout<<endl;

}
cout<<" strok "<<strok;
cout<<" stolb "<<stolb;
cout<<endl;
//---------------------------

всю остальную чать кода понял кроме генератора и
Кликните здесь для просмотра всего текста
cout << setw(4) << *(mas + i*cols + j);
понял
0
Barrent
246 / 122 / 54
Регистрация: 04.05.2013
Сообщений: 346
Завершенные тесты: 2
17.10.2015, 19:05 6
setw(4) - резервирует для выводимого числа 4 позиции.
Предлагаемая строка
C++
1
if (min_element >= *(mas + i * colm + j));
Сравнит, но ничего не сделает, а потому не имеет смысла.

Для вашего кода:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//Сумма минималных эелементов
    int sum(0);
    int min_element;
    cout << "Min elements:" << endl;
    for (int j = 0; j < stolb; j++) {
        min_element = mas[0][j];                              //запоминаем первый эелемент текущего столбца
        for (int i = 1; i < strok; i++) {
            if (min_element > mas[i][j])
                min_element = mas[i][j];
        }
        cout << setw(4) << min_element;
        sum += min_element;
    }
    cout << endl << "Sum of min elements: " << sum << endl;
1
Бурхон
0 / 0 / 0
Регистрация: 17.10.2015
Сообщений: 34
17.10.2015, 20:04  [ТС] 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
#include "stdafx.h"
#include "iostream"
#include "conio.h"
#include "math.h"
 
using namespace std;
        int main()
        {
const int mmax = 10;
int i, j, strok, stolb, mas[mmax][mmax]; // matriх
cout << "strok :" << endl;
cin >> strok;
cout << "stolb :" << endl;
cin >> stolb;
 
for (i=0; i<strok; i++)
for (j=0; j<stolb; j++)
        {
    cout << "elements" << "i-" << i << "j-" << j << endl;
cin >> mas[i][j];
cout << endl;
}
cout << "Matrica A" << endl;
for (i=0; i<strok; i++)
    {
for (j=0; j<stolb; j++)
cout << mas[i][j] << " ";
cout << endl;
 
} 
cout << " strok " << strok;
cout << " stolb " << stolb;
        cout << endl;
        //------------------
        int sum(0);
    int min_element;
    cout << "Min elements:" << endl;
    for (int j = 0; j < stolb; j++)
    {
        min_element = mas[0][j];                              //запоминаем первый эелемент текущего столбца
        for (int i = 1; i < strok; i++)
        {
            if (min_element > mas[i][j])
                min_element = mas[i][j];
        }
        cout << min_element;
        sum += min_element;
    }
    cout << endl << "Sum of min elements: " << sum << endl;
    _getch();
    return 0;
        }

Спасибо за помощь Barrent
0
17.10.2015, 20:04
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.10.2015, 20:04

Для каждого из столбцов матрицы выполнить следующее: если сумма элементов столбца не равна нулю, то заменить значения
Помогите пожалуйста решить Элементами матрицы MxN могут быть только числа...

Вычислить произведение элементов каждого столбца массива
Инициализировать нецелочисленный массив 7х5 данными от -3 до 3; Вычислить...

Найти сумму элементов каждого столбца двумерного массива
как найти суму елементов каждого столбца двумерного массива(при условии что...


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

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

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