Titolo: [HELP] Programmazione C Inserito da: Diflucane - 1 Marzo , 2007, 12:00:42 Eh...è passato parecchio tempo da quando ho studiato e usato il C, ho la necessità di aiutare un amico entro domani sera con un programmino facile facile ma forse qualcuno di voi ben più avezzo alla programmazione sa dirmi cosa c'è che non va. Mi date una mano? Per ora vi posto il codice e domattina la traccia (l'ho lasciata in ufficio)...
------------------------------------------------------------------------------------------ #include <stdio.h> struct impiegato { char cognome [20]; int livello; int ore_lavorate; float p_ore_lorde; }; int leggi_imp (File *,struct impiegato *) void leggi_livelli(File *,struct impiegato *) float s_lordo(File *,File *,struct impiegato *,int) float tratt(File *,struct impiegato *,int,float *) void scrivi(File *,struct impiegato *,int,float *) void ordina(File *,struct impiegato *,int,float *) void main (); { int n; float stipendio, trattenuta,stipendio netto; File *fpi,*fpl,*fps; struct impiegato [100]; fpi=fopen("impiegati.txt","r"); n=leggi_imp(fpi,impiegati); fpl=fopen("livelli.txt","r"); leggi_livelli(fpl,livelli); stipendio lordo=s_lordo(fpi,fpl,impiegato,n); trattenuta=tratt(fpi,impiegato,n,stipendio lordo); stipendio netto=stipendio lordo-trattenuta; fclose(fpi); fclose(fpl); fps=fopen("stipendi.txt","w"); scrivi(fps,impiegato,n,stipendio netto); ordina(fps,impiegato,n,stipendio netto); fclose(fps); } int leggi_imp (File * fpi,struct impiegato *A); { int i; i=0; while(fscanf(fpi"%s%d%d",A.cognome,A.livello,A.ore_lavorate)!=EOF); i++; return i; } void leggi_livelli(File *fpl,struct impiegato * B); { int i; i=0; while(fscanf(fpi"%s%d%d",B.livello,B.p_ore_lorde)!=EOF); } float s_lordo(File * fpi,File * fpl,struct impiegato *P,int a); { int i,j; float b; for(i=0;i<a-1;i++) { for(j=0;j<a;j++) { if(P[j].livello=Q.livello) b=P[j].ore_lavorate * Q.p_ore_lorde; return b; } } } float tratt(File * fpi,struct impiegato *C,int a,float *d); { int i; float b; for (i=0;i<a;i++) { if (C.livello>4) { b=d*(25/100); return b; } else (C.livello<4) { b=d*(20/100); return b; } } } void scrivi(File * fps,struct impiegato *P,int a,float *c); { int i; for(i=0;i<a;i++) { fscanf(fps"%s%f",P.cognome,P.stipendio netto); } } void ordina(File * fps,struct impiegato *Q,int a, float *b): { int i,imax,j; struct temp; i=0; for(i=0;i<a-1;i++) { imax=i; for(j=0;j<a;j++) { if(Q.stipendio netto>Q[imax].stipendio netto) { imax=j; temp=Q; Q=Q[imax]; Q[imax]=temp; } } } } --------------------------------------------------------------------------------------------- Qualunque indicazione è bene accetta :flowers: Titolo: [HELP] Programmazione C Inserito da: keiske - 1 Marzo , 2007, 01:08:03 Appena ci copi anche la traccia ci dò un'occhiata anche io :flowers:
Senza traccia sono troppo arrugginito per ragionare sul codice da solo :blink: Titolo: [HELP] Programmazione C Inserito da: Diflucane - 1 Marzo , 2007, 01:40:41 Grazie Kei, ecco la traccia :-)
(http://img85.imageshack.us/img85/9991/esame002ui4.th.jpg) (http://img85.imageshack.us/my.php?image=esame002ui4.jpg) Titolo: [HELP] Programmazione C Inserito da: PowerGod - 1 Marzo , 2007, 02:43:36 ha qualcosa che non va nel senso che:
1) non viene compilato ? in tal caso sarebbe comodo sapere il messaggio d'errore (e il compilatore usato...) 2) non parte ? 3) funzia, ma non risolve il problema della traccia ? se stasera trovo un po' di tempo ci do una occhiata, ma dovrei usare il compilatore di linux... che non ho MAI usato... :o Titolo: [HELP] Programmazione C Inserito da: desperados - 1 Marzo , 2007, 07:30:16 bho, di C praticamente non ho fatto nulla, ma:
n=leggi_imp(fpi,impiegati); non mi torna... non mi pare tu abbia inizializzato impiegati... a meno che non lo faccia la funzione. o volevi passare il vettore? non credo nemmeno questo... Titolo: [HELP] Programmazione C Inserito da: Diflucane - 1 Marzo , 2007, 10:18:33 eh...
allora quando il mio amico tenta di compilare gli vengono dati una 20ina di errori. e' l'unica cosa che so....avrei provato anche io ma non ho un compilatore e sto tornando a casa tardi tutte le sere.. @ desp io penso che la funzione voglia passare il vettore...se così fosse dove si cela il problema? Titolo: [HELP] Programmazione C Inserito da: keiske - 1 Marzo , 2007, 10:40:48 Dico una cosa, magari è una cazzata, ma sono state dichiarate due variabili "stipendio lordo" e "stipendio netto" con lo spazio tra le due parole... non mi sembra una sintassi corretta quella... :blink:
Titolo: [HELP] Programmazione C Inserito da: Diflucane - 1 Marzo , 2007, 11:24:51 hai ragione, quello (a quanto ricordo) è di sicuro un errore :+1:
Sotto con gli altri (io intanto sto cercando qualche compilatore per provarlo) Titolo: [HELP] Programmazione C Inserito da: Jintetsu - 3 Marzo , 2007, 12:02:25 Citazione if(P[j].livello=Q.livello) Penso che serva il doppio uguale per il confronto, utilizzandone uno solo è una assegnazione :P |