Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Аня1987
0 / 0 / 0
Регистрация: 06.02.2019
Сообщений: 15
1

Массив: Разделить элементы каждого столбца заданной матрицы на последний элемент столбца.

06.02.2019, 21:06. Просмотров 404. Ответов 6
Метки нет (Все метки)

Разделить элементы каждого столбца заданной матрицы на последний элемент столбца. Полученную матрицу напечатать. Для каждой строки заданной матрицы определить минимальное значение, а среди полученных минимальных значений найти среднее.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.02.2019, 21:06
Ответы с готовыми решениями:

Разделить элементы каждого столбца заданной матрицы на последний элемент столбца
Разделить элементы каждого столбца заданной матрицы на последний элемент столбца.

Двумерные массивы. Разделить элементы каждого столбца на последний элемент столбца
Уважаемые, нужна помощь. Дано матрицу Т размером 6х5. Разделить элементы каждого столбца на...

Вычесть из каждого столбца матрицы максимальный элемент для каждого столбца, и результат вывести в матрицу
Что нужно добавить , чтобы вычесть из каждого столбца матрицы максимальный элемент для каждого...

Массивы. Поделить элементы каждой строки столбца на последний элемент столбца
Дано матрицу Т размером 8х9. поділіть элементы каждой строки столбца на последний элемент столбца....

Каждый элемент столбца матрицы разделить на среднее арифметическое элементов данного столбца
Заданный массив действительных чисел А (n, n). Необходимо каждый элемент столбца разделить на...

6
slava_psk
Заблокирован
06.02.2019, 22:28 2
Размерность матрицы? Элементы матрицы случайные числа?

Добавлено через 10 минут
Или матрица задана?
0
Аня1987
0 / 0 / 0
Регистрация: 06.02.2019
Сообщений: 15
06.02.2019, 22:40  [ТС] 3
случайная
0
slava_psk
Заблокирован
06.02.2019, 22:57 4
Размерность 5*5 достаточна? Или ее вводить с клавиатуры?
0
Аня1987
0 / 0 / 0
Регистрация: 06.02.2019
Сообщений: 15
06.02.2019, 23:02  [ТС] 5
Добавлено через 2 минуты
достаточно)
0
slava_psk
Заблокирован
06.02.2019, 23:05 6
ок.
0
Cortas
215 / 144 / 78
Регистрация: 14.03.2016
Сообщений: 458
Завершенные тесты: 5
07.02.2019, 16:21 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
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
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
#include <iostream>
#include <string>
#include <iomanip>
#include <algorithm>
using namespace std;
 
//выделяет память по данному указателю
template <typename T>
void createMatrix(T **&mtx, int lines, int columns)
{
    //также кидает исключение, если кто-то передаст указатель, в котором
    //уже есть адрес на выделенную память. Конечно, такое легко обойти 
    //присвоив в коде указателю на матрицу nullptr и тем самым создать
    //прекрасную ошибку утечки памяти, однако это уже проблемы 
    //программиста, сделавшего это, а не функции.
    if(mtx != nullptr) 
        throw (string)"Pointer != nullptr => already initialized! Can't assign new memmory!";
    mtx = new T*[lines];
    for(int i = 0; i < lines; i++)
        mtx[i] = new T[columns];
}
 
//удаляет память матрицы по переданному указателю на неё
template <typename T>
void deleteMatrix(T **mtx, int lines)
{
    for(int i = 0; i < lines; i++)
        delete[] mtx[i];
    delete[] mtx;
}
 
//выдает "рандомное" значение в диапазоне [from; to]
int random(int from, int to)
{
    if(from > to) swap(from, to);
    return rand() % (to - from + 1) + from;
}
 
//заполняет матрицу случайными значениями
template <typename T>
void fillMatrix(T **mtx, int lines, int columns, int from, int to)
{
    for(int i = 0; i < lines; i++)
        for(int j = 0; j < columns; j++)
            mtx[i][j] = random(from, to);
}
 
//ввод матрицы с клавиатуры
template <typename T>
void inputMatrix(T **mtx, int lines, int columns)
{
    for(int i = 0; i < lines; i++)
            for(int j = 0; j < columns; j++)
                cin >> mtx[i][j];
}
 
//простой вывод матрицы
template <typename T>
void displayMatrix(T **mtx, int lines, int columns)
{
    for(int i = 0; i < lines; i++)
    {
        for(int j = 0; j < columns; j++)
            cout << mtx[i][j] << ' ';
        cout << endl;
    }
}
 
//для вывода матрицы с излишествами
int lengthOfNum(int num)
{//вычисляет длину числа (кол-во цифр)
    int length = 1;
    while(num /= 10) length++;
    return length;
}
 
int lengthOfNum(double num)
{//вычисляет длину числа (кол-во цифр) + точность вывода 
//чисел с плавающей запятой
    int length = lengthOfNum(int(num)) + 1;
    int temp = cout.precision(1); cout.precision(temp);
    length += temp;
    return length;
}
 
//выводим матрицы с излишествами
//(лучше использовать только с целыми числами)
template <typename T>
void displayPrettyMatrix(T **mtx, int lines, int columns, T maxNum)
{
    int linesLength = lengthOfNum(lines) + 1;
    int maxLength = max(lengthOfNum(maxNum), lengthOfNum(columns)) + 1;
    
    //выводим номера столбцы
    cout << setw(linesLength + 1) << ' ';
    for(int i = 0; i < columns; i++) cout << setw(maxLength) << i;
    //выводим разграничивающую линию
    cout << endl << setw(linesLength + 1) << char(218);
    for(int i = 0; i < maxLength * columns; i++) cout << char(196);
    cout << endl;
 
    //выводим саму матрицу и номера строк
    for(int i = 0; i < lines; i++)
    {
        //выводим номер строки и символ между матрицей.
        cout << setw(linesLength) << i << char(179);
        //выводим саму матрицу со сдвигом на maxLength шобы
        //красЫво было
        for(int j = 0; j < columns; j++)
            cout << setw(maxLength) << mtx[i][j];
        cout << endl;
    }
 
}
 
//дефы, которые определяют как работает программа 
//по желанию разработчика.
//При объявлении первого будет красивый вывод матрицы, 
//без - обычный. Второе объявление запросит у пользователя
//с клавиатуры размер матрицы, без - будут использоваться 
//заданные в значения. Третье объявление запросит у 
//пользователя всю матрицу, без - заполнит её самостоятельно
#define Pretty_output
//#define Manual_size
//#define Manual_input
int main()
{
    //ставим точность
    cout.precision(4);
    //объявляем и обнуляем указатель
    double **mtx = nullptr;
    int lines, columns;
    typedef remove_reference<decltype(**mtx)>::type usedType;
 
#ifdef Manual_size
    cout << "Enter matrix size (lines X columns): ";
    cin >> lines >> columns;
#else
    lines = 5;
    columns = 10;
#endif
    
    //блок try-catch для поимки исключения при 
    //попытке выделить память на имеющийся уже
    //участок памяти, однако так же срабатывает на
    //не инициализированный указатель, т.к.
    //в нем лежит мусор.
    try
    {
        createMatrix<usedType>(mtx, lines, columns);
    }
    catch(string str){
        cout << "Error: " << str;
        system("pause>nul");
        return 0;
    }
#ifdef Manual_input
    cout << "Enter elemnt of matrix: ";
    inputMatrix<usedType>(mtx, lines, columns);
#else
    fillMatrix<usedType>(mtx, lines, columns, 700, 2000);
#endif
 
#ifdef Pretty_output
    //поиск максимального элемента, нужен лишь
    //для красивого вывода матрицы
    usedType maxNum = 0;
    for(int i = 0; i < lines; i++) 
        for(int j = 0; j < columns; j++) 
            if(maxNum < mtx[i][j]) maxNum = mtx[i][j];
 
    displayPrettyMatrix<usedType>(mtx, lines, columns, maxNum);
#else
    displayMatrix<usedType>(mtx, lines, columns);
#endif
    cout << endl << endl;
 
    //делим каждый эл. каждого столбика 
    //на последний
    for(int j = 0; j < columns; j++)
        for(int i = 0; i < lines; i++)
            mtx[i][j] /= mtx[lines - 1][j];
    maxNum = 0.0;
 
    //создание массива, в котором будут храниться
    //минимальные значения каждой строки
    usedType *minInLine = new usedType[lines];
    //ищем минимальное значение для каждой строки
    for(int i = 0; i < lines; i++)
    {
        minInLine[i] = mtx[i][0];
        for(int j = 1; j < columns; j++)
        {
            if(minInLine[i] > mtx[i][j])
                minInLine[i] = mtx[i][j];
#ifdef Pretty_output
            //т.к. матрица поменялась, то придется опять
            //искать максимальный элемент
            if(mtx[i][j] > maxNum)
                maxNum = mtx[i][j];
#endif
        }
    }
 
#ifdef Pretty_output
    displayPrettyMatrix<usedType>(mtx, lines, columns, maxNum);
#else
    displayMatrix<usedType>(mtx, lines, columns);
#endif
 
    //выводим их
    cout << "Min elements in lines of the matrix[" << lines << "]: " << endl;
    for(int i = 0; i < lines; i++)
        cout << minInLine[i] << ' ';
    cout << endl;
 
    //считаем ср. арифметическое
    int sum = 0;
    for(int i = 0; i < lines; i++)
        sum += minInLine[i];
    cout << "Arithmetic mean of min elemnts: " << (double)sum / lines;
 
    //удаляем массив мин. значений
    delete[] minInLine;
    //удаляем матрицу
    deleteMatrix<usedType>(mtx, lines);
    //стопим консоль
    system("pause>nul");
    return 0;
}
0
07.02.2019, 16:21
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.02.2019, 16:21

Отсортировать положительные элементы каждого столбца заданной матрицы
Что поменять чтобы сортировало положительные елементы каждого столбца? #include &lt;iostream&gt;...

Расположить элементы каждого столбца заданной матрицы по возрастанию значений
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;stdlib.h&gt; void main() { int...

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


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

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

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