Ultima modifica:
Sì, fa un po' schifo... ma il codice è tuo, quindi io lo tengo buono e ti propongo questo cambiamento:
Ho soltanto introdotto il ciclo for e la variabile
C++:
for (int k = 0; 2*k < colonne && 2*k < righe; k++) {
i=0;
int j=0;
while(k+j<colonne-k)
{
cout << matrice[k+i][k+j] << " ";
j++;
}
i=1+k;
j=colonne-1-k;
while(k+i<righe-k)
{
cout << matrice[k+i][k+j] << " ";
i++;
}
j--;
i--;
while(j-k>0+k)
{
cout << matrice[k+i][k+j] << " ";
j--;
}
while(i-k>0+k)
{
cout << matrice[k+i][k+j] << " ";
i--;
}
}
Ho soltanto introdotto il ciclo for e la variabile
k
, tutto il resto è esattamente quello che avevi prima. Non l'ho testato a fondo, quindi controlla bene se funziona tutto... poi puoi iniziare a migliorarlo trasformando i tuoi while in for. Il passaggio alla rovescia (i while con il decremento) lo puoi fare usando due for: uno che parte da righe-1
e uno che parte da colonne-1
. Vedrai che anche solo con questo il tuo codice migliorerà notevolmente.