Stampare gli elementi di una matrice NxN secondo un ordinamento a spirale, partendo dalla cornice più esterna e procedendo verso l'interno.
Ho cercato in rete ed ho visto diversi video ed esercizi già fatti ma purtroppo non riesco ancora a capire, spero che qualcuno di voi possa aiutarmi.
Vi posto il mio codice. Ho provato a risolvere l'esercizio con 4 cicli for all'interno di una condizione while.
- Codice:
#include<stdio.h>
#include<stdlib.h>
int main()
{
const int NMAX=3;
int matrice[NMAX][NMAX];
int i, j;
int l, n, m, p;
l=0, m=0;
p=NMAX; n=NMAX;
for (i=0; i<NMAX; i++)
{
for (j=0; j<NMAX; j++)
{
scanf("%d", &matrice[i][j]);
}
}
for (i=0; i<NMAX; i++)
{
for (j=0; j<NMAX; j++)
{
printf ("%d\t", matrice[i][j]);
}
printf("\n");
}
while(n>l && p>m)
{
for (i=m; i<=p; i++) /*prima riga*/
printf("%d", matrice[l][i]);
l++;
for (i=l; l<=n;i++) /*ultima colonna di destra*/
printf("%d", matrice[i][p]);
p--;
for (i=p; i>=m; i-- ) /*ultima riga in basso*/
printf("%d%d", matrice[n][i]);
n--;
for (i=n; i>=l; i--)/*prima colonna a sinistra*/
printf ("%d%d", matrice[i][m]);
m++;
}
}