Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [C++] Selezione da file in lettura

    Ciao a tutti,
    sto creando un semplice database che permetta di gestire iscrizioni e studenti.
    Oggi ho riscontrato il seguente problema: riesco senza problemi a visualizzare l'intero elenco di iscritti dal file in lettura registro.txt ma non riesco a selezionare solo alcuni degli iscritti per corso ad esempio.

    Riporto la funzione che non va, voglio selezionare solo gli studenti del corso di inglese presenti nel file registro.txt :

    codice:
    void cercaCorso()
    {
         ifstream iscritti;
         iscritti.open("registro.txt");
          
         string str;    
         string nome, cognome, luogoNascita, dataNascita, codFiscale, corso, livelloConoscenza;
               system("CLS");
               cout << "Inserire il corso:" <<endl;
               cin  >> str;
               
               while (iscritti >> nome >> cognome >> luogoNascita >> dataNascita >> codFiscale >> corso >> livelloConoscenza)
               {
                     if(str=="Inglese"){
                     
               cout << "\nNome: " << nome << "\nCognome: " << cognome << "\nCorso: " << corso << "\nLivello: " << livelloConoscenza <<endl;
                                       }
               }

    Grazie in anticipo per le risposte

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Come è fatto il file di dati ? Mostraci un esempio effettivo del suo contenuto ...

    E perché confronti sempre con "Inglese" ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Il file di testo contiene :

    Mario Rossi Bologna 01/08/1940 IT4848N3B449 Inglese B2
    Maria Verdi Milano 01/08/1934 HI234HIHIH23423 Inglese B1
    Giulia Roberti Bari 01/07/1938 NY3453450FI Inglese C1
    Valerio Prizzi Brindisi 01/05/1930 FFG894848GFG Francese A1

    Il codice che non riesco a scrivere dovrebbe restituirmi l'iscritto o gli iscritti in base ad una scelta (es. corso, livello, città,..)

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Perché confronti sempre con "Inglese" nella if ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Ho sbagliato ero convinto di selezionare il corso con la if ma ovviamente no.

    In un progettino precedente avevo risolto il problema della selezione in questo modo :

    codice:
    void cercaAnni()
    {
         ifstream impiegato("nuovoimpiegato.txt");
         
         string nome;
         int    anni;
         int    fanni;
         
         long int salario;
         
         system("CLS");
         
         cout <<"Inserire gli anni dell'impiegato: " <<endl;
         cin  >> fanni;
         
         while (impiegato >> nome >> anni >> salario){
               
               if(fanni==anni){
               
               system("CLS");
               cout << "Impiegato trovato" <<endl;
               cout << "\t Nome: " << nome << "\t Anni: "<< anni << "\t Salario: " << salario <<endl;
                                                     }
               if(!(fanni==anni)){
                                system("CLS");
                                cout << "Impiegato non trovato" <<endl;
                               }
                                                     }
         system("pause");
         cin.get();
         main();
    }
    Il codice funziona, l'unico problema è che se nel file ho piu persone con la stessa età mi stampa solo l'ultima persona che ho inserito, ignorando tutte le altre presenti.

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da protest00
    Ho sbagliato ero convinto di selezionare il corso con la if ma ovviamente no.

    In un progettino precedente avevo risolto il problema della selezione in questo modo :
    Non ho capito ... il problema precedente è risolto ?

    Questo è un altro problema ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Si mi scuso, si tratta dello stesso problema ma ho postato un nuovo codice corretto così da capirci meglio.

    Dimentichiamo il primo che ho postato.
    _________
    Parlo del secondo caso, problema identico.

    Nel file in scrittura scrivo i dati:

    Rossi 35 45000
    Verdi 50 78000
    Bianchi 42 67000
    Neri 50 80000

    Vorrei adesso che il secondo codice che ho postato mi stampasse l'elenco degli impiegati che hanno 50 anni.

    Mi stampa però solo :

    Neri 50 80000

    invece che :

    Neri 50 80000
    Verdi 50 78000

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Devi togliere la parte

    if(!(fanni==anni)){
    system("CLS");
    cout << "Impiegato non trovato" <<endl;
    }

    e l'altra system("CLS");

    che sta all'interno del ciclo altrimenti cancelli sempre i dati che visualizzi tranne l'ultimo

    E fai attenzione alla chiamata del main alla fine che è un errore grossolano e grave
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Risolto grazie mille

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Prego ... e occhio al main ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.