Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di Pacio88
    Registrato dal
    Sep 2007
    Messaggi
    447

    [C++] Errore in esecuzione

    Devo gestire un array di "risorse". Ciascuna risorsa consiste in una stringa di caratteri e un variabile che indica se quest'ultima è libera o occupata.

    Questo è il codice:
    codice:
    #include <iostream>
    using namespace std;
    
    enum stato{libera, occupata};
    
    
    struct risorsa{
    	char* str;
    	stato st;
    };
    
    class Sistema{
    	risorsa* ri;
    	int lung, disp;
    	
    	friend ostream& operator<<(ostream&, const Sistema&);
    public:
    	Sistema(int);
    	~Sistema();
    	bool aggiungi(const char*);
    	bool occupa(const char*);
    	bool contiene(const char*);
    	bool elimina(const char*);
    };
    
    ostream& operator<<(ostream& os, const Sistema& si){
    	os << "Capacita' del sistema: " << si.lung << endl
    	   << "Risorse presenti nel sistema: " << si.disp << endl;
    	if(si.disp>0){
    		os << "Elenco risorse libere: ";
    		for(int i=0; i<si.disp; i++){
    			if(si.ri[i].st==libera)
    				os << si.ri[i].str << " ";
    		}
    		os << "\nElenco risorse occupata: ";
    		for(int i=0; i<si.disp; i++){
    			if(si.ri[i].st==occupata)
    				os << si.ri[i].str << " ";
    		}
    		os << endl;
    	}	
    	return os;
    }		
    
    Sistema::Sistema(int i){
    	lung=i;
    	disp=0;
    	ri=new risorsa[lung];
    }
    
    Sistema::~Sistema(){
    	delete[] ri;
    }
    
    bool Sistema::aggiungi(const char* str){
    	for(int i=0; i<lung; i++){
    		if(ri[i].str==str)
    			return false;
    	}		
    	if(lung==disp)
    		return false;
    	strcpy( ri[disp].str, str);
    	ri[disp].st=libera;
    	disp++;
    	return true;
    }		
    
    int main(){
    	Sistema si(5);
    	cout << si;
    	si.aggiungi("R1");
    	si.aggiungi("R2");
    	si.aggiungi("R3");
    	cout << si;
    	
    	return 0;
    }
    L'errore è scaturito dalla funzione aggiungi(). Qualcuno sa aiutarmi?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480

    Re: [C++] Errore in esecuzione

    Originariamente inviato da Pacio88
    L'errore è scaturito dalla funzione aggiungi().
    Perche' non ci dici nulla dell'errore ???
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it L'avatar di Pacio88
    Registrato dal
    Sep 2007
    Messaggi
    447

    Re: Re: [C++] Errore in esecuzione

    Originariamente inviato da oregon
    Perche' non ci dici nulla dell'errore ???
    Perchè non ne so niente. L'unica cosa che so è per l'appunto che è causata dalla funzione aggiungi(), poichè ho testato funzione per funzione ed è l'unica che quando chiamata provoca la chiusura inaspettata dell'applicazione. Purtroppo non so usare adeguatamente il debugger e l'uniche cose che posso dirvi sull'erore sono queste.

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Cioe' non vedi cosa succede? Il sistema non ti da' nessun messaggio?


    P.S. In realta' vedo che non allochi mai lo spazio per le stringhe puntate dal puntatore str dei vari elementi di tipo

    codice:
    struct risorsa{
    	char* str;
    	stato st;
    };
    Quando, nella funzione Aggiungi, tenti di eseguire la

    strcpy

    con quel puntatore, hai ovviamente l'errore ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it L'avatar di Pacio88
    Registrato dal
    Sep 2007
    Messaggi
    447
    Il sistema mi dice che l'applicazione si è chiusa inaspettatamente. I dettagli dell'errore dovrebbero essere i seguenti:

    AppName: senzatitolo1.exe AppVer: 0.0.0.0 ModName: msvcrt.dll
    ModVer: 7.0.2600.2180 Offset: 000360b4

  6. #6
    Utente di HTML.it L'avatar di Pacio88
    Registrato dal
    Sep 2007
    Messaggi
    447
    Grazie, era quello l'errore. Mi ero dimenticando che stavo gestendo quella stringa con un puntatore.

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.