Visualizzazione dei risultati da 1 a 3 su 3

Discussione: [C]Rombo di asterischi

  1. #1

    [C]Rombo di asterischi

    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?
    codice:
    //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
    Your time is limited, so don't waste it living someone else's life. Stay hungry, stay foolish. (Steve Jobs)

  2. #2
    Cambiando la condizione if con questa:

    codice:
    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.
    Materiale Programmazione - code-power.blogspot.com

  3. #3
    Ciao,
    mi ero dimenticato di dirvi che num doveva essere un numero dispari.
    Ecco il codice corretto e definitivo
    codice:
    //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");
    }
    Your time is limited, so don't waste it living someone else's life. Stay hungry, stay foolish. (Steve Jobs)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.