Codice PHP:
#include <stdio.h>
#include <stdlib.h>
void clear(int* mat, int n, int m){
int i,j;
for(i=0;i<n;i++) {
for(j=0;j<m;j++) {
mat[j] = 0;
}
mat+=m;
}
}
void print(int* mat, int n, int m) {
int i,j;
for(i=0;i<n;i++) {
for(j=0;j<m;j++) {
printf("%d | ", mat[j]);
}
mat+=m;
printf("\n");
}
}
int check_param(int n, int m) {
if (n <= 0 || m <= 0)
return 0;
else
return 1;
}
int check_move(int n, int m, int pos_i, int pos_j, int move_i, int move_j) {
int final_pos_i = pos_i+move_i, final_pos_j = pos_j+move_j;
if (final_pos_i >= n || final_pos_j >= m) return 0;
else return 1;
}
int main() {
int n,m;
char** coord = NULL;
int size = 0;
printf("N: ");
scanf("%d", &n);
printf("M: ");
scanf("%d", &m);
printf("\n");
int mat[n][m];
int* punt = mat[0] ;
int pos_i = 0;
int pos_j = 0;
char str_coord[32];
snprintf(str_coord, 32, "(%d,%d) - Iniziale", 0,0);
size++;
coord = (char**) realloc(coord, size);
coord[size-1] = (char*) malloc(32);
snprintf(coord[size-1], 32, "%s", str_coord);
clear(mat[0],n,m);
char scelta;
do {
printf("1. Stampa matrice\n");
printf("2. Posizione attuale puntatore\n");
printf("3. Sposta\n");
printf("4. Stampa posizioni puntatore\n");
printf("q. Esci\n");
scanf("%s", &scelta);
if (scelta == '1') {
printf("\n\n");
print(mat[0],n,m);
printf("\n\n");
}
if (scelta == '2') {
printf("\n\n");
printf("(i,j) = (%d,%d)\n", pos_i, pos_j);
printf("\n\n");
}
if (scelta == '3') {
int move_i, move_j;
printf("\n\n");
printf("Numeri negativi: spostamenti a sinistra (indice i) o in alto (indice j)\n");
printf("Spostamento riga: ");
scanf("%d", &move_i);
printf("Spostamenti colonna: ");
scanf("%d", &move_j);
if (check_move(n,m,pos_i,pos_j,move_i,move_j)) {
pos_i += move_i;
pos_j += move_j;
punt = mat[pos_i];
punt[pos_j] +=1;
char str_coord[32];
snprintf(str_coord, 32, "(%d,%d)", pos_i,pos_j);
size++;
coord = (char**) realloc(coord, size);
coord[size-1] = (char*) malloc(32);
snprintf(coord[size-1], 32, "%s", str_coord);
}
else printf("\nLo spostamento va oltre i limiti della matrice");
printf("\n\n");
}
if (scelta == '4') {
printf("\n\n");
int i;
for(i=0;i<size;i++)
printf("%s\n", coord[i]);
printf("\n\n");
}
} while (scelta != 'q');
int i;
for (i = 0;i< size;i++)
free(coord[i]);
free(coord);
}