Stampare il quadrato con un carattere personalizzato (C)

di il
4 risposte

Stampare il quadrato con un carattere personalizzato (C)

Ciao a tutti!

Vorrei chiedervi un consiglio..
Ovvero, questo di seguito è un programma che prende in input un carattere dall'utente e un numero. Il programma creerà un quadrato di lato pari al numero inserito e con il carattere che avrà inserito l'utente in precedenza.

Solo che non mi stampa nulla e credo che il problema sia nella definizione di funzione nel punto: printf("%s", c);
Solo che non capisco quale sia il problema..

Avete idee?

Ecco il codice:
// prototipo di funzione
int square(int x, char c);

// programma principale
int main (void)
{

    int side;
    char fillChar;

    printf("Inserire il carattere da voler utilizzare: ");
    scanf("%s", &fillChar);

    printf("Inserire il lato del quadrato: ");
    scanf("%d", &side);

    square(side, fillChar);
}

// definizione di funzione

int square(int x, char c)
{
    int y;
    int counter;

    y = x;
    counter = x;

    while (y >= 1)
    {
        for (counter; counter >= 1; counter--)
        {

            printf("%s", c);
        }
        printf("\n");
        counter = x;
        y--;
    }

}

4 Risposte

  • Re: Stampare il quadrato con un carattere personalizzato (C)

    Se dichiari: char fillChar;
    allora su scanf per assegnare e su printf per stampare usa "%c", "%s" serve per le stringhe.
    Non ho capito perché hai fatto i while all'indietro.
    Una funzione deve uscire con return.
    #include <stdio.h>
    
    // prototipo di funzione
    int square(int x, char c);
    
    // programma principale
    int main (void)
    {
        int side;
        char fillChar;
    
        printf("Inserire il carattere da voler utilizzare: ");
        scanf("%c", &fillChar);
    
        printf("Inserire il lato del quadrato: ");
        scanf("%d", &side);
    
        square(side, fillChar);
    }
    // definizione di funzione
    
    int square(int x, char c)
    {
        int rig = 0;
        int col = 0;
        while (rig<x)
        {   
            col=0;
            while (col<x)
            {
                if (rig==0 | rig==x-1)
                {
                    printf("%c", c); // la prima e l'ultima riga
                }
                else
                {
                    if (col==0 | col==x-1)
                    {
                        printf("%c", c); // la prima e l'ultima colonna
                    }
                    else
                    {
                        printf("%c", 32); // spazi tra prima e ultima colonna
                    }
                }
                col++;
            }
            printf("\n");
            rig++;
        }
        return 0;
    }
    
  • Re: Stampare il quadrato con un carattere personalizzato (C)

    Ok! Ora funziona! Ho cambiato solo lo specificatore di formato! Grazie mille!

    Ma non capisco una cosa.. Il mio codice ha qualche cosa che non va? Nel senso, tu hai utilizzato un if else, un if nidificato, il tutto dentro un while..
    Non è appropriato utilizzare il while all'indietro? Nello scrivere, pensandoci, mi è venuto naturale farlo così.
  • Re: Stampare il quadrato con un carattere personalizzato (C)

    alext ha scritto:


    Ma non capisco una cosa.. Il mio codice ha qualche cosa che non va? Nel senso, tu hai utilizzato un if else, un if nidificato, il tutto dentro un while..
    Non è appropriato utilizzare il while all'indietro? Nello scrivere, pensandoci, mi è venuto naturale farlo così.
    Il tuo codice va benissimo, scusa se ti ho confuso, solitamente si cerca di usare le variabili che ci sono senza assegnarne di nuove inutilmente, ma quello che sembra più lineare per me, non è detto che sia più lineare per te.
    Gli if aggiuntivi che ho messo servono per disegnare un quadrato, come richiesto nella domanda, senza gli if si disegna una superficie quadrata.
    Ma anche questa è una mia interpretazione...

    il tuo codice funzionante:
    
    #include <stdio.h>
    
    // prototipo di funzione
    int square(int x, char c);
    
    // programma principale
    int main (void)
    {
    
        int side;
        char fillChar;
    
        printf("Inserire il carattere da voler utilizzare: ");
        scanf("%c", &fillChar);
    
        printf("Inserire il lato del quadrato: ");
        scanf("%d", &side);
    
        square(side, fillChar);
    }
    
    // definizione di funzione
    
    int square(int x, char c)
    {
        int y;
        int counter;
    
        y = x;
        counter = x;
    
        while (y >= 1)
        {
            for (counter; counter >= 1; counter--)
            {
    
                printf("%c", c);
            }
            printf("\n");
            counter = x;
            y--;
        }
    return 0;
    }
    
  • Re: Stampare il quadrato con un carattere personalizzato (C)

    Ho capito! Diverse interpretazioni insomma!

    Ad ogni modo ti ringrazio, alla fine era un errore stupido!

    Grazie ancora!
Devi accedere o registrarti per scrivere nel forum
4 risposte