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

    [C++] Problema in lettura da file di testo.

    Salve a tutti, ho questo algoritmo:

    codice:
    /*
    
    Siano dati due file testo: studenti.txt e tesi.txt. Il primo contiene 
    informazioni riguardanti tutti gli studenti di un corso di laurea;
    il secondo contiene informazioni riguardanti i soli studenti del medesimo
    corso di laurea che hanno già fatto richiesta della tesi.
    Entrambi i file sono ordinati per numero di matricola crescente.
    Scrivere una procedura che mostri a video la matricola e la media di
    tutti gli studenti che hanno richiesto la tesi e che hanno svolto tutti gli esami.  
    */      
    
    #include <cstdlib>
    #include <iostream>
    #include <fstream>
    
    using namespace std;
    
    int main(){
        
    
    	fstream tesi ("tesi.txt", fstream::in | fstream::out);
    	fstream studenti ("studenti.txt", fstream::in | fstream::out);
    
    	if(!tesi.is_open()) {
    		cout << "Il file studenti.txt non esiste\n";
    		return 1;
    	}
    
    	if(!studenti.is_open()) {
    		cout << "Il file studenti.txt non esiste\n";
    		return 1;
    	}
    
    
    	while (!tesi.eof()) {
    		
    		char matricola_tesi[256], nome[256];
    
    		tesi.getline(matricola_tesi, 256);
    		tesi.getline(nome, 256);
    
    		while (!studenti.eof()) {
    			char matricola_studente[256];
    			studenti.getline(matricola_studente, 256);
    somma=0;
    			media=0;
    			for(int i=0;i<sost;i++){
                        
                        studenti>>nomesame;
                        cout<<nomesame<<endl;
                        studenti>>voto;
                        cout<<voto<<endl;
                        somma+=voto;
                        }
                        media=(somma/sost);
                        cout<<media<<endl;
    
    			if (!strcmp(matricola_tesi, matricola_studente)) {
    				cout << "ok " << matricola_studente << "\n";
    				break;
    			}
    		}
    		studenti.seekg (0, ios::beg);		
    	}
    
    
    	studenti.close();
    	tesi.close();
    
    return 0;
    
    }
    I file su cui ho effettuato il test sono:


    studenti1.txt
    codice:
    1209
    Ferme Vincenzo
    2 0
    Informatica 28
    Economia 23
    1210
    Fermi Vincenzi
    2 0
    Programmazione 28
    Scienze 23
    tesi.txt
    codice:
    1210
    Fermi Vincenzi
    1209
    Ferme Vincenzo


    I Problemi riscontrati sono:


    1) File studenti.txt con i dati di 2 Studenti, file tesi.txt con i dati dei due studenti presenti all'interno del file studenti.txt:

    La media non viene aggiornata ma rimane quella calcolata per il primo studente, mettendo un èò di cout ho scoperto che non viene proprio toccata la parte relativa al secondo studente.


    2) File studenti.txt con i dati di 2 Studenti, file tesi.txt con i dati di uno dei 2 studenti presenti all'interno del file studenti.txt:

    Succede la stessa cosa descritta prima


    Vi prego di aiutarmi, grazie 1000
    MondoLibero: Informazione Libera, Varia ed Eventuale
    Sito di informazione varia ed eventuale. Quando ho voglia scrivo di ciò che mi pare. Pubblico guide, recensioni, notizie, critiche e tutto ciò che mi passa sotto mano e che penso sia interessante.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Manca la dichiarazione di tutte le variabili e il codice non viene compilato ... fornisci un testo compilabile ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Originariamente inviato da oregon
    Manca la dichiarazione di tutte le variabili e il codice non viene compilato ... fornisci un testo compilabile ...
    Scusate, ecco qui:

    codice:
    #include <cstdlib>
    #include <iostream>
    #include <fstream>
    #include <string>
    
    using namespace std;
    
    int main(){
        
        fstream tesi ("tesi.txt", fstream::in | fstream::out);
    	fstream studenti ("studenti1.txt", fstream::in | fstream::out);
    
    	if(!tesi.is_open()) {
    		cout << "Il file tesi.txt non esiste\n";
    		return -1;
    	}
    
    	if(!studenti.is_open()) {
    		cout << "Il file studenti1.txt non esiste\n";
    		return -1;
    	}
    
        int sost,nnsost,voto,media,somma,ms=0,mt=0,z=0;
        char nomesame[256],matricola_tesi[256], nome[256], matricola_studente[256];
        
    	while (!tesi.eof()) {
    		
    		tesi.getline(matricola_tesi, 256);
    		cout<<matricola_tesi<<endl;
    		mt=0;z=0;
                        while(matricola_tesi[z]!='\0'){
                                                          
                        mt+=(int)matricola_tesi[z]-(int)'0';
                        //cout<<k<<endl;
                        mt*=10;
                        z++;
                        }
                        mt=mt/10;
                        cout<<mt<<endl;
                        system("pause");
    		tesi.getline(nome, 256);
    		cout<<nome<<endl;
            system("pause");
            
    		while (!studenti.eof()) {
      cout<<"SONO SU"<<endl;
                  //int b=studenti.tellg();
                  //int l=b-8;
                  //if(b!=0) studenti.seekg (l, ios::beg);
    			studenti.getline(matricola_studente, 256);
    			cout<<matricola_studente<<endl;
                        z=0;ms=0;
                        while(matricola_studente[z]!='\0'){
                                                          
                        ms+=(int)matricola_studente[z]-(int)'0';
                        //cout<<k<<endl;
                        ms*=10;
                        z++;
                        }
                        ms=ms/10;
                        cout<<ms<<endl;
                        system("pause");
    			studenti.getline(nome, 256);
    			cout<<nome<<endl;
    			studenti>>sost;
    			cout<<sost<<endl;
    			studenti>>nnsost;
    			cout<<nnsost<<endl;
    			//cout<<studenti.tellg()<<endl;
    		    somma=0;
    			media=0;
    			int i=0;
    			while(i<sost){ 
                        studenti>>nomesame;
                        cout<<nomesame<<endl;
                        studenti>>voto;
                        cout<<voto<<endl;
                        somma+=voto;
                        i++;
                        }
                        media=(somma/sost);
                        cout<<media<<endl;
              //cout<<studenti.tellg()<<endl;          
                        
    			if (ms==mt) {
    				cout << "ok " << ms << " "<<media<<"\n";
    				break;
    			}
    			cout<<"TORNO SU"<<endl;
    		}
    		cout<<"RIPETO IL FILE"<<endl;
    		studenti.clear();
    		studenti.seekg (0, ios::beg);		
    	}
    
    
    	studenti.close();
    	tesi.close();
    	
        system("pause");
        return 0;
    }
    MondoLibero: Informazione Libera, Varia ed Eventuale
    Sito di informazione varia ed eventuale. Quando ho voglia scrivo di ciò che mi pare. Pubblico guide, recensioni, notizie, critiche e tutto ciò che mi passa sotto mano e che penso sia interessante.

  4. #4
    Qualcuno è riuscito a scoprire il problema?
    MondoLibero: Informazione Libera, Varia ed Eventuale
    Sito di informazione varia ed eventuale. Quando ho voglia scrivo di ciò che mi pare. Pubblico guide, recensioni, notizie, critiche e tutto ciò che mi passa sotto mano e che penso sia interessante.

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.