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?