Oppure

Loading
24/08/11 9:18
el cuba libre
salve a tutti
scusate ma mi trovo costretto a farvi altre domande perchè altrimenti non ne cavo le gambe.
sto creando un programma che dovrebbe gestire una serie di elementi all'interno della vita di un ospedale. ho creato una classe reparti che ha come metodi:
impostanomereparto che imposta il nome del reparto.
archiviodegenti che contiene oltre all'impostazione del nome del degente anche i giorni di degenza e il numero di degenti
calcolodegenzamedia che dovrebbe calcolare la degenza media di tutti i malati del reparto
print info che dovrebbe stampare tutte le varie informazioni.
allora quando io inserisco i dati dal main facendo per esempio
 cout<<"inserisci cognome degente"<<endl;
 cin>>cognome;
 cout<<"inserisci giorni di degenza"<<endl;
 cin>>giorni_degenza;
 istanza[i].archiviodegenti(cognome,giorni_degenza,num_degenti);

tutti i valore all'interno del metodo archiodegenti vengono impostati correttamente, solo che poi all'esterno del metodo tutti i valori sono errati e non riesco a capire perchè,credo sia colpa del costruttore perchè tutte le variabili sono impostate come nel costruttore cioè a zero e non so come impostarle in maniera non statica.
class reparti : public element
{
public:
    int numero_posti,numero_degenti,giorni_degenza_media,degenza_ricoverato;
    reparti(,int num_degenti=0,int num_posti=0)
    {
        numero_degenti=num_degenti;
        numero_posti=num_posti;
    }
    void archiviodegenti(char *name_degente,int degenza_malato,int numero_degenti)
    {
        nome_degente=new char [strlen (name_degente)+1];
        strncpy(nome_degente,name_degente,strlen (name_degente));
        nome_degente [strlen (name_degente)+1]='salve a tutti

scusate ma mi trovo costretto a farvi altre domande perchè altrimenti non ne cavo le gambe.
sto creando un programma che dovrebbe gestire una serie di elementi all'interno della vita di un ospedale. ho creato una classe reparti che ha come metodi:
impostanomereparto che imposta il nome del reparto.
archiviodegenti che contiene oltre all'impostazione del nome del degente anche i giorni di degenza e il numero di degenti
calcolodegenzamedia che dovrebbe calcolare la degenza media di tutti i malati del reparto
print info che dovrebbe stampare tutte le varie informazioni.
allora quando io inserisco i dati dal main facendo per esempio
 cout<<"inserisci cognome degente"<<endl;
 cin>>cognome;
 cout<<"inserisci giorni di degenza"<<endl;
 cin>>giorni_degenza;
 istanza[i].archiviodegenti(cognome,giorni_degenza,num_degenti);

tutti i valore all'interno del metodo archiodegenti vengono impostati correttamente, solo che poi all'esterno del metodo tutti i valori sono errati e non riesco a capire perchè,credo sia colpa del costruttore perchè tutte le variabili sono impostate come nel costruttore cioè a zero e non so come impostarle in maniera non statica.
class reparti : public element
{
public:
    int numero_posti,numero_degenti,giorni_degenza_media,degenza_ricoverato;
    reparti(,int num_degenti=0,int num_posti=0)
    {
        numero_degenti=num_degenti;
        numero_posti=num_posti;
    }
    void archiviodegenti(char *name_degente,int degenza_malato,int numero_degenti)
    {
        nome_degente=new char [strlen (name_degente)+1];
        strncpy(nome_degente,name_degente,strlen (name_degente));
        nome_degente [strlen (name_degente)+1]='{parsed_message}';
        degenza_ricoverato=degenza_malato;
        numero_degenti++;
        cout<<"degenti numero : "<<numero_degenti<<endl;
        cout<<"nome degente : "<<nome_degente<<endl;
    }
    void calcolo_degenza_media(int degenza_ricoverato)
    {
        cout<<"degenza ricoverato : "<<degenza_ricoverato;
        int degenza_totale=0;
        for(int i=0;i<numero_degenti;i++)
        {
            degenza_totale=degenza_totale+degenza_ricoverato;
        }
        giorni_degenza_media=degenza_totale/numero_degenti;
    }

se prima richiamo il metodo archiviodegenti dal main tutto risulta regolare, se poi richiamo sempre dal main la funzione calcol_degenza_media il metodo piglia i valori cosi come sono impostati nel costruttore. ma come faccio a cambiarli nel costruttore, perchè se provo a mettere una variabile al posto di =0 il compilatore mi dice che è una variabile non statica e se non metto nulla non compila lo stesso. mi servirebbe un modo per far si che il metodo giorni_degenza_media prendesse i parametri in input dal metodo archiviodegenti. per esempio potrei richiamare il metodo all'interno della funzione ma non so se si può fare ne come si fa!
scusate la confusione!
grazie mille'; degenza_ricoverato=degenza_malato; numero_degenti++; cout<<"degenti numero : "<<numero_degenti<<endl; cout<<"nome degente : "<<nome_degente<<endl; } void calcolo_degenza_media(int degenza_ricoverato) { cout<<"degenza ricoverato : "<<degenza_ricoverato; int degenza_totale=0; for(int i=0;i<numero_degenti;i++) { degenza_totale=degenza_totale+degenza_ricoverato; } giorni_degenza_media=degenza_totale/numero_degenti; }

se prima richiamo il metodo archiviodegenti dal main tutto risulta regolare, se poi richiamo sempre dal main la funzione calcol_degenza_media il metodo piglia i valori cosi come sono impostati nel costruttore. ma come faccio a cambiarli nel costruttore, perchè se provo a mettere una variabile al posto di =0 il compilatore mi dice che è una variabile non statica e se non metto nulla non compila lo stesso. mi servirebbe un modo per far si che il metodo giorni_degenza_media prendesse i parametri in input dal metodo archiviodegenti. per esempio potrei richiamare il metodo all'interno della funzione ma non so se si può fare ne come si fa!
scusate la confusione!
grazie mille
Ultima modifica effettuata da el cuba libre 24/08/11 9:43
aaa
24/08/11 10:04
HeDo
purtroppo da quanto vedo ti mancano tantissime cose prima di riuscire ad abbozzare qualcosa che funzioni.
detto questo partiamo dalle specifiche del programma, dopodichè analizziamo assieme gli oggetti che servono a modellizzare il problema e infine scriviamo le classi che rappresentano gli oggetti.

sul forum siamo disposti a seguirti passo passo in questo procedimento, non è eccessivamente complesso ma credo sia una cosa fondamentale per diventare un buon programmatore.
aaa