PDA

Visualizza la versione completa : [C]Rombo di asterischi


21Edoardo96
11-01-2012, 18:44
Ciao,
devo fare un programma che visualizzi a schermo un rombo con delle grandezze sempre differenti a seconda di quelle che l'utente inserisce, il problema che il rombo si visualizza in modo corretto solo quando il valore inserito dall'utente uguale a 7 mentre negli altri casi la figura appare sbaglliata, come posso fare per risolvere questo problema?


//Rombo di asterischi
#include<stdio.h>
main()
{
int y, x, num;
printf("Inserire un numero per determinare la grandezza del Rombo:");
scanf("%d", &num);
for(y=0;y<num;y++)
{
for(x=0;x<num;x++)
{
if(y+x==num/2 || x-y==num/2 || y+x==num+2 || y-x==num/2)
printf("*");
else
printf(" ");
//End if
}
printf("\n");
}
system("pause");
}

Molto problabilmente l'errore si trova nell'IF ma non lo trovo.
Vi ringrazio anticipatamente per le vostre risposte :ciauz:

serioja90
15-01-2012, 17:10
Cambiando la condizione if con questa:


if (x==num/2+y || x==y-num/2 || x==num/2-y || x==num/2+(num-y-1))

Si riesce a risolvere il problema per i numeri dispari. Per quanto riguarda i numeri pari, il rombo viene tagliato a destra e in basso.

21Edoardo96
17-01-2012, 17:30
Ciao,
mi ero dimenticato di dirvi che num doveva essere un numero dispari.
Ecco il codice corretto e definitivo


//Rombo di asterischi
#include<stdio.h>
main()
{
int y, x, num;
printf("Inserire un numero per determinare la grandezza del Rombo:");
scanf("%d", &num);
for(y=0;y<num;y++)
{
for(x=0;x<num;x++)
{
if (x==num/2+y || x==y-num/2 || x==num/2-y || x==num/2+(num-y-1))
printf("X");
else
printf("-");
//End if
}
printf("\n");
}
system("pause");
}

Loading