PDA

View Full Version : [C] aiuto esercizio


ivanao
23-02-2004, 18:32
.

Killian
23-02-2004, 20:12
ma cosa vuoi sapere di preciso?
Apparentemente la soluzione è semplice, in "costo1" fai una scansione della tabella P e incrementi ogni volta un valore aggiungendo il valore "costo totale esami fatti",

per quanto riguarda "costo2" leggi ogni singola riga della tabella F (magari in caso di riga nulla suppongo che la tabella sia finita, quindi è inutile leggere tutti i 1000 valori), ad ogni lettura vai ad incrementare la tua variabile "costo", in pratica leggi aF.codes, ti vai a leggere la tabella aE.prez alla riga aF.[aF[i].codes]prez (se gli esami sono in ordine, altrimenti ti devi leggere ogni singola riga finchè aE[].codes==aF[].codes) e incrementi la tua variabile che contiene la somma (chiamiamola "costo").


Per calcolare il costo totale nell'archivio aP (suppongo per tutti i pazienti, non solo per uno) ti devi leggere ogni riga della tabella aF e fare la seguente procedura:

{
int i=0;
while(aF[i].codes)//se è nullo presumo che la tabella sia finita
{
aP[aF[i].codpaz].costotes+=aE[aF[i].codes].prez;
i++; //corrisponde a scrivere i=i+1;
}

ti ricordo che la notazione += serve ad incrementare, ad esempio
x+=Y; è come scrivere x=x+y;

spero che tu abbia capito qualcosa.

ivanao
23-02-2004, 20:39
ci ragiono su e ti faccio sapere. Mi serviva una direzione di ragionamento...
Grazie

ivanao
24-02-2004, 18:52
.

Killian
24-02-2004, 19:07
Originariamente inviato da ivanao
sono incasinato... allora dal testo mi chiede:
nell'archivio P il costo totale esami fatti dal paziente (calcolato), ma allora nella funz leggi cosa ci metto come costototes


in leggi dovresti solo aggiungere il nome e la data di nascita (il codice dovrebbe essere automatico, il costo degli esami fatti dovrebbe essere calcolato chiamando la funzione costo2).

per quanto riguarda l'ordine casuale nella funzione fatti, penso che il testo dica semplicemente che la tabella aF può essere letta senza un ordine particolare, quindi non devi leggerla ordinando il risultato per codice esame o per costo esame ad esempio.

Killian
24-02-2004, 19:21
Originariamente inviato da ivanao

però poi nella funz esame mi chiede quanti pazienti hanno fatto quell'esame cone sito pos o neg...


non ci capisco una mazza...:muro:

ti dico come penso io la funzione "esame" (supponiamo che gli archivi siano variabili globali, per semplicità mia :D )

void esame();
{
int codice, i, pos=0, neg=0;
printf("codice esame");
scanf("%d", &codes);
for(i=0, i<max, i++)
{
if(!aF[i].codes) break; //se la tabella F è finita è inutile leggerla tutta, tanto i codici degli esami vanno da 1 a 200, quindi considero 0 come se la riga fosse vuota, cmq se non lo sai "!aF[i].codes" = "aF[i].codes==0"
if(aF[i].codes==codice)
{
if(aF[i].esito) //posso evitare di mettere ==1, tanto se non è 1 è 0 e quindi è come se fosse FALSE

pos++;
else neg++
}
}
//alla fine del ciclo for stampa a video le variabili pos e neg

}

ivanao
25-02-2004, 01:55
-

Killian
25-02-2004, 10:53
Originariamente inviato da ivanao
ci ho provato ma mi viene una cagata...mi dici dove sbaglio? grazie


la prossima volta non includere tutto il codice, dammi solo la parte che vuoi ti controlli.

Comunque se ti riferivi alla funzione "esame" in che senso viene una cagata? Non funziona o da risultati errati (o altro)?

ivanao
25-02-2004, 11:35
-