Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    182

    [C++] I due massimi in una serie di 10 numeri

    Mi sono imbattuto in questo esercizio: calcolare i due massimi in una serie di 10 numeri...se le serie erano due il problema non si poneva perchè usavo due variabili diverse...
    Sono riuscito a calcolare il primo massimo (l'ho chiamato max_a)..ora il mio problema è: qual'è la condizione giusta per far si che in max_b venga salvato il numero piu' grande dopo quello salvato in max_a? (cioè il secondo numero piu' grande della serie)
    Questa è una bozza che ho fatto che naturalmente funziona in modo sbagliato perchè è sbagliata la condizione dell'if:
    codice:
    #include <iostream>
    using namespace std;
    
    int main(){
    	int n,max_a=0,max_b=0;
        
    for(int i=0; i<10; i++){
            cin>>n;
                       if(n>max_a){
                       max_a=n;}
                                  if(n>max_b && n<max_a){ //secondo me l'errore sta qua!
                                  max_b=n;
                                  }
                              
                                  
                                }
                                cout<<"maxa"<<max_a<<"maxb"<<max_b<<endl;
     system("pause");                  
     return 0;
    }

  2. #2
    soluzione banale non ottimizzata:
    scorri il vettore, trovi il primo massimo, salvi in una variabile temporanea l'indice della sua posizione, rileggi il vettore cercando il secondo massimo assicurandoti di escludere (basta un if) la posizione del primo massimo dal controllo (nella pratica quindi usi sempre una funzione che cerca il "massimo" ma il tuo vettore è formato da tutti gli elementi tranne il massimo assoluto trovato in precedenza)

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    182
    con gli array sembra piu' facile, ma io volevo farla senza vettori! Con variabili normali!

  4. #4
    si ma, qual è l'utilità pratica?

    mah in ogni caso potresti confrontarli a due a due
    nel primo ciclo trovi il massimo assoluto e ti salvi il VALORE in una variabile temporanea
    nel secondo cerchi ancora un massimo ma se la variabile che stai per analizzare ha lo stesso valore del massimo assoluto, la scarti subito senza fare controlli (Anche in questo caso, basta un if)

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    182
    l'ultilità sta nel prendere confidenza con il c++ :-)
    sto facendo tutti gli esercizi del "deitel&deitel c++"..perchè sono un pò a digiuno di programmazione e ho un esame a breve..
    anzi...accetto consigli per prepararmi in tempi brevi!
    per il momento sto leggendo la teoria e facendo gli esercizi... poi dovrò affrontare le prove d'esame.

    comunque...nel secondo ciclo non trovo sempre lo stesso massimo? ci vorrebbe un modo per scartare il massimo già trovato...boh..

  6. #6
    no, come ti ho detto:
    nel secondo cerchi ancora un massimo ma se la variabile che stai per analizzare ha lo stesso valore del massimo assoluto, la scarti subito senza fare controlli (Anche in questo caso, basta un if)

    in ogni caso quando fai cose del genere devi usare gli array (è in questo modo che impari ad usare correttamente il linguaggio)
    Anzi, come già dissi ad altri sempre in questo forum, ad un qualsiasi esame di programmazione, usare trenta variabili int al posto di un vettore di int significa farsi bocciare ancor prima che il professore legga il resto del programma (e te lo dico perché lo ho visto fare di persona)

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.