+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 4 su 4

Sequenza di Numeri

  1. #1
    Nemesi non è in linea Novello
    Post
    38
    Like Inviati  
    0
    Like Ricevuti  
    0
    Salve ,
    l'esercizio richiedeva :
    • Scrivere un programma C++ che legga da tastiera una sequenza di 50 interi
    • Il programma dovrà stampare a video la sequenza, calcolare e stampare a
    video il massimo, il minimo, e la media della sequenza
    • Verificare se la somma degli elementi in posizione pari è uguale alla somma
    degli elementi in posizione dispari.
    • In caso affermativo il programma deve stampare il messaggio “condizione
    soddisfatta”; in caso negativo, il messaggio “condizione non soddisfatta

    ho trovato dei problemi al terzo punto : il programma funziona ma non so se quella sia la soluzione migliore , cioè sono sicuro che esistono modi più semplici ed intelligenti per alternare la somma tra dispari e pari. Qualche consiglio su come modificare quella parte in modo tale da renderla più semplice ?

    #include <iostream>
    
    using namespace std;
    
    const int  K = 6;
    
    void leggArr  (float arr[K]); // legge l'array
    void maxMinLett (float arr[K]); // mi calcola il minimo e il massimo e li stampa
    bool verSom ( float arr[K]); // mi verifica se la somma dei dispari e dei pari coincide 
    float media ( float arr[K]); // mi calcola la maedia
    
    int main()
    {
    
        float arr1[K];
        float valore ;
    
        leggArr (arr1);
    
        maxMinLett(arr1);
    
        verSom(arr1);
    
        valore = media(arr1);
    
    
        cout << " Il valore medio è = " << (valore)/K << endl;
    
    
    if (verSom(arr1) == true)
        {
            cout << " Verificato";
        }
    else
        {
            cout << " Non verificato";
        }
    
    
    
    
        return 0;
    }
    
    
    
    void leggArr (float arr[K])
    {
        for(int i = 0; i < K; i++ )
            {
                cin >> arr[i];
            }
    }
    
    void maxMinLett (float arr[K])
    {
        float minC, maxC;
    
         minC = arr[0] ;
         maxC = arr[0] ;
    
         for(int i = 0; i < K; i++ )
            {
                if ( arr[i] < minC)
                    {
                        minC = arr[i];
                    }
                else
                    {
                       if ( arr[i] > maxC)
                        {
                            maxC = arr[i];
                        }
                    }
            }
    
            cout << " Max = " << maxC << endl;
    
            cout << " Min = " << minC << endl;
    }
    
    bool verSom (float arr[K]) //  da correggere
    {
        float somD = 0, somP = 0;
    
        int c = 1, z = 2;
    
        for(int i = -1; i + c < K ; i++ )
            {
    
                somD = somD + arr[i+c];
    
                c++;
    
                somP = somP + arr[i+z];
    
                z++;
    
            }
    
            cout << " sommaD = " <<  somD  << endl;
            cout << " sommaP = " <<  somP  << endl;
    
    
    
            if (somD == somP)
                {
                    return true;
                }
            else
                {
                     return false;
                }
    }
    
    float media ( float arr[K])
    {
        float somMedia = 0 ;
    
        for(int i = 0; i < K ; i++ )
            {
                somMedia = somMedia + arr[i];
            }
       return somMedia;
    }
    

  2. #2
    Post
    17,506
    Blogs
    6
    Like Inviati  
    6
    Like Ricevuti  
    35
    Non capisco perché hai usato tutte quelle variabili ma io farei semplicemente

    for(int i=0; i<K ; i+=2)
    {
       somP += arr[i];
       somD += arr[i+1];
    }
    
    e per la return scriverei semplicemente

    return (somD == somP);
    
    ℹ️ Leggi di più su AntonioG ...

  3. #3
    Nemesi non è in linea Novello
    Post
    38
    Like Inviati  
    0
    Like Ricevuti  
    0
    quindi scrivendo i+=2 si ottiene un passo di due giusto? figo : D mai utilizzato fino'ora ma penso che mi sarà utilissimo. Per quanto riguarda il return scrivendolo in quella maniera lo pongo come true e do per scontato che se somD=!somP allora la funzione è falsa?

  4. #4
    Post
    17,506
    Blogs
    6
    Like Inviati  
    6
    Like Ricevuti  
    35
    Quote Originariamente inviato da Nemesi Visualizza il messaggio
    quindi scrivendo i+=2 ...
    Equivale a scrivere

    i = i + 2;

    Studia l'operatore +=

    lo pongo come true e do per scontato che se somD=!somP allora la funzione è falsa?
    Non poni nulla e non dai per scontato nulla.

    L'espressione (somD == somP) come tutte le espressioni ha un risultato. In questo caso il risultato può essere true se i due elementi sono uguali, false in caso contrario (ovvero se sono diversi). Questo risultato (true o false) viene restituito dal return.

    Studia le "espressioni booleane"
    ℹ️ Leggi di più su AntonioG ...

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. colonna excel con numeri progressivi non in sequenza
    Da Katias nel forum Microsoft Excel
    Risposte: 5
    Ultimo Post: 15-07-2016, 20:02
  2. colonna excel con numeri progressivi non in sequenza
    Da Katias nel forum Pausa caffè
    Risposte: 1
    Ultimo Post: 15-07-2016, 15:45
  3. [Divide et impera] verifica esistenza sequenza di numeri in vettore
    Da tvd_40 nel forum Altri linguaggi e strumenti
    Risposte: 1
    Ultimo Post: 21-09-2014, 12:02
  4. Numeri in sequenza
    Da oilcrovara nel forum Microsoft Excel
    Risposte: 3
    Ultimo Post: 10-12-2012, 19:06
  5. Sequenza numeri random
    Da giusto82 nel forum Visual Basic 6
    Risposte: 1
    Ultimo Post: 13-10-2003, 08:44