Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
1 / 1 / 1
Регистрация: 14.03.2017
Сообщений: 56
1

Определить, какой столбец массива имеет минимальную сумму элементов

14.03.2017, 16:10. Показов 2475. Ответов 4
Метки нет (Все метки)

Дан двумерный массив из 5 строк и 6 столбцов. Определить, какой столбец массива имеет минимальную сумму элементов (считать, что столбцов с одинаковой суммой нет).

задать массив я могу, найти минимальну сумму вроде тоже, но как именно обратиться к столбцу, удовлетворяющему условию, не знаю.

Добавлено через 35 минут
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
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <iostream>
 
 
 
int main()
{
    const int a = 5, b = 6;
    int m[a][b];
    int i, j;
    for (i = 0; i < a; i++)
    {
        for (int j = 0; j < b; j++)
        {
            m[i][j] = rand() % 10;
            printf("%d ", );
        }
        
    }   
    getchar(); getchar();
 
}
как сделать так, чтобы в консоле отображалось именно 5 строк и 6 столбцов, у меня в одну строчку все. как при нахождении суммы обратиться к столбцу.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.03.2017, 16:10
Ответы с готовыми решениями:

Определить, какой из элементов в массиве имеет наименьшее количество делителей
Определить, какой из элементов в массиве имеет наименьшее количество делителей. Формат ввода В...

Определить, какой из элементов в массиве имеет наибольшее количество делителей и вывести все его делители на экран
Определить, какой из элементов в массиве А(N) имеет наибольшее количество делителей и вывести все...

Посчитать сумму элементов массива, при которых квадратное уравнение имеет решение
Дана матрица a (а1,а2,а3...аn) Найти сумму тех элементов,при которых уравнение X^2+3ax+5=0 Если...

С помощью записи «указатель-индекс» определить сумму четных элементов массива, сумму элементов
Создать и вывести на экран массив из 10-ти чисел-квадратов 1^2, 2^2,3^2, .. С помощью записи...

__________________

Записывайтесь на профессиональные курсы C++ разработчиков
4
2 / 2 / 3
Регистрация: 13.01.2017
Сообщений: 33
14.03.2017, 19:01 2
Лучший ответ Сообщение было отмечено yesofcourse как решение

Решение

Все в лучшем виде )
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
#include <iostream>
#include <time.h>
#include <string>
#include<locale>
#include <string.h>
#include <iomanip>
#include <iostream>
#include <cstdlib>
using namespace std;
 
void main() {
    int pos=0;
    setlocale(LC_ALL, "");
    srand(time(NULL));
    int min = INT_MAX;
    int sum = 0;
    const int n = 5;
    const int m = 6;
    int a[n][m];
 
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            a[i][j] = rand() % 100;
 
        }
    }
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            cout<<setw(4) << a[i][j] << " ";
 
        }
        cout << endl;
    }
 
    cout << "*******************************" << endl;
    for (int j = 0; j < m; j++) {
        for (int i = 0; i < n; i++) {
            sum += a[i][j];
            
        }
cout <<setw(4)<< sum << " ";
 
if (sum < min) { min = sum; pos = j;  }
        
        sum = 0;
 
    }
    cout << endl;
cout << "Минимальный столбец под номером " << pos << endl;
 
 
 
    system("pause");
}
1
62 / 62 / 39
Регистрация: 18.11.2016
Сообщений: 562
14.03.2017, 19:59 3
Просто поменяйте значения в массиве

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
#include <iostream>
#include <stdlib.h>
#include <Windows.h>
#include <string>
#include <iomanip>
 
 
 
int main (){
 
        SetConsoleCP (1251);
        SetConsoleOutputCP (1251);
 
        int sum [5] = {0};
        int array[5][6];
 
        int min, position_min (0);
        int max, position_max (0);
 
        
        // Заносим случайные числа в двухмерный массив.
        for (int i(0); i!=5; i++){
            for (int j (0); j!=6; j++){
                array[i][j] = rand()%89 + 10;
            }
        }
 
        // Выводим.
        for (int i(0); i!=5; i++){
            for (int j (0); j!=6; j++){
                std::cout << array[i][j] << " ";
            }   std::cout << std::endl;
        }
 
        
        std::cout << std::endl;
                // Обратите внимание на значения цикла.
        for (int i(0); i!=6; i++){
            for (int j(0); j!=5; j++){
                sum[i] += array[j][i];
            }
        }
 
        min = sum[0];
        max = sum[0];
 
        for (int i(0); i!=5; i++){
            if (min > sum[i]){
                min = sum[i];
                position_min = i;
            }
            if (max < sum[i]){
                max = sum[i];
                position_max = i;
            }
                
        }
 
        for (int i(0); i!=5; i++){
            std::cout << i << ")" << std::setw (5) << sum[i] << std::endl;;
        }
        
        std::cout << "Максимальное значение: " << max << " столб: " << position_max << std::endl;      
        std::cout << "Минимальное значение:  " << min << " столб: " << position_min << std::endl;       
 
        system ("pause");
        return 0;
}
1
1 / 1 / 1
Регистрация: 14.03.2017
Сообщений: 56
15.03.2017, 20:22  [ТС] 4
Photofenix,
спасибо, но как заменить функцию вывода с cout на printf? cout мне не разрешено использовать
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 "stdafx.h"
#include <stdio.h>
#include <iostream>
#include <stdlib.h>
#include <string>
#include <iomanip>
 
 
 
int main(){
    setlocale(LC_ALL, "");
 
    int sum[5] = { 0 };
    int array[5][6];
 
    int min, position_min(0);
    int max, position_max(0);
 
 
    for (int i(0); i != 5; i++)
    {
        for (int j(0); j != 6; j++)
        {
            array[i][j] = rand() % 85 + 10;
        }
    }
 
    
    for (int i(0); i != 5; i++)
    {
        for (int j(0); j != 6; j++)
        {
            std::cout << array[i][j] << " ";       //как заменить данную процедуру на printf?
        }   std::cout << std::endl;
    }
 
 
    std::cout << std::endl;
 
    for (int i(0); i != 6; i++){
        for (int j(0); j != 5; j++){
            sum[i] += array[j][i];
        }
    }
 
    min = sum[0];
    max = sum[0];
 
    for (int i(0); i != 5; i++){
        if (min > sum[i]){
            min = sum[i];
            position_min = i;
        }
        if (max < sum[i]){
            max = sum[i];
            position_max = i;
        }
 
    }
 
    for (int i(0); i != 5; i++)
    {
        printf("\n%d)%d",i,sum[i]); // тут я пытался заменить на printf,но в 5 и 6 столбик сумма считается неправильно
    }
 
    printf("\nМин значение:%d  столбик:%d ", min, position_min);
 
 
    getchar(); getchar();
    return 0;
}
Добавлено через 1 час 34 минуты
Photofenix,
я тут про условие забыл, необходимо чтобы пользователь задавал массив. Это я вроде сделал, пользователь теперь может задавать массив, но теперь сломалась сумма, я также не знаю как заменить, оставшиеся cout на printf

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
76
77
78
79
80
81
82
83
84
85
86
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
#include <stdlib.h>
#include <string>
#include <iomanip>
#include <time.h>
 
 
int main(){
    setlocale(LC_ALL, "");
    srand(time(0));
    const int k = 10;
    const int j = 10;
    int array[k][j];
    int e = 0, r = 0;
    printf("кол-во строк и кол-во столбцов: \n", k, j);
    scanf("%d%d", &e, &r);
    while (e <= 0 || r <= 0 || e > k || e > j || r > k || r > j)
    {
        printf("кол-во строк и кол-во столбцов: \n", k, j);
        scanf("%d%d", &e, &r);
    }
 
    int sum[10][10] = { 0 };
 
 
    int min, position_min(0);
    int max, position_max(0);
 
 
    for (int i = 0; i < e; i++)
    {
        for (int u = 0; u < r; u++)
        {
            array[i][u] = rand() % 85 + 10;
        }
    }
 
 
    for (int i = 0; i < e; i++)
    {
        for (int u = 0; u < r; u++)
        {
            std::cout << array[i][u] << " ";       //как заменить данную процедуру на printf?
        }   std::cout << std::endl;
    }
 
 
    std::cout << std::endl;
 
    for (int i = 0; i < e; i++){
        for (int u = 0; u < r; u++){
            sum[i][u] += array[i][u];
        }
    }
 
    min = sum[0][0];
    max = sum[0][0];
 
    for (int i = 0; i < e; i++){
        for (int u = 0; u < r; u++){
            if (min > sum[i][u]){
                min = sum[i][u];
                position_min = i;
            }
            if (max < sum[i][u]){
                max = sum[i][u];
                position_max = i;
            }
 
        }
 
        for (int i(0); i < r; i++){
            for (int u = 0; u < r; u++)
 
                printf("\n%d)%d", i, sum[i][u]); // тут я пытался заменить на printf,но не все столбики правильно подсчитываются
        }
 
        printf("\nМин значение:%d  столбик:%d ", min, position_min);
 
 
        getchar(); getchar();
        return 0;
    }
}
Добавлено через 9 минут
забыл поменять немного
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
76
77
78
79
80
81
82
83
84
85
86
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
#include <stdlib.h>
#include <string>
#include <iomanip>
#include <time.h>
 
 
int main(){
    setlocale(LC_ALL, "");
    srand(time(0));
    const int k = 10;
    const int j = 10;
    int array[k][j];
    int e = 0, r = 0;
    printf("кол-во строк и кол-во столбцов: \n", k, j);
    scanf("%d%d", &e, &r);
    while (e <= 0 || r <= 0 || e > k || e > j || r > k || r > j)
    {
        printf("кол-во строк и кол-во столбцов: \n", k, j);
        scanf("%d%d", &e, &r);
    }
 
    int sum[10][10] = { 0 };
 
 
    int min, position_min(0);
    int max, position_max(0);
 
 
    for (int i = 0; i < e; i++)
    {
        for (int u = 0; u < r; u++)
        {
            array[i][u] = rand() % 85 + 10;
        }
    }
 
 
    for (int i = 0; i < e; i++)
    {
        for (int u = 0; u < r; u++)
        {
            std::cout << array[i][u] << " ";       //как заменить данную процедуру на printf?
        }   std::cout << std::endl;
    }
 
 
    std::cout << std::endl;
 
    for (int i = 0; i < e; i++){
        for (int u = 0; u < r; u++){
            sum[i][u] += array[i][u];
        }
    }
 
    min = sum[0][0];
    max = sum[0][0];
 
    for (int i = 0; i < e; i++){
        for (int u = 0; u < r; u++){
            if (min > sum[i][u]){
                min = sum[i][u];
                position_min = i;
            }
            if (max < sum[i][u]){
                max = sum[i][u];
                position_max = i;
            }
 
        }
 
        for (int i=0; i < e; i++){
            for (int u = 0; u < r; u++)
 
                printf("\n%d)%d", i,u, sum[i][u]); // тут я пытался заменить на printf,но в 5 и 6 столбик сумма считается неправильно
        }
 
        printf("\nМин значение:%d  столбик:%d ", min, position_min);
 
 
        getchar(); getchar();
        return 0;
    }
}
0
62 / 62 / 39
Регистрация: 18.11.2016
Сообщений: 562
15.03.2017, 21:09 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
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#include <iostream>
#include <stdlib.h>
#include <Windows.h>
#include <string>
#include <iomanip>
 
 
 
int main (){
 
        SetConsoleCP (1251);
        SetConsoleOutputCP (1251);
        // Переменные для двухмерного массива.
        int a, b;
        std::cout << "Введите количество строк массива: "; // Статья: [url]http://www.c-cpp.ru/content/printf[/url]
        std::cin >> a;
        std::cout << "Введите количество столбов массива: "; // Статья: [url]http://www.c-cpp.ru/content/printf[/url]
        std::cin >> b;
 
            
        // int sum [5] = {0};
        //  int array[5][6];
        // Создаем динамический одномерный массив с количеством элементов равной заданной переменной а.
        int *sum = new int [a];
 
        
        // Создаем основной массив  (для удобства строки)
        int **array = new int *[a];
 
        // Теперь в каждом элементе (строку) создаем еще один массив (столбцы) с кол.элем.равной переменной b.
        for (int i(0); i!=b; i++){
            array[i] = new int[b];
        }
    
       
 
        int min, position_min (0);
        int max, position_max (0);
 
        
        // Заносим случайные числа в двухмерный массив.
        for (int i(0); i!=a; i++){
            for (int j (0); j!=b; j++){
                array[i][j] = rand()%10; // Для удобства забьем массив с числами от 0 до 9.
            }
        }
 
        // Выводим.
        for (int i(0); i!=a; i++){
            for (int j (0); j!=b; j++){
                std::cout << array[i][j] << " "; // Статья: [url]http://www.c-cpp.ru/content/printf[/url]
            }   std::cout << std::endl;
        }
 
      
        // Обнуляем массив sum. Иначе значения могут быть не нулевыми.
        for (int i(0); i!=a; i++){
            sum[i] = 0;
        }
        
        std::cout << std::endl;
        // Обратите внимание на переменные цикла.
        for (int i(0); i<b; i++){
            for (int j(0); j<a; j++){
                sum[i] += array[j][i];
            }
        }
 
        min = sum[0];
        max = sum[0];
 
        // Ищем максимальное и минимальное число.
 
        for (int i(0); i!=a; i++){
            if (min > sum[i]){
                min = sum[i];
                position_min = i;
            }
            if (max < sum[i]){
                max = sum[i];
                position_max = i;
            }
                
        }
 
        for (int i(0); i!=a; i++){
            std::cout << i << ")" << std::setw (5) << sum[i] << std::endl; // Статья: [url]http://www.c-cpp.ru/content/printf[/url]
        }
        
        std::cout << "Максимальное значение: " << max << " столб: " << position_max << std::endl;       
        std::cout << "Минимальное значение:  " << min << " столб: " << position_min << std::endl;
 
     
        
        // Удаляем массивы в элементах двух мерного массива.
        for (int i(0); i!=a; i++){
            delete[] array[i];
        }
 
        // Удаляем основной массив
        delete [] array; // Уже одномерный.
        delete [] sum;
            
        system ("pause");
        return 0;
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.03.2017, 21:09

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

Записать положительные элементы массива X подряд в массив Y. Определить k – количество положительных элементов. Вычислит сумму элементов массива Y
Записать положительные элементы массива X=(x1,x2,…, xn) подряд в массив Y=(y1,y2,…, yk)....

Определить, какой столбец матрицы имеет наибольшую сумму
program lab4_1; uses crt; var i, j, n, max, y: integer; a: array of integer; b: arrayof...

Определить, какой из двух произвольных массивов имеет наибольшую сумму элементов
Создать модуль обработки двухмерного массива(матрицы) размером м*н, который содержит: А) описание...

Определить номера двух соседних элементов массива, имеющих минимальную сумму
Напишите программу, которая заполняет массив из N элементов случайными целыми числами в диапазоне ...


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

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

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