Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - passagio e visibilità delle variabili fra metodi di una classe
Forum - C/C++ - passagio e visibilità delle variabili fra metodi di una classe

Avatar
el cuba libre (Normal User)
Newbie


Messaggi: 20
Iscritto: 07/03/2011

Segnala al moderatore
Postato alle 11:18
Mercoledì, 24/08/2011
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
Codice sorgente - presumibilmente Plain Text

  1. cout<<"inserisci cognome degente"<<endl;
  2.  cin>>cognome;
  3.  cout<<"inserisci giorni di degenza"<<endl;
  4.  cin>>giorni_degenza;
  5.  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.
Codice sorgente - presumibilmente C++

  1. class reparti : public element
  2. {
  3. public:
  4.     int numero_posti,numero_degenti,giorni_degenza_media,degenza_ricoverato;
  5.     reparti(,int num_degenti=0,int num_posti=0)
  6.     {
  7.         numero_degenti=num_degenti;
  8.         numero_posti=num_posti;
  9.     }
  10.     void archiviodegenti(char *name_degente,int degenza_malato,int numero_degenti)
  11.     {
  12.         nome_degente=new char [strlen (name_degente)+1];
  13.         strncpy(nome_degente,name_degente,strlen (name_degente));
  14.         nome_degente [strlen (name_degente)+1]='\0';
  15.         degenza_ricoverato=degenza_malato;
  16.         numero_degenti++;
  17.         cout<<"degenti numero : "<<numero_degenti<<endl;
  18.         cout<<"nome degente : "<<nome_degente<<endl;
  19.     }
  20.     void calcolo_degenza_media(int degenza_ricoverato)
  21.     {
  22.         cout<<"degenza ricoverato : "<<degenza_ricoverato;
  23.         int degenza_totale=0;
  24.         for(int i=0;i<numero_degenti;i++)
  25.         {
  26.             degenza_totale=degenza_totale+degenza_ricoverato;
  27.         }
  28.         giorni_degenza_media=degenza_totale/numero_degenti;
  29.     }


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 il 24/08/2011 alle 11:43
PM
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Up
1
Down
V
Segnala al moderatore
Postato alle 12:04
Mercoledì, 24/08/2011
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.

PM