Вот такое задание у меня по СИ++ в универе: Дана матрица размером N*M. Упорядочить её строки по возрастанию первых элементов строк. Доп. условия: заполнить массив рандомными числами больше 10, обязательно использование динамических двумерных массивов (с указателями).
Вот что у меня получилось:
Код | #include <iostream.h> #include <stdlib.h> #include <iomanip.h> #include <time.h>
int main() {
int i, k, bg, N, M; double **a;
cout << "Vvedite N: "; cin >> N; cout << "Vvedite M: "; cin >> M;
cout << "Baza generacii: "; cin >> bg;
srand (time(NULL)); a=(double **)calloc(N,sizeof(double *)); for (i=0; i<N; i++){ a[i]=(double *)calloc(M,sizeof(double)); for (int j=0; j<M; j++){ while (a[i][j]<10) { a[i][j]=rand()%bg; } cout << a[i][j] << " "; } cout << "\n" << endl; } cout << "\n" << endl;
double b; for (i=0; i<N-1; i++){ for (k=0; k<N-1; k++){ if (a[k][0]>a[k+1][0]){ for (int j=0; j<M; j++){ b=a[k][j]; a[k][j]=a[k+1][j]; a[k+1][j]=b; } } }
}
for (i=0; i<N; i++){ for (int j=0; j<M; j++){ cout << a[i][j] << " "; } cout << "\n" << endl; } delete[] a; return 0;
}
|
Внешне программа работает правильно, но сомневаюсь в динамических массивах. Нам предлагают использовать конструкцию
Код | Тип *указатель = new тип [N];
|
но у меня с ней ничего не получилось. Может кто подскажет, как через new сделать? И правильно ли я реализовал освобождение выделенной памяти? |