Обмен элементов двумерного динамического массива через массив указателей - C (СИ)
Формулировка задачи:
Собственно сабж.
Есть задание:
Есть код:
Как предусмотреть обмен?
PS: очистку памяти ставить где лучше: в функции или в мэйне?
Написать программу функция которой получит в качестве параметра динамический двухмерный массив,
затем создать массив указателей каждый элемент которого должен ссылаться на элемент двухмерного массива, предусмотреть обмен местами любых двух элементов координаты которых должны быть указаны с клавиатуры, обмен элементов предусмотреть через массив указателей.
#include <stdio.h>
#include <conio.h>
void func(int **a){
int **b=new int*[10];//выделение памяти
for (int i=0; i<10; i++){
b[i]=new int[10];
}
for (int i=0; i<3; i++){//заполнение
for (int j=0; j<3; j++)
b[i][j]=i+j;
}
printf("___________________________________________\n");
printf("dynamic mass\n");
printf("___________________________________________\n");
for (int i=0; i<3; i++){//вывод
for (int j=0; j<3; j++)
printf("%i\t", b[i][j]);
printf("\n");
}
printf("___________________________________________\n");
printf("\n");
for (int i=0; i<10; i++){
delete b[i];
}
delete []b;
}
int main (void){
int i, j;
int x, y;
int **p;
func (p);
int *c[10];
for(i=0; i<10; i++){//ссылки
c[i]= &*p[i];
}
printf("___________________________________________\n");
printf("mass of indexes\n");
printf("___________________________________________\n");
for (i=0; i<3; i++){// вывод массива указателей
for (j=0; j<3; j++)
printf("%x\t", &p[i][j]);
printf("\n");
}
printf("___________________________________________\n");
/*printf("\nenter elements' coordinates...\n");//координаты
printf("enter line...\n");
scanf("%i", &x);//строка
printf("enter column...\n");
scanf("%i", &y);//столбец*/
//предусмотреть обмен...КАК???
for (i=0; i<10; i++){//очистка
delete p[i];
}
delete []p;
getch();
return 0;
}Решение задачи: «Обмен элементов двумерного динамического массива через массив указателей»
textual
Листинг программы
(int &h){