Форум программистов, компьютерный форум CyberForum.ru

Заменить все столбцы на столбец с минимальной суммой элементов (Класс) - C++

Восстановить пароль Регистрация
 
Qukish
0 / 0 / 0
Регистрация: 30.10.2012
Сообщений: 10
13.02.2013, 14:19     Заменить все столбцы на столбец с минимальной суммой элементов (Класс) #1
дана целочисленная прямоугольная таблица размером m*n.
Заменить все столбцы на столбец с минимальной суммой элементов
Решить через класс на C++
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.02.2013, 14:19     Заменить все столбцы на столбец с минимальной суммой элементов (Класс)
Посмотрите здесь:

C++ В двумерном N*K массиве целых чисел поменять строку с максимальной суммой элементов со строкой с минимальной суммой элементов.
Найти строку с минимальной суммой элементов C++
C++ процедура без глобальных переменных для вывода суммы элементов матрицы и номера строки с минимальной суммой элементов
все элементы в массиве, кроме 1, нужно заменить суммой предыдущих элементов C++
Подскажите, пожалуйста, почему не работает? (найти столбец с минимальной суммой элементов) C++
C++ в квадратной целой матрице заменить все нечетные элементы суммой элементов главной диагонали
C++ Поиск строки с минимальной суммой элементов
Дана Матрица Н(6,5). Найти столбец с минимальной суммой элементов C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
igor001
8 / 3 / 1
Регистрация: 12.02.2013
Сообщений: 68
13.02.2013, 14:38     Заменить все столбцы на столбец с минимальной суммой элементов (Класс) #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
TStringGrid * table = new <TStringGrid*> (Form1);
 
table->RowCount = m;
table->Col count = n;
 
//заполняем таблицу
 
int min = 99999999; //заведомо большее значение чем может быть (лучше максимальное число, которое может вместить используемый тобой тип данных (int, long или long long))
int sum = 0;
int pos = 0;  //искомая колонка
 
for (int col = 0; col < table->ColCount; ++col )
{
     sum = 0;
     for(int row = 0; row < table->RowCount; ++row)
     {
          sum += StrToInt(table->Cells[col][row]);
     }
     if(min > sum)
     {
          min = sum;
          pos = col;
     }
}
//
//циклом копируем значения из найденной колонки в остольные
for (int col = 0; col < table->ColCount; ++col )
{
     for(int row = 0; row < table->RowCount; ++row)
     {
          table->Cells[Col][Row] = table->Cells[pos][Row];
     }
}
kuli4ok
31 / 31 / 3
Регистрация: 10.10.2012
Сообщений: 88
13.02.2013, 14:46     Заменить все столбцы на столбец с минимальной суммой элементов (Класс) #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
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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#include <iostream>
#include <stdlib.h>
#include <time.h>
 
using namespace std;
 
class matrix
{
private:
    int ** mass;
    int n;
    int m;
public:
    matrix(int _n, int _m)
    {
        n = _n;
        m = _m;
        mass = new int*[n];
        for(int i=0; i<n; i++)
            mass[i] = new int[m];
    }
    ~matrix()
    {
        for(int i=0; i<n; i++)
            delete [] mass[i];
        delete [] mass;
    }
    matrix(const matrix& rhs)
    {
        n = rhs.n;
        m = rhs.m;
        mass = new int*[n];
        for(int i=0; i<n; i++)
            mass[i] = new int[m];
        for(int i=0; i<n; i++)
        {
            for(int j=0; j<n; j++)
                mass[i][j] = rhs.mass[i][j];
        }
    }
    void show()
    {
        for(int i=0; i<n; i++)
        {
            for(int j=0; j<m; j++)
            {
                cout << mass[i][j] << " ";
            }
            cout << "\n";
        }
    }
 
    void get_random(int l)
    {
        for(int i=0; i<n; i++)
        {
            for(int j=0; j<m; j++)
            {
                mass[i][j] = rand()%l;
            }
        }
    }
    void get_user()
    {
        for(int i=0; i<n; i++)
        {
            for(int j=0; j<m; j++)
            {
                cout << "Введите mass[" << i << "][" << j << ": ";
                cin >> mass[i][j];
            }
        }
    }
    int sum(int _m)
    {
        int res = 0;
        for(int i=0; i<n; i++)
        {
            res = res + mass[n-1][_m];
        }
        return res;
    }
    int min_sum()
    {
        int m_save;
        for(int i=1; i<m; i++)
        {
            if(sum(i)<sum(i-1))
                m_save = i;
        }
        return m_save;
    }
    void replacement(int min_m)
    {
        for(int i=0; i<n; i++)
        {
            for(int j=0; j<m; j++)
            {
                if(j == min_m)
                    continue;
                mass[i][j] = mass[i][min_m];
            }
        }
    }
};
 
int main()
{
    srand(time(0));
    int n, m;
    cout << "Введите количество строк и столбцов в матрице через пробел: ";
    cin >> n >> m;
    cout << "Каким методом хотите заполнить матрицу?\n1. Случайными числами\n0. С клавиатуры\nНомер: ";
    int choose;
    cin >> choose;
    matrix mass(n, m);
    if(choose == 1)
    {
        cout << "Укажите одним числом максимально возможное случайное число: ";
        cin >> m;
        mass.get_random(m);
    }
    else
        mass.get_user();
    cout << "Матрица до замены: \n";
    mass.show();
    mass.replacement(mass.min_sum());
    cout << "Матрица после замены: \n";
    mass.show();
    return 0;
Yandex
Объявления
13.02.2013, 14:46     Заменить все столбцы на столбец с минимальной суммой элементов (Класс)
Ответ Создать тему
Опции темы

Текущее время: 23:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru