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

Создать вектор, элементы которого равны произведению max и min в строке массива

03.12.2014, 01:06. Показов 624. Ответов 8
Метки нет (Все метки)

С массива [Dij]mn создать вектор из элементов, что равны произведению max
элемента та min элемента в ряде.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.12.2014, 01:06
Ответы с готовыми решениями:

Образовать массив элементы которого равны произведению элементов исходного массива на их номера
Вот задача: Массив A содержит 10 целых чисел: 1,2,3,4,5,9,12,8,13,17. Образовать новый массив B...

Составить матрицу, элементы которой равны разности между min и max элементов матрицы А, расположенных в закрашенной области
Здравствуйте, есть такая задача: Задана матрица А вещественных чисел размера N*N (N<=20, задаётся...

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

Вектор из элементов равных умножения max элемента и min элемента в строке
Из массива mn создать вектор из элементов равные умножению max элемента и min элемента в строке.

8
29 / 38 / 6
Регистрация: 04.10.2014
Сообщений: 161
03.12.2014, 01:35 2
Вообще то двумерным вектором будет считаться это >
C++
1
vector<vector<int>> ve;
А это пример использования векторов >
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
#include <iostream>
#include <vector>
using namespace std;
 
void main()
{
    // заполняющийся вектор
    vector<vector<int>> ve(0, vector<int>(3));
 
    // используемый вектор для заполнения
    vector<vector<int>> veC(1, vector<int>(3));
    veC[0][0] = 22;
    veC[0][1] = 33;
    veC[0][2] = 44;
    ve.push_back(veC[0]);
    // сверка данных с заполняющегося вектора
    cout << ve[0][0] << endl;
    cout << ve[0][1] << endl;
    cout << ve[0][2] << endl << "---" << endl;
    veC[0][0]++;
    veC[0][1]++;
    veC[0][2]++;
    ve.push_back(veC[0]);
    // сверка данных с заполняющегося вектора
    cout << ve[1][0] << endl;
    cout << ve[1][1] << endl;
    cout << ve[1][2] << endl;
}
Если нужны разные типы данных можно делать через вектор с объектами или кортежи(тупли).
0
0 / 0 / 0
Регистрация: 02.12.2014
Сообщений: 3
03.12.2014, 01:44  [ТС] 3
Благодарю, но можно именно код для задания увидеть?
0
29 / 38 / 6
Регистрация: 04.10.2014
Сообщений: 161
03.12.2014, 01:58 4
В ряде двумерного массива что ли?
То есть в случае выше примера моего произведение 22*44 ?

Добавлено через 1 минуту
Блин, я эти массивы обычные фиг знает когда забросил - делаю давным давно только через векторы / объекты / тупли.
0
0 / 0 / 0
Регистрация: 02.12.2014
Сообщений: 3
03.12.2014, 02:32  [ТС] 5
Так...можете написать код именно для этой задачи?
0
29 / 38 / 6
Регистрация: 04.10.2014
Сообщений: 161
03.12.2014, 14:30 6
Я думаю можно, только дословно еще раз напиши задачу.
Точно так как у тебя там в задачнике.
Просто частенько эти учебники или че там НЕ так явно указывают что нужно сделать.
0
Котовчанин
940 / 480 / 200
Регистрация: 16.02.2010
Сообщений: 3,338
Записей в блоге: 37
03.12.2014, 14:32 7
lollypop, а в чем проблема самому написать?
0
76 / 76 / 32
Регистрация: 14.04.2014
Сообщений: 408
03.12.2014, 16:20 8
вектор не двумерный, можо даже динамический массив создать...
строк то всего n.

C++
1
2
3
4
5
6
7
for(int i=0; i<n;++i){
max=min=D[0][i];
       for(int j=1; j<m; j++){
if(max<D[j][i]) max = D[j][i];
if(min<D[j][i]) min= D[j][i];
}
D_result[i] = max*min;
0
29 / 38 / 6
Регистрация: 04.10.2014
Сообщений: 161
03.12.2014, 19:56 9
Решил бросить себе вызов и написать алгоритм нахождения min/max индексы int переменных в ряде двумерного вектора.
Нельзя таким заниматься - пол дня угрохаешь ).
Решение вышло сильно ожиревшим.
Конечно есть готовые стандартные решения, но вот чето захотелось самописного.

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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
#include <iostream>
#include <vector>
using namespace std;
 
vector<vector<int>> minMaxVInt(vector<vector<int>> veC, int Columns)
{
    // создаем двумерный вектор очков сравнения
    // максимально возможное значение = Columns-1
    // минимально возможное значение = -1*(Columns-1)
 
    int vSize = veC.size();
    vector<vector<int>> vPts;
    vector<vector<int>> vAdd(1, vector<int>(Columns, 0));
    
    int row, col, nPlus, nMinus, vACol;
    for(row=0; row < vSize; row++)
    {
        for(col = 0; col < Columns; col++)
        {   
            for(nPlus = col+1; nPlus < Columns; nPlus++)
            {
                if(veC[row][col] > veC[row][nPlus])
                {
                    vAdd[0][col]++;
                }
                else if(veC[row][col] < veC[row][nPlus])
                {
                    vAdd[0][col]--;
                }
            }
 
            for(nMinus = col-1; nMinus > -1 ; nMinus--)
            {
                if(veC[row][col] > veC[row][nMinus])
                {
                    vAdd[0][col]++;
                }
                else if(veC[row][col] < veC[row][nMinus])
                {
                    vAdd[0][col]--;
                }
            }
        }
 
        vPts.push_back(vAdd[0]);
        for(vACol=0; vACol < Columns; vACol++)
        {
            vAdd[0][vACol] = 0;
        }
    }
 
 
    // нахождение индекса первого минимального значения
    // одномерный вектор минимального индекса ряда
    vector<int> veMinInd;
 
    // самые мин. очки наименьшего числа = -1 (2 сравниваемых числа)
    // мин. очки наименьшего числа = -1*Columns-1
    int minPts = -1*Columns-1;
    int minPtsCheck,
        minPtsFound,
        vPRow, vPCol;
 
    for(vPRow=0; vPRow < vSize; vPRow++)
    {
        for(minPtsCheck = minPts; minPtsCheck < 0; minPtsCheck++)
        {
            for(vPCol=0; vPCol < Columns; vPCol++)
            {
                if( vPts[vPRow][vPCol] == minPtsCheck )
                {
                    veMinInd.push_back(vPCol);
                    minPtsFound = 1;
                    break;
                }
            }
            if(minPtsFound == 1)
            {
                minPtsFound = 0;
                break;
            }
        }
    }
 
 
    // нахождение индекса первого максимального значения
    // одномерный вектор максимального индекса ряда
    vector<int> veMaxInd;
    
    // мин. очки наибольшего числа = 1 (2 сравниваемых числа)
    // макс. очки наибольшего числа = Columns-1
    int maxPts = Columns-1;
    int maxPtsCheck,
        maxPtsFound;
    
    for(vPRow=0; vPRow < vSize; vPRow++)
    {
        for(maxPtsCheck = maxPts; maxPtsCheck > 0; maxPtsCheck--)
        {
            for(vPCol=0; vPCol < Columns; vPCol++)
            {
                if( vPts[vPRow][vPCol] == maxPtsCheck )
                {
                    veMaxInd.push_back(vPCol);
                    maxPtsFound = 1;
                    break;
                }
            }
            if(maxPtsFound == 1)
            {
                maxPtsFound = 0;
                break;
            }
        }
    }
 
 
    // создаем двумерный вектор и
    // переносим значения с векторов veMinInd / veMaxInd
    vector<vector<int>> veMinMaxInd(0, vector<int>(2));
    vector<vector<int>> veMmAdd(1, vector<int>(2));
    int veMmRow;
 
    for(veMmRow=0; veMmRow < vSize; veMmRow++)
    {
        veMmAdd[0][0] = veMinInd[veMmRow];
        veMmAdd[0][1] = veMaxInd[veMmRow];
        veMinMaxInd.push_back(veMmAdd[0]);
    }
    
    return veMinMaxInd;
}
 
// тестируем - просто вызываем в main()
void testMinMaxVInt()
{
    int Columns = 3;
    vector<vector<int>> veC(2, vector<int>(Columns));
    // мин. = 0
    // макс. = 2
    veC[0][0] = 11;
    veC[0][1] = 11;
    veC[0][2] = 44;
    // мин. = 2
    // макс. = 0
    veC[1][0] = 8;
    veC[1][1] = 8;
    veC[1][2] = 2;
    
    vector<vector<int>> ve =  minMaxVInt(veC, Columns);
    
    cout << "Min of 1 row: " << ve[0][0] << endl;
    cout << "Max of 1 row: " << ve[0][1] << endl << "---" << endl;
 
    cout << "Min of 2 row: " << ve[1][0] << endl;
    cout << "Max of 2 row: " << ve[1][1] << endl;
}
 
 
void main()
{
    testMinMaxVInt();
    
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.12.2014, 19:56

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

Нахождение Max и Min в строке двумерного массива
что то вообще не чего не получается. как передать в функцию массив построчно?как найти мин-мах? как...

Задана прямоугольная матрица А. Построить вектор В, элементы которого равны разностям наибольших и наименьших значений элементов строк
Задана прямоугольная матрица А. Построить вектор В, элементы которого равны разностям наибольших и...

Равны ли элементы массива(вектор)?
дравствуйте уважаемые посетители! Столкнулся с проблемой,нужно узнать сумму элементов массива до...

создать функцию удаления max и min эл-та массива
Я написал почти всю программу в которой задание состоит следующим образом: Удалить максимальный и...


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

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

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