Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как создать перегруженный оператор [] как аналог индексатора C#? https://www.cyberforum.ru/ cpp-beginners/ thread2400159.html
Как создать перегруженный оператор как аналог индексатора C# ? Пример построен на базе https://ravesli.com/urok-138-peregruzka-operatora-indeksatsii/ но внес некоторые добавления со...
Программа, которая запускает другую программу с определённым интервалом C++
Помогите, пожалуйста. У меня не получается. Нужно написать программу на C++, которая бы запускала другую программу с определённым промежутком времени, который можно будет задавать
C++ Как лучше упорядочить функции? https://www.cyberforum.ru/ cpp-beginners/ thread2400145.html
Есть множество функций в классе class Ports { public: void config(void); void outWrite(uint8_t portNum, bool portMode); bool outRead(uint8_t portNum); void outLightWrite(uint8_t portNum,...
C++ Найти все трехзначные числа, в которых любые две цифры равны Найти все трехзначные числа, в которых любые две цифры равны https://www.cyberforum.ru/ cpp-beginners/ thread2400140.html
Функция: определить, является ли число палиндромом C++
есть готовый код, кто-то может объяснить что значит этот фрагмент из кода с++ int reverse_number(int number) { int n = 0; while (number) { n = 10 * n + number % 10; number /= 10; }
C++ Вывести слова предложения написаные заглавными буквами Вывести на экран слова предложения, которые написаны большими буквами https://www.cyberforum.ru/ cpp-beginners/ thread2400130.html
C++ Реализую свой Вектор https://www.cyberforum.ru/ cpp-beginners/ thread2400129.html
Всех приветствую!) Подскажите пожалуйста, какие поля нужно создать в классе(что именно нам нужно хранить) для реализации Мини Вектора. Мини Вектор - вектор с методами push_back(), pop_back(),...
Цикл for: что означает данное условие? C++
рисую прямоуголник по периметру звездочки мне не понятно if (i == 0 || j == 0 || i == 10 - 1 || j == 20 - 1) почему надо приравнивать к нулю и вычитать единицу std::cout << "* "; ?...
C++ Программа, которая запускает программу каждые несколько минут https://www.cyberforum.ru/ cpp-beginners/ thread2400125.html
Помогите, пожалуйста, нужно написать программу, которая запускала бы другую программу с определённым промежутком времени, который можно задавать. Сам пытался, в итоге ничего не вышло :(
C++ HTTPS подключение к БД influx db Подскажите как сделать HTTPS подключение к БД Influxdb. А так-же как писать в неё данные и вычитывать? https://www.cyberforum.ru/ cpp-beginners/ thread2400116.html
Длинная арифметика C++
Здравствуйте, вопрос по поводу задачки, хочу попытаться реализовать решение на плюсах, а не на питоне. Суть такая: надо найти остаток от деления большого числа (до 10^100 000) на 12. Также ещё...
C++ удалить элемент Структура проекта состоит из: фамилия студента, дата, расходы на завтрак, обед, ужин в студенческой столовой. Задание: удалить элемент из структуры. Код для удаления не работает, зацикливается.... https://www.cyberforum.ru/ cpp-beginners/ thread2400096.html
223 / 150 / 79
Регистрация: 14.03.2016
Сообщений: 459
07.02.2019, 16:21 0

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

07.02.2019, 16:21. Показов 822. Ответов 6
Метки (Все метки)

Ответ

Интересно, в чем у вас могли возникнуть сложности?
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;
}


Вернуться к обсуждению:
Массив: Разделить элементы каждого столбца заданной матрицы на последний элемент столбца. C++
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.02.2019, 16:21
Готовые ответы и решения:

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

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

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

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

6
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.02.2019, 16:21

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

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

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

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

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru