#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <malloc.h>
void BuildMatrix(int*** matrix, int row, int column);
void ExitAndFree(int*** matrix, int row);
int main() {
int row = 2, column = 2;
int **matrix, i, j;
BuildMatrix(&matrix, row, column);
for (i = 0; i < row; i++) { //just to check that it inserts all the values OK
for (j = 0; j < column; j++) {
printf("\n%d \n", matrix
[i
][j
]); }
}
ExitAndFree(&matrix, row);
return 0;
}
void BuildMatrix(int*** matrix, int row, int column) {
int i, j;
*matrix
= (int**)malloc(row
* sizeof(int *)); for (i = 0; i < row; i++)
(*matrix
)[i
] = (int*)malloc(column
* sizeof(int)); printf("\nPlease enter values to the matrix\n"); for (i = 0; i < row; i++) {
for (j = 0; j < column; j++) {
scanf("%d", &((*matrix
)[i
][j
])); }
}
}
void ExitAndFree(int*** matrix, int row) {
int i;
for (i = 0; i < row; i++) {
(*matrix)[i] = NULL;
}
matrix = NULL;
}
I2RlZmluZSBfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUwojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHN0cmluZy5oPgojaW5jbHVkZSA8c3RkbGliLmg+CiNpbmNsdWRlIDxtYWxsb2MuaD4Kdm9pZCBCdWlsZE1hdHJpeChpbnQqKiogbWF0cml4LCBpbnQgcm93LCBpbnQgY29sdW1uKTsKdm9pZCBFeGl0QW5kRnJlZShpbnQqKiogbWF0cml4LCBpbnQgcm93KTsKaW50IG1haW4oKSB7CglpbnQgcm93ID0gMiwgY29sdW1uID0gMjsKCWludCAqKm1hdHJpeCwgaSwgajsKCUJ1aWxkTWF0cml4KCZtYXRyaXgsIHJvdywgY29sdW1uKTsKCglwcmludGYoIllvdXIgbWF0cml4OlxuIik7Cglmb3IgKGkgPSAwOyBpIDwgcm93OyBpKyspIHsgLy9qdXN0IHRvIGNoZWNrIHRoYXQgaXQgaW5zZXJ0cyBhbGwgdGhlIHZhbHVlcyBPSwoJCWZvciAoaiA9IDA7IGogPCBjb2x1bW47IGorKykgewoJCQlwcmludGYoIlxuJWQgXG4iLCBtYXRyaXhbaV1bal0pOwoJCX0KCX0KCUV4aXRBbmRGcmVlKCZtYXRyaXgsIHJvdyk7CglyZXR1cm4gMDsKfQp2b2lkIEJ1aWxkTWF0cml4KGludCoqKiBtYXRyaXgsIGludCByb3csIGludCBjb2x1bW4pIHsKCWludCBpLCBqOwoJKm1hdHJpeCA9IChpbnQqKiltYWxsb2Mocm93ICogc2l6ZW9mKGludCAqKSk7Cglmb3IgKGkgPSAwOyBpIDwgcm93OyBpKyspCgkJKCptYXRyaXgpW2ldID0gKGludCopbWFsbG9jKGNvbHVtbiAqIHNpemVvZihpbnQpKTsKCXByaW50ZigiXG5QbGVhc2UgZW50ZXIgdmFsdWVzIHRvIHRoZSBtYXRyaXhcbiIpOwoJZm9yIChpID0gMDsgaSA8IHJvdzsgaSsrKSB7CgkJZm9yIChqID0gMDsgaiA8IGNvbHVtbjsgaisrKSB7CgkJCXNjYW5mKCIlZCIsICYoKCptYXRyaXgpW2ldW2pdKSk7IAoJCX0KCX0KfQp2b2lkIEV4aXRBbmRGcmVlKGludCoqKiBtYXRyaXgsIGludCByb3cpIHsKCWludCBpOwoJZm9yIChpID0gMDsgaSA8IHJvdzsgaSsrKSB7CgkJZnJlZSgoKm1hdHJpeClbaV0pOwoJCSgqbWF0cml4KVtpXSA9IE5VTEw7Cgl9CglmcmVlKCptYXRyaXgpOwoJbWF0cml4ID0gTlVMTDsKfQ==