Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    [C++] Stampa istogramma

    Ciao a tutti,
    sono nuova del forum e avrei proprio bisogno di un input...

    Devo scrivere un programma che inseriti 7 numeri, mi stampi in orizzontale e verticale un istogramma...per la stampa in orizzontale nessun problema (vi ho postato il codice), ma per quella verticale mi sto scervellando

    per stampa in verticale intendo una roba di questo genere
    es: digitati 3 e 2 ottengo:

    *
    * *
    * *
    3 2

    qualcuno mi puo' aiutare...sono una principiante sul C++ e a lezione siamo arrivati agli array..ma non riesco a trovare la soluzione

    Grazie mille

    #include <iostream>
    #include <iomanip>

    using namespace std;



    int main ()

    {
    //dichiarazione dell'array

    const int ARRAYSIZE=7;

    int numero[ARRAYSIZE];

    //indici per array e istogramma

    int i;

    int j;

    //dichiarazione variabili

    int num;


    //richiesta dei numeri

    cout<<"inserire 7 numeri"<<endl<<endl;

    //riempio l'array

    for (i=0; i<ARRAYSIZE; i++)

    {cin>>num;

    numero[i]=num;
    }

    cout<<endl;




    //stampa istogrammi - orizzontale

    cout<<"ISTOGRAMMA IN STAMPA ORIZZONTALE"<<endl<<endl;


    for (i=0; i<ARRAYSIZE; i++)

    {
    cout<<setw(2)<<numero[i]<<setw(4);

    //creo l'istogramma

    for (j=0; j<numero[i]; j++)

    cout<<'*';

    cout<<endl;
    }


    return 0;

    }

  2. #2
    Utente di HTML.it L'avatar di byaur
    Registrato dal
    Aug 2004
    Messaggi
    1,061
    potresti indentare il codice e usare i tag (c'è il bottoncino sopra il box di inserimento) perchè cosi il codice è un po illegibile...!!!


    Chi di noi non vorrebbe
    sollevare il velo sotto cui sta nascosto il
    futuro...
    David Hilbert

  3. #3
    eccolo...scusa..


    codice:
    #include <iostream>
    #include <iomanip>
    
    using namespace std;
    
    
    
    int main ()
    
    {
     //dichiarazione dell'array
    
     const int ARRAYSIZE=7;
    
     int numero[ARRAYSIZE];
    
     //indici per array e istogramma
    
     int i;
    
     int j;
    
     //dichiarazione variabili
    
     int num;
    
    
     //richiesta dei numeri
    
     cout<<"inserire 7 numeri"<<endl<<endl;
    
     //riempio l'array
    
     for (i=0; i<ARRAYSIZE; i++)
    
     {cin>>num;
    
     numero[i]=num;
     }
    
     cout<<endl;
    
    
    
    
     //stampa istogrammi - orizzontale
    
     cout<<"ISTOGRAMMA IN STAMPA ORIZZONTALE"<<endl<<endl;
    
    
     for (i=0; i<ARRAYSIZE; i++)
    
     {
     cout<<setw(2)<<numero[i]<<setw(4);
    
     //creo l'istogramma
    
     for (j=0; j<numero[i]; j++)
    
     cout<<'*';
    
     cout<<endl;
     }
    
    return 0;
    
    }

  4. #4
    Utente di HTML.it L'avatar di byaur
    Registrato dal
    Aug 2004
    Messaggi
    1,061
    yes!!!!
    Chi di noi non vorrebbe
    sollevare il velo sotto cui sta nascosto il
    futuro...
    David Hilbert

  5. #5
    Utente di HTML.it L'avatar di byaur
    Registrato dal
    Aug 2004
    Messaggi
    1,061
    domanda.
    i 7 numeri che tu inserisci hanno una dimensione fissa. cioè vanno da 1 a 10, da 1 a20...????
    Chi di noi non vorrebbe
    sollevare il velo sotto cui sta nascosto il
    futuro...
    David Hilbert

  6. #6
    no, l'unica condizione e' che siano interi positivi ma non hanno una dimensione fissa..

  7. #7
    Utente di HTML.it L'avatar di byaur
    Registrato dal
    Aug 2004
    Messaggi
    1,061
    logicamente, visto che uso il C(o Java), e il C++ lo conosco pochino, ti potrei dire, considerando il fatto che il numero di asterischi può essere dinamico(cioè puoi inserire 7 numeri tipo: 1, 5,1000000,1230 etc... se non ho capito male) di farti una matrice[(MAX +1),7] dove 7 è il numero di COLONNE(e di numeri che devi immettere) e MAX + 1(RIGHE) con MAX il massimo numero immesso
    (ricerca del massimo è una semplice funzione lineare)

    dopodiche:
    uso un codice C che mi è + familiare cmq lo puoi trasportare in C++
    codice:
    #define MAXIMM 7    //il numero massimo di numeri da immettere
    
    int numeri[MAXIMM]... /*qui inserisci i numeri immessi è scritto male ma si capisce*/
    int max = ...    /*qui ci metti il massimo tra i numeri inseriti prima nel 
    vettore lo trovi utilizzando una banale funzione di ricerca del massimo*/
    
    int matrice[max+1][MAXIMM];
    
    int i, j, count;    //indici
    /*inserisco nell'ultima riga della matrice i numeri immessi*/
    for(j = 0; j< MAXIMM;j++){
      matrice[max][i] = numeri[i];
    }
    /*per ogni colonna inserisco partendo da indice di riga i = (max -1) gli asterischi*/
    for(j = 0; j<MAXIMM;j++){
         /*contatore di asterischi che devo memorizzare
         in questa var di appoggio perchè verra decrementato nel ciclo sotto*/
         count =  matrice[max][j];   
         i = (max - 1);                    //indice di riga che vedo dal basso all'alto
         while((count > 0) && (i >= 0)){
           matrice[i][j] = '*';
           i--;count--;
         }
    }
    /*stampa*/
    for(i = 0; i<(max+1);i++){
      for(j = 0; j<MAXIMM;i++){
           if(i = max)  //stampo i numeri finali
               printf("%d ", matrice[i][j]);
           else    //stampo il char
              printf("%c ", matrice[i][j]);
       }
    }

    scusami se è in C... ma la logica dovrebbe funzionare...

    ciauz

    Chi di noi non vorrebbe
    sollevare il velo sotto cui sta nascosto il
    futuro...
    David Hilbert

  8. #8
    azz..e' in C.. non so nulla di quel linguaggio...pero' posso provare a interpretarlo..


    pero' c'è una cosa che non capisco:

    int numeri[MAXIMM]... /*qui inserisci i numeri immessi è scritto male ma si capisce*/

    cosa intendi per inserisci i numeri? non ho capito...io nella prima parte di codice che ti ho postato ho gia' un array per inserire i numeri...o e' un'altra cosa?

    Thx

  9. #9
    Utente di HTML.it L'avatar di byaur
    Registrato dal
    Aug 2004
    Messaggi
    1,061
    si è la stessa cosa..
    scusa...
    Chi di noi non vorrebbe
    sollevare il velo sotto cui sta nascosto il
    futuro...
    David Hilbert

  10. #10
    ehi che scusa...grazie invece!!!! poi lo provo....devo solo interpretare la sintassi printf %c %d eheheh....

    grazie ancora...al max se c'è qualcosa che non va mi rifaccio viva!!!


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 © 2025 vBulletin Solutions, Inc. All rights reserved.