venerdì 31 ottobre 2014

Esercitazione 4 e note relative ai capitoli 4 e 5

Disponibili per il download una nuova esercitazione e le note relative a espressioni e istruzioni. Se ancora non l'avete fatto, approfittate della pausa per svolgere tutti gli esercizi.
Prima della ripresa delle lezioni pubblicherò possibili soluzioni e potrete così confrontarle con quanto fatto da voi.

12 commenti:

  1. Scusi professore, ho un problema con l'esercizio 3:
    Se provo a fare inserire due vector da cin fino a che non viene digitato EOF, appena compilo il programma e do il primo EOF per fare terminare l'inserimento nel primo vector, il programma non mi fa più inserire nulla neanche nel secondo vector, terminando. Il codice è questo:

    vector v1,v2;
    int x,y;
    cout<<"inserisci il primo vector"<>x)
    v1.push_back(x);
    cout<<"inserisci il secondo vector"<>y)
    v2.push_back(y);

    Per risolvere ho provato a fare terminare l'inserimento inserendo da tastiera 0, ma non mi sembra un'ottima soluzione.
    Come altro si può risolvere?
    Grazie

    RispondiElimina
    Risposte
    1. Non si riesce a vedere il codice. In quello pubblicato non ci sono espressioni di input..

      Elimina
    2. Ha ragione, per qualche motivo parte del codice mi è stata cancellata al momento di postare il commento.. a questo punto le passo il codice tramite pastebin:
      - Questo è il codice che volevo usare ma che non funziona (terminato il primo inserimento con un EOF non mi fa inserire più nulla) -> http://pastebin.com/VxMxyf9t
      - Questo è il codice che ho usato per far funzionare il programma (però non posso più inserire 0 nei vector) -> http://pastebin.com/Nd8LB8ZC

      Elimina
    3. (mi sono accorto di aver scritto nel cout "0 per terminare" anche nel primo codice, ma ovviamente non è vero)

      Elimina
    4. Io sono fuori Palermo e purtroppo non ho un compilatore per verificare ma non mi sembra strano che dopo che inserisci un eof nello stream questo rimane in stato di errore e ti ritorna falso.
      Devi cercare su internet come resettare lo stream dopo che si e' verificato un eof.

      Elimina
    5. Ho risolto, lo scrivo qui magari qualcuno ha lo stesso problema, bisogna usare:

      std::cin.clear();

      per resettare lo stream una volta inserito il primo eof, così appena arriva al secondo cin non lo salta ma fa inserire nuovamente da tastiera
      Grazie comunque per l'aiuto, professore

      Elimina
  2. Salve professore volevo chiederle se questa potrebbe essere una soluzione dell'esercizio 4
    grazie anticipatamente

    int main(){

    string s1 ,s2 ;

    do {
    if (!s1.empty() && !s2.empty()){
    if (s1==s2){
    cout << "Le stringhe sono uguali" ;
    } else {
    s1 < s2 ? cout << s1 << " < " << s2 : cout << s2 << " < " << s1 ;
    }
    }
    cout << "\nInserisci due stringhe : " ;
    }while(getline(cin,s1) && getline(cin,s2));

    return 0;
    }

    RispondiElimina
  3. Come dicevo al tuo collega sono fuori sede e non ho accesso a un compilatore per verificare, comunque leggendolo mi sembra che il tuo codice faccia quanto richiesto,

    RispondiElimina
  4. Professore scusi il ritardo,
    non riesco a capire bene cosa chieda l'esercizio 5, anche perchè la parte di codice presente nella consegna non compila..

    RispondiElimina
  5. Essenzialmente ti chiede di scrivere un programmino con funzionalità analoga usando un do/while. A breve comunque pubblicherò possibili soluzioni.

    RispondiElimina
    Risposte
    1. Grazie della risposta Professore, alla fine il problema era la funzione get_size che doveva essere definita.

      Elimina