Stampa di una quadrato

di Antonio-Sim il
9 risposte

Buon pomeriggio chiedo cortsemente aiuto, perchè non capisco cosa ci sia di sbagliato nel mio codice, inserente la stampa di una quadrato, con un carattere scelto mediante la scanf,grazie per l'aiuto.

 #include<stdio.h>
 //Stampa di un quadrato con il carattere desiderato
int main()
{
    int Lato;
    char carattere ;
     printf("Inserire il lato");//seleziono la misura del lato
      scanf("%d", &Lato);
       printf("Inserisci un carattere");
        scanf("%c",&carattere);//seleziono il tipo di carattere da stampare


 for(int i=1;i<=Lato;i++)//scannsiono l'altezza

 {

     for (int j=1;j<=Lato;j++)//scansiono la riga

     {

      printf("%c",carattere);//stampo la serie di  caratteri desiderati

//se inserisco printf("*");funziona correttamente

     }
     printf("\n");
 }

return 0;

}

9 Risposte

  •      printf("Inserire il lato: ");//seleziono la misura del lato
          scanf(" %d", &Lato);
           printf("Inserisci un carattere: ");
            scanf(" %c", &carattere);//seleziono il tipo di carattere da stampare
  • 06/06/2023 - Weierstrass ha scritto:


         printf("Inserire il lato: ");//seleziono la misura del lato
          scanf(" %d", &Lato);
           printf("Inserisci un carattere: ");
            scanf(" %c", &carattere);//seleziono il tipo di carattere da stampare

    Potresti spiegarti meglio, per favore, grazie 

  • Devi mettere lo spazio nella scanf che ti ignora tutti i caratteri cosiddetti whitespace (spazio, tab e newline) altrimenti quando premi invio ti considera, appunto, il newline e non il carattere che vuoi tu

    https://cplusplus.com/reference/cstdio/scanf/

  • 06/06/2023 - Weierstrass ha scritto:


    Devi mettere lo spazio nella scanf che ti ignora tutti i caratteri cosiddetti whitespace (spazio, tab e newline) altrimenti quando premi invio ti considera, appunto, il newline e non il carattere che vuoi tu

    https://cplusplus.com/reference/cstdio/scanf/

    Grazie gentilissimo, stasera provo e ti aggiorno, buona giornata. 

  • 06/06/2023 - Weierstrass ha scritto:


    Devi mettere lo spazio nella scanf che ti ignora tutti i caratteri cosiddetti whitespace (spazio, tab e newline) altrimenti quando premi invio ti considera, appunto, il newline e non il carattere che vuoi tu

    https://cplusplus.com/reference/cstdio/scanf/

    Ho seguito il tuo consiglio, ma non ha funzionato, ho modificato il codice, ora riesco a stampare il carattere digitato, ma non la sequenza 

    Ho inserito questa libreria 

    include<stdlib.h>

    #include<stdio.h>
    # include<stdlib.h>
     //Stampa di un quadrato con il carattere desiderato
    int main()
    {
        int Lato;
     char carattere[1]="" ;
         printf("Inserire il lato");//seleziono la misura del lato
          scanf("%d", &Lato);
           printf("Inserisci un carattere");
           scanf("%s" , carattere);//seleziono il tipo di carattere da stampare
             getchar();
             for (int z=0;carattere[z] !='\0';z++ ) printf("Hai inserito il carattere %s", carattere);

     for(int i=1;i<=Lato;i++)//scannsiono l'altezza

     {

         for (int j=1;j<=Lato;j++)//scansiono la riga

         {


          printf("%s",carattere);//stampo la serie di  caratteri desiderati

         }
         printf("\n");
     }

    return 0;

    }

  • 08/06/2023 - Antonio-Sim ha scritto:


    06/06/2023 - Weierstrass ha scritto:


    Devi mettere lo spazio nella scanf che ti ignora tutti i caratteri cosiddetti whitespace (spazio, tab e newline) altrimenti quando premi invio ti considera, appunto, il newline e non il carattere che vuoi tu

    https://cplusplus.com/reference/cstdio/scanf/

    Ho seguito il tuo consiglio, ma non ha funzionato, ho modificato il codice, ora riesco a stampare il carattere digitato, ma non la sequenza 

    Se non metti gli spazi, come detto, non funziona

    Questo è il tuo codice originale che non funziona

    https://onlinegdb.com/8b5y5biyu

    Questo è il tuo  codice originale con l'aggiunta dello spazio nella scanf e funziona

    https://onlinegdb.com/gk43z15nw

  • 08/06/2023 - Weierstrass ha scritto:


    08/06/2023 - Antonio-Sim ha scritto:


    06/06/2023 - Weierstrass ha scritto:


    Devi mettere lo spazio nella scanf che ti ignora tutti i caratteri cosiddetti whitespace (spazio, tab e newline) altrimenti quando premi invio ti considera, appunto, il newline e non il carattere che vuoi tu

    https://cplusplus.com/reference/cstdio/scanf/

    Ho seguito il tuo consiglio, ma non ha funzionato, ho modificato il codice, ora riesco a stampare il carattere digitato, ma non la sequenza 

    Se non metti gli spazi, come detto, non funziona

    Questo è il tuo codice originale che non funziona

    https://onlinegdb.com/8b5y5biyu

    Questo è il tuo  codice originale con l'aggiunta dello spazio nella scanf e funziona

    https://onlinegdb.com/gk43z15nw

    Grazie, verifico e ti faccio sapere 

  • Non avevi già verificato nei post precedenti?

Devi accedere o registrarti per scrivere nel forum
9 risposte