Здравствуйте, мне пришлось написать программу (ну, еще есть), которая бы выделяла память в функции для хранения чисел, которые вы должны ввести, а затем печатать матрицу (строки и столбцы имеют одинаковый размер).Самое главное, чтобы программа была написана с использованием указателей, локальных переменных, функций и стандарта C 89.
#include <stdio.h>
#include <stdlib.h>
void Matrix_Input(int *m, int ***Matrix);
void Matrix_Output(int m, int **Matrix);
int main()
{
int m;
int **Matrix;
int i;
Matrix_Input(&m, &Matrix);
Matrix_Output(m, Matrix);
for (i = 0; i < m; i++) /*free memory*/
free(*(Matrix+i));
free(Matrix);
return 0;
}
void Matrix_Input(int *m, int ***Matrix)
{
int i, j;
printf("Input number of rows/columns: \n");
scanf("%d", m);
*Matrix = malloc(*m* sizeof(int*)); /*allocate memory*/
for (i = 0; i < *m; i++)
*(*Matrix+i) = malloc(*m* sizeof(int));
printf("Input integers: \n");
for (i = 0; i < *m; i++)
for (j = 0; j < *m; j++)
scanf("%d", &((*Matrix)[i][j]));
}
void Matrix_Output(int m, int **Matrix)
{
int i, j;
for (i = 0; i < m; i++)
{
for (j = 0; j < m; j++)
printf("%5d", Matrix[i][j]);
printf("\n");
}
}
Программа работает нормально, но меня попросили не использовать тройные указатели здесь (для функции ввода):
void Matrix_Input(int *m, int ***Matrix)
Учитель сказал мне использовать двойные указатели для функции ввода, как я это делал для вывода:
void Matrix_Input(int *m, int **Matrix)
И здесь все идет не так, потому что я знаю только каквыделить с помощью тройных указателей.Я должен оставить ввод как отдельную функцию, не могу поместить его в main.
Может кто-нибудь помочь мне?Пожалуйста.