Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    1

    C++: Aiuto con piccolo programma sui vettori

    Salve a tutti ragazzi!

    Sono nuovo del forum e da poco avvicinato al fantastico mondo della programmazione grazie alla vostra guida sul C++

    Come compilatore utilizzo il comodo Dev-C++ e sto cercando di scrivere un semplice programmino che mi permetta:

    -l'inserimento da tastiera di due vettori v1 e v2.
    -la stampa a video dei lettori v1 e v2.
    -una domanda di controllo che chieda se voglio copiare il vettore v2 nel vettore v1.
    -l'uscita in caso di risposta negativa e la stampa a video del nuovo vettore v1 in caso di risposta affermativa.

    Il programma viene compilato senza apparenti errori, ma dopo l'inserimento dei 2 vettori da tastiera non capisco perchè 1)non me li stampa a video e 2)perchè il ciclo do-while che ho utilizzato per la domanda non termini ma si riproduca all'infinito.

    Sono una schiappa, ma mi piacerebbe imparare.

    Di seguito il piccolo programma che ho compilato:

    codice:
    * Programma che legge un vettore v1 da tastiera 
    * e ne effettua la copia in un altro vettore v2 
    * stampando quest'ultimo a video 
    
    #include <cstdlib>
    #include <iostream>
    
    #define MAX 10
    
    using namespace std;
    
    typedef int vettore[MAX];
    
    void leggiVet(vettore x,int& y);
    void stampaVet(vettore x, int& y);
    void copyVet(vettore x, int& r1, vettore z, int& r2);
    
    int main()
    {
        vettore v1, v2;
        int riemp1, riemp2;
        char s, n, risposta;
        
        cout<<"Inserire il riempimento del primo vettore: ";
        cin>>riemp1;
        leggiVet(v1, riemp1);
        cout<<"\nInserre il riempimento del secondo vettore: ";
        cin>>riemp2;
        leggiVet(v2, riemp2);
        system("CLS");
        cout<<"\nIl primo vettore creato e' cosi' composto: [ ";
        stampaVet(v1, riemp1);
        cout<<"\nIl secondo vettore creato e' cosi' composto: [ ";
        stampaVet(v2, riemp2);
        do{
                      system("CLS");
                      cout<<"\nSi desidera copiare il secondo vettore nel primo?s/n"<<endl;
                      cin>>risposta;
                      }while(risposta!='s' || risposta!='n');
        if(risposta=='s'){
                          copyVet(v1, riemp1, v2, riemp2);
                          stampaVet(v1, riemp1);
                          }
                          
    }
    
    void leggiVet(vettore x, int& y)
    {
         cout<<"Inserire i valori di questo vettore:\n";
         for(int i=0; i<y; i++){
                 cin>>x[i];
                 }
         }
         
    void stampaVet(vettore x, int& y)
    {
         for(int i=0; i<y; i++){
                 cout<<x[i]<<" ";
                 }
         cout<<"]\n";
         }
         
    void copyVet(vettore x, int& r1, vettore z, int& r2)
    {
         r1=r2;
         for(int i=0; i<r1; i++){
                 x[i]=z[i];
                 }
         }

  2. #2
    Codice PHP:
    #include <cstdlib> 
    #include <iostream>  

    #define MAX 10  

    using namespace std;  

    typedef int vettore[MAX];  

    void leggiVet(vettore x,inty); 
    void stampaVet(vettore xinty); 
    void copyVet(vettore xintr1vettore zintr2);  

    int main() { 
      
    vettore v1v2
      
    int riemp1riemp2
      
    char snrisposta;  #1

      
    cout<<"Inserire il riempimento del primo vettore: "
      
    cin>>riemp1
      
    leggiVet(v1riemp1); 

      
    cout<<"\nInserre il riempimento del secondo vettore: "
      
    cin>>riemp2leggiVet(v2riemp2); 

      
    system("CLS"); #2

      
    cout<<"\nIl primo vettore creato e' cosi' composto: [ "#5
      
    stampaVet(v1riemp1); 

      
    cout<<"\nIl secondo vettore creato e' cosi' composto: [ "#5
      
    stampaVet(v2riemp2); 

      do{ 
        
    system("CLS"); #3
        
    cout<<"\nSi desidera copiare il secondo vettore nel primo?s/n"<<endl
        
    cin>>risposta
      } while(
    risposta!='s' || risposta!='n'); #4

      
    if(risposta=='s'){ 
        
    copyVet(v1riemp1v2riemp2); 
        
    stampaVet(v1riemp1); 
      }  
    }  

    void leggiVet(vettore xinty) { 
      
    cout<<"Inserire i valori di questo vettore:\n"
      for(
    int i=0i<yi++){ 
        
    cin>>x[i]; 
      } 
    }  

    void stampaVet(vettore xinty) { 
      
    #5 -> cout << "[ ";
      
    for(int i=0i<yi++){ 
        
    cout<<x[i]<<" "
      } 
    cout<<"]\n"
    }  

    void copyVet(vettore xintr1vettore zintr2) { 
      
    r1=r2
      for(
    int i=0;   i<r1i++){ 
        
    x[i]=z[i]; 
      } 


    #1 - s e n sono variabili inutilizzate, producono un warning
    #2 - la chiamata di sistema "cls" funziona solo in windows, se in futuro vorrai creare codice portabile non usarla
    #3 - questo system("cls") viene subito dopo la stampa dei vettori, pulendo lo schermo non ti fa vedere il prodotto di stampaVet, che avviene correttamente. Elimina questa riga e vedi che puoi vedere la stampa
    #4 - testiamo questa espressione. Supponiamo risposta='s': risposta!='s' produce false; risposta!='n' produce true -> false or true = true
    Stesso discorso per risposta='n'.
    Se risposta=x con x != da 's' e x != 'n' allora ottieni true or true = true
    Entri dunque in loop.
    A te interessa rimanere nel ciclo quando la risposta non è ne 's' ne 'n', dunque quando ris!='s' && ris!='n'
    #5 - Secondo me è più corretto se stampi "[" all'interno della funzione che stampa il vettore.
    Se consideri ad esempio

    Codice PHP:
      if(risposta=='s'){ 
        
    copyVet(v1riemp1v2riemp2); 
        
    stampaVet(v1riemp1); 
      } 
    noti che ottieni "num1 num2 ... ]" senza parentesi iniziale


    Un'ultimo consiglio, Dev-C++ è abbastanza datato e non ti permette di usare alcune funzionalità che ti semplificano la vita. Prova Codeblocks.

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