0 / 0 / 0
Регистрация: 06.02.2019
Сообщений: 15
1

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

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

Разделить элементы каждого столбца заданной матрицы на последний элемент столбца. Полученную матрицу напечатать. Для каждой строки заданной матрицы определить минимальное значение, а среди полученных минимальных значений найти среднее.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.02.2019, 21:06
Ответы с готовыми решениями:

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

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

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

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

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

Добавлено через 10 минут
Или матрица задана?
0
0 / 0 / 0
Регистрация: 06.02.2019
Сообщений: 15
06.02.2019, 22:40  [ТС] 3
случайная
0
Заблокирован
06.02.2019, 22:57 4
Размерность 5*5 достаточна? Или ее вводить с клавиатуры?
0
0 / 0 / 0
Регистрация: 06.02.2019
Сообщений: 15
06.02.2019, 23:02  [ТС] 5
Добавлено через 2 минуты
достаточно)
0
Заблокирован
06.02.2019, 23:05 6
ок.
0
223 / 150 / 79
Регистрация: 14.03.2016
Сообщений: 459
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.02.2019, 16:21

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

Разделить элементы каждого столбца матрицы на последний его элемент
Преобразовать двумерный массив (4 х 4), разделивши елементы каждого столбца на последний елемент...

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

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


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

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

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