Esercizi vari C++ di base

di il
11 risposte

Esercizi vari C++ di base

Salve gente! Mi sono appena iscritto, allora sono uno studente di informatica che non potendo seguire le lezioni studia solo e studiando da solo quando incappo in un esercizio che riesco a fare rimango bloccato.. quindi ora sono qui per chiedere aiuto a voi gente esperta.
Sto seguendo il libro C++ for everyone 2nd edition come consigliato dal mio professore, se per voi va bene man mano che vado avanti ed incappo in qualcosa che non so fare la posterò in questo stesso thread sperando possiate darmi una mano.
Allora il primo esercizio è questo:
Dati svariati numeri in input, stamparne il minore, per uscire dal ciclo bisogna usare la lettera q.
Questo è quello che ho fatto ma non gira proprio..
http://pastebin.com/mU30MVw

11 Risposte

  • Re: Esercizi vari C++ di base

    E' più comodo proporre il codice nel forum e non attraverso un link ... in ogni caso, devi anche dire

    1) se hai problemi in compilazione, e se li hai, quali messaggi d'errore e in quali linee

    2) se hai errori a runtime, quali e quando

    3) se compile correttamente ed esegui, se hai risultati che non ti aspetti

    Queste raccomandazioni, presentando un problema al forum, sono di carattere generale, valgono per tutti i thread che aprirai, per facilitare le risposte.
  • Re: Esercizi vari C++ di base

    oregon ha scritto:


    E' più comodo proporre il codice nel forum e non attraverso un link ... in ogni caso, devi anche dire

    1) se hai problemi in compilazione, e se li hai, quali messaggi d'errore e in quali linee

    2) se hai errori a runtime, quali e quando

    3) se compile correttamente ed esegui, se hai risultati che non ti aspetti

    Queste raccomandazioni, presentando un problema al forum, sono di carattere generale, valgono per tutti i thread che aprirai, per facilitare le risposte.
    Ok, hai ragione pensavo che postando qui il codice risultasse illegibile, ecco qui:

    #include <cstdlib>
    #include <iostream>
    #include <cmath>
    #include <string>
    #include <iomanip>

    using namespace std;

    int main()
    {
    double x;
    char uscita = 'q';
    double minimo;

    cout << "Digita una serie di numeri seguiti da invio, premere \"q\" per uscire" << endl;
    do
    {
    cin.clear();
    cin>> x;
    if (minimo < x)
    minimo = x;
    }
    while(x != 'q');
    cout << minimo << endl;

    system("PAUSE");
    return EXIT_SUCCESS;
    }

    compila ma non appena digito la q o qualsiasi cosa non sia un numero si impalla, non esce dal do while e non stampa la cout..
  • Re: Esercizi vari C++ di base

    Quando posti il codice nel forum devi usare i tag CODE ... leggi il regolamento per i dettagli.

    Per il caso specifico, non puoi confrontare con un carattere una variabile double ... Le double contengono valori numerici, non caratteri. Per uscire o meno dal ciclo devi fare una domanda specifica usando un'altra variabile.
  • Re: Esercizi vari C++ di base

    Ciao Arondight, benvenuto e buona fortuna con lo studio.
    Intanto, ti consiglio di aprire un nuovo thread per ogni problema che ti si dovesse presentare: ovviamente, prima di precipitarti a chiedere aiuto, prova sembre a sbatterci la testa!
    Per quanto riguarda il tuo codice, gli errori principali che vedo sono due.
    Prima di tutto, devi inizializzare il valore di minimo a 0. Tu dici "se minimo è minore di x, minimo = x". Ma nel primo confronto, qual è il valore di minimo? Dunque, correggi con "double minimo = x".
    Secondo, "minimo" è una variabile double: non sarà mai e poi mai uguale ad un carattere 'q'.
    Io farei una cosa del tipo:
    
    char ch;
    if(!(cin >> x)){ //c'è stato un errore in input: ad esempio, provi a mettere un carattere in un double!
        cin.clear();
        cin >> ch;
        if(ch == 'q')
            esci
    }
    
    A fine codice, inoltre, immagino tu voglia stampare il valore di minimo, non di x. E tutte quelle librerie che includi all'inizio, sono inutili! Ti basta utilizzare solo la iostream, dato che non utilizzi stringhe, né funzioni matematiche, né altro.

    Saluti.
  • Re: Esercizi vari C++ di base

    Grazie ad entrambi, d'ora in poi userò il Code, allora tuixte non capisco dove inserire quel pezzo di codice...
    Per il fatto delle librerie lo so, le scrivo in automatico per non sbagliare :/
  • Re: Esercizi vari C++ di base

    Oltre che inserire quel pezzo di codice, lo devi anche comprendere perché altrimenti il suggerimento non ti servirà (se lo vorrà spiegato il professore).
  • Re: Esercizi vari C++ di base

    !cin>> x sarebbe una specie di cin.fail() giusto?
    poi pulisce la cin
    e dopo non mi è chiaro, cioè mi chiede di inserire un carattere e se è == a q esce, ma io voglio solo che esca con q, quindi se premo q deve uscire di colpo, guardate qui
    
    #include <cstdlib>
    #include <iostream>
    #include <cmath>
    #include <string>
    #include <iomanip>
    
    using namespace std;
    
    int main()
    
    {
     double x;
     double minimo = // MASSIMO VALORE DEI DOUBLE, NON SO COME SI METTE
     cout << "Digita una serie di numeri seguiti da invio, premere \"q\" per uscire" << endl;
     do
     {
      cin >> x;
      
      if (x < minimo)
      {
        minimo = x;
     }
     while(!cin.fail()); // Non va bene, voglio che esca solo con la q.. come si fa?
     
     cout << minimo << endl;
    
         
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    
  • Re: Esercizi vari C++ di base

    In C++ non è previsto questo tipo di input. Devi affidarti a funzioni non standard o legate al sistema operativo con cui lavori.
  • Re: Esercizi vari C++ di base

    oregon ha scritto:


    In C++ non è previsto questo tipo di input. Devi affidarti a funzioni non standard o legate al sistema operativo con cui lavori.
    una soluzione senza uscire dal c++ quale sarebbe?
  • Re: Esercizi vari C++ di base

    Non mi sono spiegato ... il C++ non lo prevede ... puoi usare funzioni non standard come kbhit() o API del sistema operativo (Windows?)
  • Re: Esercizi vari C++ di base

    oregon ha scritto:


    Non mi sono spiegato ... il C++ non lo prevede ... puoi usare funzioni non standard come kbhit() o API del sistema operativo (Windows?)
    Nono allora no, ti ricordo che sono proprio all'inizio quindi non facciamo cose troppo complicate, guarda qui, compila e sembra funzionare, a questo punto non importa che esca solo con "q" ma con qualsiasi input sbagliato
    #include <cstdlib>
    #include <iostream>
    #include <cmath>
    #include <string>
    #include <iomanip>
    
    using namespace std;
    
    int main()
    
    {
     double x;
     double minimo =999999999;
     cout << "Digita una serie di numeri seguiti da invio, premere \"q\" per uscire" << endl;
     while (cin >> x)
    {
       if (x < minimo)
      { 
       minimo = x;
       cout << "Il valore: " << setw(14) << minimo << " e' minore di tutti i precedenti" << endl;
       cin.clear();
      }
      else{}
    }
     cout << "Goodbye my darling..." << endl;
    
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    
Devi accedere o registrarti per scrivere nel forum
11 risposte