29/01/2019, 16:09
29/01/2019, 17:25
29/01/2019, 17:34
29/01/2019, 17:49
29/01/2019, 18:13
axpgn ha scritto:La seconda è "sì" (così almeno mi pare di ricordare )
#include<stdio.h>
#include<stdlib.h>
#define N 99
int main(void)
{
int quadrato[N][N]={0};
int n=0;
int max=0;
int ultimo_numero=0;
int numero_corrente=1;
int i=0;
int j=0;
printf("Questo programma genera un quadrato magico di dimensione specificata dall'utente\n");
printf("La sua dimensione deve essere un numero dispari compreso tra 1 e %d.", N);
do{
printf("Inserire la dimensione del desiderata:\t");
scanf("%d", &n);
if(n%2==0||n<=0)
{
printf("\n\t******************\n\t*NUMERO INVALIDO!*\n\t******************\n\n");
};
}while(n%2==0||n<=0);
max=n-1;
ultimo_numero=n*n;
i=0;
j=max/2;
quadrato[i][j]=numero_corrente;
while(numero_corrente<=ultimo_numero)
{
numero_corrente=numero_corrente+1;
if((i-1>=0)&&(j+1<=max)&&(quadrato[i-1][j+1]==0))
{
i=i-1;
j=j+1;
quadrato[i][j]=numero_corrente;
}else if((i-1>=0)&&(j+1<=max)&&(quadrato[i-1][j+1]!=0)&&(quadrato[i+1][j]==0)&&(i+1<=max))
{
i=i+1;
quadrato[i][j]=numero_corrente;
}else if((i-1<0)&&(j+1<=max)&&(quadrato[max][j+1]!=0))
{
i=max;
j=j+1;
quadrato[i][j]=numero_corrente;
}else if((i-1)<0&&(j+1>max)&&(quadrato[i+1][j]==0))
{
i=i+1;
quadrato[i][j]=numero_corrente;
}else if((i-1>=0)&&(j+1>max)&&(quadrato[i-1][0]==0))
{
i=i-1;
j=0;
quadrato[i][j]=numero_corrente;
}else if((i-1<0)&&(j+1<=max)&&(quadrato[max][j+1]==0))
{
i=max;
j=j+1;
quadrato[i][j]=numero_corrente;
}else
{
;
};
};
printf("\n\n\tQuadrato magico:\n\n");
for(i=0; i<=max; i++)
{
for(j=0; j<=max; j++)
{
printf("%.3d ", quadrato[i][j]);
if(j==max)
{
printf("\n");
};
};
};
exit(0);
}
Skuola.net News è una testata giornalistica iscritta al Registro degli Operatori della Comunicazione.
Registrazione: n° 20792 del 23/12/2010.
©2000—
Skuola Network s.r.l. Tutti i diritti riservati. — P.I. 10404470014.
Powered by phpBB © phpBB Group - Privacy policy - Cookie privacy
phpBB Mobile / SEO by Artodia.