[C++] problema tabulazione

di il
6 risposte

[C++] problema tabulazione

Buongiorno a tutti.
Dovrei creare un piccolo programma in c++ che visualizzi questo:
N 10*n 100*n 1000+n
1 10 100 1000
2 20 200 2000
3 30 300 3000
4 40 400 4000
5 50 500 5000
solo per i primi 5 numeri e utilizzando cicli di while e escape di tabulazione \t.
Ora io sono riuscito tranquillamente a creare i cicli e il resto ma ho delle difficoltà a stampare l'output cosi come lo richiede il problema.
il codice che ho scritto è questo:
 #include <iostream>
using namespace std;

int main()
{
    int cont=0;
    cout<<"N\t10*n\t100*n\t1000*n\t"<<endl;
    while (cont<=5)
    {
          cout<<cont;
          cout<<"\t"<<cont*10<<endl;
          cont++;
    }
    cont=0;
    while (cont<=5)
    {
          cout<<"\t"<<"\t"<<cont*100<<endl;
          cont++;
    }
    cont=0;
    while (cont<=5)
    {
          cout<<"\t"<<"\t"<<"\t"<<cont*1000<<endl;
          cont++;
    }
    system ("pause");
    return 0;
}
Praticamente in output ottengo una cosa di questo genere:
N 10*n 100*n 1000*n
0 0
1 10
2 20
3 30
4 40
5 50
0
100
200
300
400
500
0
1000
2000
3000
4000
5000

Mi potete aiutare a fare in modo che l'output sia come quello richiesto e non come viene a me???

6 Risposte

  • Re: [C++] problema tabulazione

    Guarda qua...
    (scusa ma non sono abituato a usare cout e cin e mi viene difficile ragionare con quelli XD per cui ho usato printf)
    #include <iostream>
    
    int cont=0;
    
    main()
    {
          printf("N\tn*10\tn*100\tn*1000\n");
          while (cont<=5){   
                         printf("%d\t%d\t%d\t%d\n",cont,cont*10,cont*100,cont*1000);
                         cont++;
                         }
          system("PAUSE");
    }
    
    Ecco questo invece è in c++
    (funzionano perfettamente tutti e due )
    #include <iostream>
    
    using namespace std;
    
    int cont=0;
    
    main()
    {
          cout<<"N\tn*10\tn*100\tn*1000"<<endl;
          while (cont<=5){      
                         cout<<""<<cont<<"\t"<<cont*10<<"\t"<<cont*100<<"\t"<<cont*1000<<endl;
                         cont++;
                         }
          system("PAUSE");
    }
    
    
  • Re: [C++] problema tabulazione

    Grazie mille!!!! anche io avevo provato con un solo while e un solo cout ma mi dava errore proprio sul cout e non riuscivo a capire il motivo.
    Ora forse chiedo troppo ma non è che mi aiuteresti in quest'altro esercizio perchè non so proprio da dove partire:
    letta da input la misura di un lato di un quadrato, deve essere visualizzata in output un quadrato formato da asterischi il cui lato è uguale al numero digitati in input.
    Se ci riesci mi fai un favore perchè non so proprio come fare per stampare gli asterischi in modo che formino un quadrato.
    il numero letto in input deve essere compreso tra 1 e 20.
  • Re: [C++] problema tabulazione

    Adesso ci penso un po'.. per il momento comunque sono riuscito a fare una riga di asterischi lunga quanto il lato del quadrato
    guarda qua:
    #include <iostream>
    
    using namespace std;
    
    int lato,orizzontale,verticale;
    
    main()
    {
     
         cout<<"Inserisci il lato del quadrato"<<endl;
         cin>>lato;
         orizzontale=0;
         while(orizzontale<lato) {
                                cout<<"*";
                                orizzontale++;
                                }
         cout<<""<<endl;
         system("PAUSE");
          
    }
    
  • Re: [C++] problema tabulazione

    Allora per il momento ho scritto questo:
    #include <iostream>
    
    using namespace std;
    
    int lato,orizzontale,verticale;
    
    main()
    {
     
     cout<<"Inserisci il lato del quadrato"<<endl;
     cin>>lato;
     orizzontale=0;
     for(verticale=0;verticale<lato;verticale++) {
                                                 while(orizzontale<lato) {
                                                 cout<<"*";
                                                 orizzontale++;
                                                                         }
                                                 cout<<""<<endl;
                                                 orizzontale=0;
                                                 while(orizzontale<lato) {
                                                                         cout<<"*";
                                                                         orizzontale++;
                                                                         }
                                                 }
     system("PAUSE");
          
    }
    
    funziona ma con un piccolo errore stampa una riga di asterischi in piu'...
    Se trovi l'errore prima di me avvisami XD



    EDIT:
    inizializzando la variabile "verticale" a 1 anzichè a 0 si risolve il problema.. perchè il ciclo for viene eseguito una prima volta con verticale=1 e stampa su schermo una riga di asterischi,
    poi aumenta il valore della variabile verticale a 2 (la condizione è ancora verificata quindi il ciclo viene eseguito una seconda volta, e così via fino a quando non si raggiunge il valore del lato inserito precedentemente.

    ecco il codice sorgente funzionante:
    #include <iostream>
    
    using namespace std;
    
    int lato,orizzontale,verticale;
    
    main()
    {
     
     cout<<"Inserisci il lato del quadrato"<<endl;
     cin>>lato;
     orizzontale=0;
     for(verticale=1;verticale<lato;verticale++) {
                                                 while(orizzontale<lato) {
                                                 cout<<"*";
                                                 orizzontale++;
                                                                         }
                                                 cout<<""<<endl;
                                                 orizzontale=0;
                                                 while(orizzontale<lato) {
                                                                         cout<<"*";
                                                                         orizzontale++;
                                                                         }
                                                 }
     cout<<""<<endl;
     system("PAUSE");
          
    }
    
    P.S.
    Deve essere necessariamente compreso tra 0 e 20 il lato?? XD come l'ho fatto io puo' essere qualsiasi numero...


    Comunque questo funziona perfettamente e il lato è compreso tra 0 e 20:
    #include <iostream>
    
    using namespace std;
    
    int lato,orizzontale,verticale;
    
    main()
    {
    
    cout<<"Inserisci il lato del quadrato"<<endl;
    cin>>lato;
    orizzontale=0;
    if(lato<=20) {
                  for(verticale=1;verticale<lato;verticale++) {
                                                 while(orizzontale<lato) {
                                                 cout<<"*";
                                                 orizzontale++;
                                                                         }
                                                 cout<<""<<endl;
                                                 orizzontale=0;
                                                 while(orizzontale<lato) {
                                                                         cout<<"*";
                                                                         orizzontale++;
                                                                         }
                                                              }
                }
    cout<<""<<endl;
    system("PAUSE");
         
    }
    
  • Re: [C++] problema tabulazione

    Grazie mille e scusami per il ritardo dei ringraziamenti ma avevo problemi nell'apertura della pagina...
  • Re: [C++] problema tabulazione

    Nessun problema
Devi accedere o registrarti per scrivere nel forum
6 risposte