Intercettare lo spazio

di Antonio-Sim il
14 risposte

Buongiorno, vorrei intercettare lo spazio, per stamparlo come motivo di riempimento interno di una figura.

ho provato a scrivere il suo codice numerico

 if(CarattereInterno==32)  MotivoStampa=(' ');//Stampo il carattere vuoto
   else MotivoStampa=CarattereInterno;

Grazie dell'aiuto.

                                                                 //  Motivo
                                                                   //  11111
                                                                  //  2****2
                                                                  //  3****3
                                                                 //   4****4
                                                                 //    55555
 //Legenda PerInserire lo spazio digitare uno sulla tastiera
 #include <stdio.h>
int Size;
char MotivoStampa;
int CarattereInterno;
void Rettangolo(void);//Creo il prototiopo

int main()
{
    Rettangolo();//Richiamo La funzione

    return 0;
}
void Rettangolo(void)
{
printf("Inserisci La Dimensione del quadrato");
 scanf(" %d", &Size);
 printf("Inserisci il carattere di riempimento");
 scanf(" %c", &CarattereInterno);
 if(CarattereInterno==32)  MotivoStampa=(' ');//Stampo il carattere vuoto
    else MotivoStampa=CarattereInterno;
 //Creo il pòrimo ciclo che realizza le righe
  for (int i=1;i<=Size;i++)
  {
     for(int j=1;j<=Size;j++)
     {
         //Stampo il carattere desiderato riga per riga
         if(i==1 ||i==Size ||j==1 || j==Size) printf("%d", i);  //i==1Stampo il sopra del quadrato
                                                                // I=Size Stampo il sotto
                                                                //il=1  Stampo il lato sinistro del quadrato
                                                                //j==Size  Stampo il lato destro del quadrato
          else printf("%c", MotivoStampa);
     }
     printf("\n");
  }
}

14 Risposte

  • #include <stdio.h>
     
    int Size;
    char CarattereInterno = '\n';
    void Rettangolo(void);//Creo il prototipo
    
    int main()
    {
        Rettangolo();//Richiamo La funzione
    
        return 0;
    }
    
    void Rettangolo(void)
    {
     printf("Inserisci la dimensione del quadrato: "); fflush(stdout);
     scanf(" %d", &Size);
     printf("Inserisci il carattere di riempimento: "); fflush(stdout);
     while(CarattereInterno == '\n' || CarattereInterno == '\r')
           CarattereInterno = getchar();
    
      //Creo il primo ciclo che realizza le righe
      for (int i=1;i<=Size;i++)
      {
         for(int j=1;j<=Size;j++)
         {
             //Stampo il carattere desiderato riga per riga
             if(i==1 ||i==Size ||j==1 || j==Size) printf("%d", i);  //i==1Stampo il sopra del quadrato
                                                                    // I=Size Stampo il sotto
                                                                    //il=1  Stampo il lato sinistro del quadrato
                                                                    //j==Size  Stampo il lato destro del quadrato
              else printf("%c", CarattereInterno);
         }
         printf("\n");
      }
    }
  • Funziona. Qual è il problema?

  • 02/12/2023 - Alexv ha scritto:


    Funziona. Qual è il problema?

    Grazie, Funziona, volevo riempire l'interno del quadrato con un motivo, a scelta, asterisco,cancelletto, carattere vuoto, se premenvo la barra spaziatrice, etc.

    Quest'ultimo non capivo come gestire, perchè pure se intercettavo il codice ascci (13), non accadeva nulla.

    Volevo scrivere proprio questo CarattereInterno==13

  • Chiedo scusa avevo copiato il codice di Weierstrass, che funziona anche con gli spazi.

  • Io non ho capito quasi nulla di questo thread, a parte l'ovvia risposta di weierstrass

  • 02/12/2023 - oregon ha scritto:


    Io non ho capito quasi nulla di questo thread, a parte l'ovvia risposta di weierstrass

    La versione di Antonio-Sim non funziona quando inserisci lo spazio come carattere di riempimento.

  • 01/12/2023 - Weierstrass ha scritto:


    #include <stdio.h>
     
    int Size;
    char CarattereInterno = '\n';
    void Rettangolo(void);//Creo il prototipo
    
    int main()
    {
        Rettangolo();//Richiamo La funzione
    
        return 0;
    }
    
    void Rettangolo(void)
    {
     printf("Inserisci la dimensione del quadrato: "); fflush(stdout);
     scanf(" %d", &Size);
     printf("Inserisci il carattere di riempimento: "); fflush(stdout);
     while(CarattereInterno == '\n' || CarattereInterno == '\r')
           CarattereInterno = getchar();
    
      //Creo il primo ciclo che realizza le righe
      for (int i=1;i<=Size;i++)
      {
         for(int j=1;j<=Size;j++)
         {
             //Stampo il carattere desiderato riga per riga
             if(i==1 ||i==Size ||j==1 || j==Size) printf("%d", i);  //i==1Stampo il sopra del quadrato
                                                                    // I=Size Stampo il sotto
                                                                    //il=1  Stampo il lato sinistro del quadrato
                                                                    //j==Size  Stampo il lato destro del quadrato
              else printf("%c", CarattereInterno);
         }
         printf("\n");
      }
    }

    Ciao Weierstrass, ho usato il tuo codice e funziona ,vorrei capire, perchè adoperando getchar, affinche il programma di prova che scrivo ,per adoperare tale funzione,deve eseguire la dichiarazione della variabile e la sua assegnazione nel ciclo, invece nel tuo avviene tutto al difuori, come da conseitudine. Anche sul deitel ,viene tutto eseguito all'intero del ciclo.

    Il programma ,stampa il contenuto della variabile carattere, fin quando digito il punto, grazie della cortesia.

    #include <stdio.h>
    
    int main(void)
    {
       char Carattere='\n';
       printf("Inserire Una stringa");
       Carattere=getchar() ;
     
       while( Carattere  !='.' &&(Carattere!= '\n' || Carattere != '\r'))
       {
           putchar(Carattere);
       }   
    
      
    }
  • Non ho capito la domanda, scusa ma è veramente incomprensibile.

    Vuoi sapere perché la dichiarazioe della variabile sta dentro o fuori dal main?

    Cambia la visibilità della variabile ma non è importante ai fini del piccolo codice che stai provando.

    Leggi sul Deitel il capitolo sulla visibilità delle variabili nel linguaggio C.

    Ma adesso questo thread è risolto o no? 

  • 09/12/2023 - oregon ha scritto:


    Non ho capito la domanda, scusa ma è veramente incomprensibile.

    Vuoi sapere perché la dichiarazioe della variabile sta dentro o fuori dal main?

    Cambia la visibilità della variabile ma non è importante ai fini del piccolo codice che stai provando.

    Leggi sul Deitel il capitolo sulla visibilità delle variabili nel linguaggio C.

    Ma adesso questo thread è risolto o no? 

    Si li thread è risolto,ho riscontrato un problema nell'usare get char , poichè come l'ho scritto il programma non funziona.

    Affinchè venga eseguito correttamente la scrittura  Carattere=getchar ,deve avvenire nel while

    e no esternamente

    #include <stdio.h>
    
    int main(void)
    {
       char Carattere='\n';
       printf("Inserire Una stringa");
        ;
     
       while( Carattere !='.' )
       {
           Carattere=getchar();
           putchar(Carattere);
       }   
    
      
    }
  • Se il thread è risolto per altre questioni devi aprirne un altro.

    Comunque è ovvio che la getchar deve essere nel ciclo se devi fare l'input di più caratteri. Altrimenti ne accetti uno solo.

    Ma questa è una cosa ovvia, che esula dalla programmazione.

  • 10/12/2023 - oregon ha scritto:


    Se il thread è risolto per altre questioni devi aprirne un altro.

    Comunque è ovvio che la getchar deve essere nel ciclo se devi fare l'input di più caratteri. Altrimenti ne accetti uno solo.

    Ma questa è una cosa ovvia, che esula dalla programmazione.

    Grazie della risposta, ho riletto l'argomento e compreso quanto da te spiegato, Grazie di nuovo, scusa se pongo domande banali.

  • 11/12/2023 - Antonio-Sim ha scritto:


    scusa se pongo domande banali.

    Non ti devi affatto scusare ma devi seguire i consigli che ti si danno. Così sicuramente imparerai e non porrai altre domande su argomenti già affrontati.

    Non mi è chiaro se studi da solo o in un corso/scuola, con un docente o senza, se hai un background di conoscenze di altri linguaggi, se sei giovane/meno giovane. In ogni caso, se studi e rifletti opportunamente su ogni argomento studiato, puoi e devi andare avanti ed essere sempre più autonomo.

  • 11/12/2023 - oregon ha scritto:


    11/12/2023 - Antonio-Sim ha scritto:


    scusa se pongo domande banali.

    Non ti devi affatto scusare ma devi seguire i consigli che ti si danno. Così sicuramente imparerai e non porrai altre domande su argomenti già affrontati.

    Non mi è chiaro se studi da solo o in un corso/scuola, con un docente o senza, se hai un background di conoscenze di altri linguaggi, se sei giovane/meno giovane. In ogni caso, se studi e rifletti opportunamente su ogni argomento studiato, puoi e devi andare avanti ed essere sempre più autonomo.

    Ciao Oregon, non sono studente, ma un operaio metalmeccanico autodidatta cinquantenne. Sono diplomato  da perito elettronico, non ho mai lavorato nel mio campo, anche se mi è rimasto l'interesse .Ho imparato il visual basic ,programmato a livello hobbistico i pic in basic, mi sono avvicinato al c , complice arduino. Però mi sono reso conto che in questa piattaforma non c'erano esempi esaurienti di linguaggio base , anche se avrei dovuto studiare il c++, più simile allo pseudo c di arduino; Ho preferito il c per iniziare dalle fondamenta.Buona giornata

  • Ottimo, continua così

Devi accedere o registrarti per scrivere nel forum
14 risposte