Доброго времени суток. А как очистить динамический память массива на языке C++? И что это вообще значит?
К примеру, есть такая программа:
/*
* Тема: Обработка двумерных массивов
*/
#include <iostream>
#define MAX_N 5
#define MAX_M 10
void input(int *ptr[], int n, int m);
void output(int *ptr[], int n, int m);
void matrix(int *ptr[], int n, int m);
int main()
{
int n, m; // n строк и m столбцов
std::cout << "Input N rows (0<x<=" << MAX_N << "):";
std::cin >> n; // ввод кол. n строк
std::cout << "Input M columns (0<x<=" << MAX_M << "):";
std::cin >> m; // ввод кол. m столбцов
if (n > MAX_N or m > MAX_M)
{
std::cout << "===[Error! Plase, try again.]===\n";
return 0;
}
int a[n][m];
int *p[n];
for (int i=0; i<n; i++) p[i] = a[i];
input(p, n, m);
int *t[n];
for (int i=0; i<n; i++) t[i] = a[i];
output(t, n, m);
int *q[n];
for (int i=0; i<n; i++) q[i] = a[i];
matrix(q, n, m);
int *r[n];
for (int i=0; i<n; i++) r[i] = a[i];
output(r, n, m);
}
/*
* Ввод элементов матрицы с клавиатуры
*/
void input(int *ptr[], int n, int m)
{
for (int i=0; i<n; i++)
{
std::cout << "\n";
for (int j=0; j<m; j++)
{
std::cout << "Input A[" << i << "][" << j << "]:";
std::cin >> ptr[i][j];
}
}
}
/*
* Вывод элементов матрицы на экран после смены значений
*/
void output(int *ptr[], int n, int m)
{
std::cout << "\nOutput:";
for (int i=0; i<n; i++)
{
std::cout << "\n";
for (int j=0; j<m; j++)
std::cout << ptr[i][j] << "\t";
}
std::cout << "\n";
}
void matrix(int *ptr[], int n, int m)
{
/*
* Задание 1.
* Вычислить сумму элементов для каждого столбца
*/
int* s = new int[m]; // Динамически выделяем память (int s[m])
for (int j=0; j<m; j++)
{
s[j]=0;
for (int i=0; i<n; i++)
s[j] += ptr[i][j];
}
// Debug: Sums of columns
// std::cout << "\nSum:\n";
// for (int i=0; i<m; i++)
// std::cout << "["<< i << "]" << s[i] << "; ";
// std::cout << "\n";
int max;
int min = 0;
for (int i=0; i<m; i++)
{
if (s[i] > s[i-1])
max = i;
if (s[i] <= s[min])
min = i;
}
// Debug: max and min columns by sums
// std::cout << "\n\nMin: " << min << "\n";
// std::cout << "Max: " << max << "\n\n";
/*
* Задание 2.
* Поменять местами столбцы с максимальным и минимальным значением суммы
*/
for (int i=0; i<n; i++)
std::swap(ptr[i][max], ptr[i][min]);
}
Или приведите свои примеры. Спасибо.