Problema esercizio c++

di il
10 risposte

Problema esercizio c++

Ciao a tutti! sono nuovo del forum spero che qualcuno mi possa dare una mano con questo esercizio.
il testo dice: programma che legge da tastiera una sequenza di 50 numeri; stampa a video la sequenza;calcola e stampa il massimo , il minimo, e la media della sequenza;verifica che la somma degli elementi in posizione pari è uguale alla somma degli elementi in posizione dispari,
in caso affermativo stampa "condizione soddisfatta" , in caso negativo " condizione non soddisfatta.
devono essere usati i seguenti sottoprogrammi:
void leggiSequenza ( int sequenza [N])
void stampaSequenza( int sequenza [N] )
int massimo // /// //
int minimo // /// //
float media// /// ///
int sommaElementiPari
int sommaElementiDispari

#include <iostream>
 using namespace std;
 int const N = 50;
 
 void leggiSequenza ( int sequenza [N] ) {
      
      cout << "immetti sequenza valori" << endl;
      
      int i;
      
      for(i=0; i<N; i++) {
               
               cin >> sequenza [N];
               }
      return;
      }
   void stampaSequenza ( int sequenza[N] ) {
        int i;
        
        for(i=0; i<N; i++) {
                 
        cout << sequenza[N] << "\t" ;
        } 
        return;
        }
        
   int massimo (int sequenza [N] ) {
   
   int X= sequenza[0];
   int i=0;
   
   while(i<N) {
              
   if (X<sequenza[i]) {
                      
   X=sequenza[i];
   i++;
}
}
cout << "il massimo della sequenza e'" << X << endl;
return X;
}

    int minimo (int sequenza [N]) {
        
    int X= sequenza[0];
    int i=0;
    
    while(i<N) {
               
    if(X>sequenza[i]) {
    
    X=sequenza[i];
    i++;
}
}
cout << "il minimo della sequenza e'" << X << endl;
return X;
}

float media ( int sequenza [N] ) {
      
      int i, somma;
      float media;
      
   for(i=0; i<N; i++) {
            
   somma = somma + sequenza [N];
}
media = somma/N;

cout << "la media dei numeri" << media << endl;
return media; 
}

int sommaElementiPari (int sequenza [N] ) {
    
    int i, sommaP;
    for (i=0; i<N; i++) {
        
        if(i%2==0) {
        sommaP= sommaP+ sequenza[i];
        }
        } 
        cout << "somma numeri pari" << sommaP << endl;
        return sommaP;
        }
        
int sommaElementiDispari (sequenza [N]) {
    
    int i, sommaD;
    for (i=0; i<N; i++) {
        
        if(i%2!=0) {
        sommaD=sommaD+ sequenza[i];
        }
        } 
        cout << "somma numeri dispari" << sommaD << endl;
        return sommaD;
        }
int main () {
    int sequenza [N];
   int sommaP, sommaD;
float media;
      
    
    if( sommaElementiPari (int sequenza [N] )== sommaElementiDispari (sequenza [N])) {
           
    cout << " condizione soddisfatta " << endl;
} else {
cout << " condizione non soddisfatta " << endl;
}

system("pause");
}
ora il mio problema è nell if del main mi da l errore seguente scritto due volte
expected primary-expression before "int"
in patrica il problema è sempre sull if che non mi fa andare a buon fine la compilazione

10 Risposte

  • Re: Problema esercizio c++

    Metti per favore i code tags così possiamo comprendere il tuo codice?
  • Re: Problema esercizio c++

    skynet ha scritto:


    Metti per favore i code tags così possiamo comprendere il tuo codice?
    scusa la mia ignoranza ma cosa sono?
  • Re: Problema esercizio c++

    Modifica il tuo primo messaggio e vedi cosa è cambiato.
  • Re: Problema esercizio c++

    skynet ha scritto:


    Modifica il tuo primo messaggio e vedi cosa è cambiato.
    ora ho capito!! grazie! comunque ho trovato altri errori e li ho corretti ora il programma si compila ma quando lo vado ad eseguire mi fa solo inserire la sequenza di numeri che poi mi stampa a video dopodiché si blocca se puoi darmi una mano a capire perché ti faccio vedere
  • Re: Problema esercizio c++

    Cosa c'è di errato quì per esempio
    for(i=0; i<N; i++) {
                   cin >> sequenza [N];
    }
  • Re: Problema esercizio c++

    skynet ha scritto:


    Cosa c'è di errato quì per esempio
    for(i=0; i<N; i++) {
                   cin >> sequenza [N];
    }
    si quello l ho corretto ci va la i al posto della N
  • Re: Problema esercizio c++

    #include <iostream>
     using namespace std;
     
     int const N= 10;
     
    void leggiSequenza (int sequenza [N]);
    void stampaSequenza (int sequenza [N]);
    int massimo (int sequenza [N]);
    int minimo (int sequenza [N]);
    float media (int sequenza [N]);
    int sommaElementiDispari (int sequenza [N]);   
    int sommaElementiPari (int sequenza [N]); 
      
      int main () {
        int sequenza [N];
        int sommaP, sommaD;
        int X,Y;
        float mediaseq;
    leggiSequenza (sequenza);
    stampaSequenza (sequenza);
    
    massimo (sequenza);
    minimo (sequenza);
    cout << "il massimo e'" << X << endl;
    cout << "il minimo e'" << Y << endl;
    
    media (sequenza);
    cout << "la media della sequenza e'" << mediaseq << endl;
    
     sommaElementiDispari (sequenza);   
     sommaElementiPari (sequenza);  
        
    if( sommaP == sommaD) {
               
        cout << " condizione soddisfatta " << endl;
    } else {
    cout << " condizione non soddisfatta " << endl;
    }
    
    system("pause");
    
    }
     void leggiSequenza ( int sequenza [N] ) {
          
          cout << "immetti sequenza valori" << endl;
          
          int i;
          
          for(i=0; i<N; i++) {
                   
                   cin >> sequenza [i];
                   }
          return;
          }
       void stampaSequenza ( int sequenza[N] ) {
            int i;
            
            for(i=0; i<N; i++) {
                     
            cout << sequenza[i] << "\t" ;
            } 
            return;
            }
            
       int massimo (int sequenza [N] ) {
       
       int X= sequenza[0];
       int i=0;
       
       while(i<N) {
                  
       if (X<sequenza[i]) {
                          
       X=sequenza[i];
       i++;
    }
    }
    cout << "il massimo della sequenza e'" << X << endl;
    return X;
    }
    
        int minimo (int sequenza [N]) {
            
        int Y= sequenza[0];
        int i=0;
        
        while(i<N) {
                   
        if(Y>sequenza[i]) {
        
        Y=sequenza[i];
        i++;
    }
    }
    cout << "il minimo della sequenza e'" << Y << endl;
    return Y;
    }
    
    float media ( int sequenza [N] ) {
          
          int i, somma;
          float mediaseq;
          
       for(i=0; i<N; i++) {
                
       somma = somma + sequenza [i];
    }
    mediaseq = somma/N;
    
    cout << "la media dei numeri" << somma << endl;
    return mediaseq; 
    }
    
    int sommaElementiPari (int sequenza [N] ) {
        
        int i, sommaP;
        for (i=0;i<N; i++) {
            
            if(i%2==0) {
            sommaP= sommaP+ sequenza[i];
            }
            } 
            cout << "somma numeri pari" << sommaP << endl;
            return sommaP;
            }
            
    int sommaElementiDispari (int sequenza [N]) {
        
        int i, sommaD;
        for (i=0;i<N; i++) {
            
            if(i%2!=0) {
            sommaD=sommaD+ sequenza[i];
            }
            } 
            cout << "somma numeri dispari" << sommaD << endl;
            return sommaD;
            }
    
        
           
    
    credo che ora il mio problema sia nel main ma non so proprio cosa fare
  • Re: Problema esercizio c++

    Ciao Federico91

    La funzione massimo non funziona perchè usi 2 differenti variabili chiamate X, una interna al main e una interna alla funzione minimo. Quando assegni la seconda la prima non viene influenzata.
    Nota che la funzione massimo ha il seguente prototipo:
    
    int massimo (int sequenza [N]);
    
    È una funzione che restituisce un valore, per cui la cosa più logica è che restituisca il valore del massimo, che poi puoi assegnare alla variabile che ti pare.
  • Re: Problema esercizio c++

    Federico, barba59 ti sta dicendo che le funzioni sono corrette, ma anche avendo lo stesso nome, variabili dichiarate in funzioni diverse hanno indirizzi distinti e quindi sono variabili distinte, la X del main e la X della funzione massimo, sono variabili non legate, quando tu scrivi:
    massimo(sequenza);
    la funzione viene eseguita e restituisce grazie al return il valore del max, la modifica da fare è
    X=massimo(sequenza);
    cosí la X del main assume il valore che restituisce la funzione, ovvero il max della funzione, e la stessa cosa devi fare dove chiami le altre funzioni, e tutto dovrebbe funzionare, se hai altri problemi, fai queste correzioni e riposta il codice...
  • Re: Problema esercizio c++

    #include <iostream>
     using namespace std;
     
     int const N= 10;
     
    void leggiSequenza (int sequenza [N]);
    void stampaSequenza (int sequenza [N]);
    int massimo (int sequenza [N]);
    int minimo (int sequenza [N]);
    float media (int sequenza [N]);
    int sommaElementiDispari (int sequenza [N]);   
    int sommaElementiPari (int sequenza [N]); 
      
      int main () {
        int sequenza [N];
        int sommaP, sommaD;
        float mediaseq;
        int i;
    leggiSequenza (sequenza);
    stampaSequenza (sequenza);
    
    cout << "il massimo e'" <<massimo (sequenza)<< endl;
    cout << "il minimo e'" <<minimo (sequenza)<< endl;
    
    cout << "la media della sequenza e'" <<media (sequenza)<<endl;
    
    
    
        
    if( sommaElementiDispari (sequenza)==sommaElementiPari (sequenza)) {
               
        cout << " condizione soddisfatta " << endl;
    } else {
    cout << " condizione non soddisfatta " << endl;
    }
    
    system("pause");
    
    }
     void leggiSequenza ( int sequenza [N] ) {
          
          cout << "immetti sequenza valori" << endl;
          
          int i;
          
          for(i=0; i<N; i++) {
                   
                   cin >> sequenza [i];
                   }
          return;
          }
       void stampaSequenza ( int sequenza[N] ) {
            int i;
            
            for(i=0; i<N; i++) {
                     
            cout << sequenza[i] << "\t" ;
            } 
            return;
            }
            
       int massimo (int sequenza [N] ) {
       
       int X= sequenza[0];
       int i;
       
       for(i=0; i<N; i++) {
                  
       if (X<sequenza[i]) {
                          
       X=sequenza[i];
    }
    }
    
    return X;
    }
    
        int minimo (int sequenza [N]) {
            
        int Y= sequenza[0];
        int i;
        
       for (i=0;i<N; i++) {
                   
        if(Y>sequenza[i]) {
        
        Y=sequenza[i];
        
    }
    }
    
    return Y;
    }
    
    float media ( int sequenza [N] ) {
          
          int i, somma;
          float mediaseq;
          
       for(i=0; i<N; i++) {
                
       somma = somma + sequenza [i];
    }
    mediaseq = somma/N;
    
    
    return mediaseq; 
    }
    
    int sommaElementiPari (int sequenza [N] ) {
        
        int i, sommaP=0;
        for (i=0;i<N; i+=2) {
            
            
            sommaP+= sequenza[i];
            
            } 
            cout << "somma numeri pari" << sommaP << endl;
            return sommaP;
            }
            
    int sommaElementiDispari (int sequenza [N]) {
        
        int i, sommaD=0;
        for (i=0;i<N; i++) {
            
            if(i%2!=0) {
            sommaD=sommaD+ sequenza[i];
            }
            } 
            cout << "somma numeri dispari" << sommaD << endl;
            return sommaD;
            }
    ho risolto il problema ora il programma funziona come deve grazie mille per l ' aiuto
Devi accedere o registrarti per scrivere nel forum
10 risposte