Problemi con un programma scritto in c... uffa...

di il
4 risposte

Problemi con un programma scritto in c... uffa...

Ho scritto questo programma in c ma non me lo esegue. mi da errori sulle operazioni algebriche, tipo spese.totali=speset..... perchè???
----------------------------------------------------------------

*Programma di gestione ore e spese per l'attività di un tecnico,
inizio scrittura 13 ottobre 2004, ultima modifica 26 ottobre 2004*/

#include <stdio.h>
#define OreOrdinarie=8;
#define OreStraordinarie=1;
#define CostoOrdinario=7.65;
#define CostoStraordinario=11.50;
#define CostoRecupero=11.50;


typedef struct
{
int OreRecupero;
int OreTot;
}Ore;

typedef struct
{
float Materiali;
float Pranzi;
float Parcheggi;
float SpeseTot;
}Spese;

typedef struct
{
float GuadagnoOrdinario;
float GuadagnoStraordinario;
float GuadagnoRecupero;
float GuadagnoTot;
}Guadagno;

int Anno;
int Mese;
int Giorno;
float Acconti;
float SpeseVere;
Ore OreTotali;
Spese SpeseTotali;
Guadagno GuadagnoTotale;

main() /*inizio programma visto dall'utente*/
{
char c;
printf("Buonasera Signore..., prema invio per continuare!");
scanf("%c", &c);
printf("Inserisca l'anno\n");
scanf("%d", &Anno);
while(Anno<2004 || 2007>Anno)
{
printf("La data è errata: Inserisca nuovamente l'anno");
scanf("%d", &Anno);
}
printf("Inserisca il mese\n");
scanf("%d", &Mese);
while(Mese<01 || Mese>12)
{
printf("La data è errata: Inserisca nuovamente il mese");
scanf("%d", &Mese);
}
printf("Inserisca il giorno\n");
scanf("%d", &Giorno);
while(Giorno<01 || Giorno>31)
{
printf("La data è errata: Inserisca nuovamente il giorno");
scanf("%d", &Mese);
}
printf("Inserisca il numero di ore effettuate complessivamente oggi");
scanf("%d",&OreTotali.OreTot);

while(OreTotali.OreTot>24)
{
printf("Le ore sono errate: inserisca nuovamente le ore");
scanf("%d", &OreTotali.OreTot);
}

OreTotali.OreRecupero = OreTotali.OreTot - OreOrdinarie - OreStraordinarie;

printf ("Inserisca le spese sostenute per l'acquisto di materiali");
scanf("%f", &SpeseTotali.Materiali);

printf ("Inserisca le spese per il pranzo");
scanf("%f", &SpeseTotali.Pranzi);

while (SpeseTotali.Pranzi>12)
{
printf("Le spese per il pranzo sono errate: Il rimborso per un pranzo non supera i 12€. Inserisca nuovamente le spese");
scanf("%f", &SpeseTotali.Pranzi);
}
printf ("Inserisca spese per parcheggi");
scanf("%f", &SpeseTotali.Parcheggi);

SpeseTotali.SpeseTot = SpeseTotali.Materiali + SpeseTotali.Pranzi + SpeseTotali.Parcheggi;

printf("Inserisca gli acconti ricevuti");
scanf("%f", &Acconti);
/*riepilogo dei dati inseriti*/
printf ("Riepilogo dei dati inseriti oggi:\n");
printf ("Oggi %d %d %d ha effettuato %d ore,\n tra cui %d ore ordinarie,\n %d ore straordinarie, \n e %d ore di recupero", OreTotali.OreTot, OreOrdinarie, OreStraordinarie, OreTotali.OreRecupero);
printf ("Ha sostenuto %f € di spese,\n tra cui %f € di materiali,\n %f € di pranzi,\n e %f € di parcheggi", SpeseTotali.SpeseTot, SpeseTotali.Materiali, SpeseTotali.Pranzi, SpeseTotali.Parcheggi);
printf ("Ha ricevuto %f € di acconti\n\n\n\n\n", Acconti);

if(Acconti>SpeseTotali.SpeseTot)
{
SpeseVere = Acconti - SpeseTotali.SpeseTot;
printf("Detraendo le spese, ha ancora %f € di acconti a disposizione\n", SpeseVere);
}
else if(Acconti<SpeseTotali.SpeseTot)
{
SpeseVere = SpeseTotali.SpeseTot - Acconti;
printf("Detraendo gli acconti, le spese di oggi ammontano a %f\n", SpeseVere);
}
else
{
SpeseVere = SpeseTotali.SpeseTot - Acconti;
printf("Gli acconti coprono tutte le spese\n");
}

GuadagnoTotale.GuadagnoOrdinario = CostoOrdinario * OreOrdinarie;
GuadagnoTotale.GuadagnoStraordinario = CostoStraordinario * OreStraordinarie;
GuadagnoTotale.GuadagnoRecupero = CostoRecupero * OreTotali.OreRecupero;
GuadagnoTotale.GuadagnoTot = GuadagnoTotale.GuadagnoOrdinario + GuadagnoTotale.GuadagnoStraordinario + GuadagnoTotale.GuadagnoRecupero + Acconti - SpeseTotali.SpeseTot;

{
char c, exit;
printf("In conclusione oggi ha guadagnato %f € !\n", GuadagnoTotale.GuadagnoTot);
printf("Calcolo del lavoro effettuato oggi terminato. Prema u per uscire\n");
scanf("%c", &exit);


while(exit != 'u');
{
printf("Il tasto premuto non è valido, prema u per uscire");
scanf("%c", &exit);
}

printf("A domani Signor ..., buona serata!");
scanf("%c", &c);
return;
}

}
---------------------------------------------------------------

21 E:\esame.c:6 [Warning] ISO C requires whitespace after the macro name
*Programma di gestione ore e spese per l'attività di un tecnico,
inizio scrittura 13 ottobre 2004, ultima modifica 26 ottobre 2004*/

#include <stdio.h>
#define OreOrdinarie=8;
#define OreStraordinarie=1;
#define CostoOrdinario=7.65;
#define CostoStraordinario=11.50;
#define CostoRecupero=11.50;


typedef struct
{
int OreRecupero;
int OreTot;
}Ore;

typedef struct
{
float Materiali;
float Pranzi;
float Parcheggi;
float SpeseTot;
}Spese;

typedef struct
{
float GuadagnoOrdinario;
float GuadagnoStraordinario;
float GuadagnoRecupero;
float GuadagnoTot;
}Guadagno;

int Anno;
int Mese;
int Giorno;
float Acconti;
float SpeseVere;
Ore OreTotali;
Spese SpeseTotali;
Guadagno GuadagnoTotale;

main() /*inizio programma visto dall'utente*/
{
char c;
printf("Buonasera Signore..., prema invio per continuare!");
scanf("%c", &c);
printf("Inserisca l'anno\n");
scanf("%d", &Anno);
while(Anno<2004 || 2007>Anno)
{
printf("La data è errata: Inserisca nuovamente l'anno");
scanf("%d", &Anno);
}
printf("Inserisca il mese\n");
scanf("%d", &Mese);
while(Mese<01 || Mese>12)
{
printf("La data è errata: Inserisca nuovamente il mese");
scanf("%d", &Mese);
}
printf("Inserisca il giorno\n");
scanf("%d", &Giorno);
while(Giorno<01 || Giorno>31)
{
printf("La data è errata: Inserisca nuovamente il giorno");
scanf("%d", &Mese);
}
printf("Inserisca il numero di ore effettuate complessivamente oggi");
scanf("%d",&OreTotali.OreTot);

while(OreTotali.OreTot>24)
{
printf("Le ore sono errate: inserisca nuovamente le ore");
scanf("%d", &OreTotali.OreTot);
}

OreTotali.OreRecupero = OreTotali.OreTot - OreOrdinarie - OreStraordinarie;

printf ("Inserisca le spese sostenute per l'acquisto di materiali");
scanf("%f", &SpeseTotali.Materiali);

printf ("Inserisca le spese per il pranzo");
scanf("%f", &SpeseTotali.Pranzi);

while (SpeseTotali.Pranzi>12)
{
printf("Le spese per il pranzo sono errate: Il rimborso per un pranzo non supera i 12€. Inserisca nuovamente le spese");
scanf("%f", &SpeseTotali.Pranzi);
}
printf ("Inserisca spese per parcheggi");
scanf("%f", &SpeseTotali.Parcheggi);

SpeseTotali.SpeseTot = SpeseTotali.Materiali + SpeseTotali.Pranzi + SpeseTotali.Parcheggi;

printf("Inserisca gli acconti ricevuti");
scanf("%f", &Acconti);
/*riepilogo dei dati inseriti*/
printf ("Riepilogo dei dati inseriti oggi:\n");
printf ("Oggi %d %d %d ha effettuato %d ore,\n tra cui %d ore ordinarie,\n %d ore straordinarie, \n e %d ore di recupero", OreTotali.OreTot, OreOrdinarie, OreStraordinarie, OreTotali.OreRecupero);
printf ("Ha sostenuto %f € di spese,\n tra cui %f € di materiali,\n %f € di pranzi,\n e %f € di parcheggi", SpeseTotali.SpeseTot, SpeseTotali.Materiali, SpeseTotali.Pranzi, SpeseTotali.Parcheggi);
printf ("Ha ricevuto %f € di acconti\n\n\n\n\n", Acconti);

if(Acconti>SpeseTotali.SpeseTot)
{
SpeseVere = Acconti - SpeseTotali.SpeseTot;
printf("Detraendo le spese, ha ancora %f € di acconti a disposizione\n", SpeseVere);
}
else if(Acconti<SpeseTotali.SpeseTot)
{
SpeseVere = SpeseTotali.SpeseTot - Acconti;
printf("Detraendo gli acconti, le spese di oggi ammontano a %f\n", SpeseVere);
}
else
{
SpeseVere = SpeseTotali.SpeseTot - Acconti;
printf("Gli acconti coprono tutte le spese\n");
}

GuadagnoTotale.GuadagnoOrdinario = CostoOrdinario * OreOrdinarie;
GuadagnoTotale.GuadagnoStraordinario = CostoStraordinario * OreStraordinarie;
GuadagnoTotale.GuadagnoRecupero = CostoRecupero * OreTotali.OreRecupero;
GuadagnoTotale.GuadagnoTot = GuadagnoTotale.GuadagnoOrdinario + GuadagnoTotale.GuadagnoStraordinario + GuadagnoTotale.GuadagnoRecupero + Acconti - SpeseTotali.SpeseTot;

{
char c, exit;
printf("In conclusione oggi ha guadagnato %f € !\n", GuadagnoTotale.GuadagnoTot);
printf("Calcolo del lavoro effettuato oggi terminato. Prema u per uscire\n");
scanf("%c", &exit);


while(exit != 'u');
{
printf("Il tasto premuto non è valido, prema u per uscire");
scanf("%c", &exit);
}

printf("A domani Signor ..., buona serata!");
scanf("%c", &c);
return;
}

}
*Programma di gestione ore e spese per l'attività di un tecnico,
inizio scrittura 13 ottobre 2004, ultima modifica 26 ottobre 2004*/

#include <stdio.h>
#define OreOrdinarie=8;
#define OreStraordinarie=1;
#define CostoOrdinario=7.65;
#define CostoStraordinario=11.50;
#define CostoRecupero=11.50;


typedef struct
{
int OreRecupero;
int OreTot;
}Ore;

typedef struct
{
float Materiali;
float Pranzi;
float Parcheggi;
float SpeseTot;
}Spese;

typedef struct
{
float GuadagnoOrdinario;
float GuadagnoStraordinario;
float GuadagnoRecupero;
float GuadagnoTot;
}Guadagno;

int Anno;
int Mese;
int Giorno;
float Acconti;
float SpeseVere;
Ore OreTotali;
Spese SpeseTotali;
Guadagno GuadagnoTotale;

main() /*inizio programma visto dall'utente*/
{
char c;
printf("Buonasera Signore..., prema invio per continuare!");
scanf("%c", &c);
printf("Inserisca l'anno\n");
scanf("%d", &Anno);
while(Anno<2004 || 2007>Anno)
{
printf("La data è errata: Inserisca nuovamente l'anno");
scanf("%d", &Anno);
}
printf("Inserisca il mese\n");
scanf("%d", &Mese);
while(Mese<01 || Mese>12)
{
printf("La data è errata: Inserisca nuovamente il mese");
scanf("%d", &Mese);
}
printf("Inserisca il giorno\n");
scanf("%d", &Giorno);
while(Giorno<01 || Giorno>31)
{
printf("La data è errata: Inserisca nuovamente il giorno");
scanf("%d", &Mese);
}
printf("Inserisca il numero di ore effettuate complessivamente oggi");
scanf("%d",&OreTotali.OreTot);

while(OreTotali.OreTot>24)
{
printf("Le ore sono errate: inserisca nuovamente le ore");
scanf("%d", &OreTotali.OreTot);
}

OreTotali.OreRecupero = OreTotali.OreTot - OreOrdinarie - OreStraordinarie;

printf ("Inserisca le spese sostenute per l'acquisto di materiali");
scanf("%f", &SpeseTotali.Materiali);

printf ("Inserisca le spese per il pranzo");
scanf("%f", &SpeseTotali.Pranzi);

while (SpeseTotali.Pranzi>12)
{
printf("Le spese per il pranzo sono errate: Il rimborso per un pranzo non supera i 12€. Inserisca nuovamente le spese");
scanf("%f", &SpeseTotali.Pranzi);
}
printf ("Inserisca spese per parcheggi");
scanf("%f", &SpeseTotali.Parcheggi);

SpeseTotali.SpeseTot = SpeseTotali.Materiali + SpeseTotali.Pranzi + SpeseTotali.Parcheggi;

printf("Inserisca gli acconti ricevuti");
scanf("%f", &Acconti);
/*riepilogo dei dati inseriti*/
printf ("Riepilogo dei dati inseriti oggi:\n");
printf ("Oggi %d %d %d ha effettuato %d ore,\n tra cui %d ore ordinarie,\n %d ore straordinarie, \n e %d ore di recupero", OreTotali.OreTot, OreOrdinarie, OreStraordinarie, OreTotali.OreRecupero);
printf ("Ha sostenuto %f € di spese,\n tra cui %f € di materiali,\n %f € di pranzi,\n e %f € di parcheggi", SpeseTotali.SpeseTot, SpeseTotali.Materiali, SpeseTotali.Pranzi, SpeseTotali.Parcheggi);
printf ("Ha ricevuto %f € di acconti\n\n\n\n\n", Acconti);

if(Acconti>SpeseTotali.SpeseTot)
{
SpeseVere = Acconti - SpeseTotali.SpeseTot;
printf("Detraendo le spese, ha ancora %f € di acconti a disposizione\n", SpeseVere);
}
else if(Acconti<SpeseTotali.SpeseTot)
{
SpeseVere = SpeseTotali.SpeseTot - Acconti;
printf("Detraendo gli acconti, le spese di oggi ammontano a %f\n", SpeseVere);
}
else
{
SpeseVere = SpeseTotali.SpeseTot - Acconti;
printf("Gli acconti coprono tutte le spese\n");
}

GuadagnoTotale.GuadagnoOrdinario = CostoOrdinario * OreOrdinarie;
GuadagnoTotale.GuadagnoStraordinario = CostoStraordinario * OreStraordinarie;
GuadagnoTotale.GuadagnoRecupero = CostoRecupero * OreTotali.OreRecupero;
GuadagnoTotale.GuadagnoTot = GuadagnoTotale.GuadagnoOrdinario + GuadagnoTotale.GuadagnoStraordinario + GuadagnoTotale.GuadagnoRecupero + Acconti - SpeseTotali.SpeseTot;

{
char c, exit;
printf("In conclusione oggi ha guadagnato %f € !\n", GuadagnoTotale.GuadagnoTot);
printf("Calcolo del lavoro effettuato oggi terminato. Prema u per uscire\n");
scanf("%c", &exit);


while(exit != 'u');
{
printf("Il tasto premuto non è valido, prema u per uscire");
scanf("%c", &exit);
}

printf("A domani Signor ..., buona serata!");
scanf("%c", &c);
return;
}

}
----------------------------------------------------------------
Questi sono gli errori che mi da con i rispettivi numeri di riga... perchè??????????????????????????'' Vi prego aiutatemi...


Maldengo
----------------------------------------------------------------
21 E:\esame.c:6 [Warning] ISO C requires whitespace after the macro name
25 E:\esame.c:7 [Warning] ISO C requires whitespace after the macro name
23 E:\esame.c:8 [Warning] ISO C requires whitespace after the macro name
27 E:\esame.c:9 [Warning] ISO C requires whitespace after the macro name
22 E:\esame.c:10 [Warning] ISO C requires whitespace after the macro name
E:\esame.c In function `main':
79 E:\esame.c parse error before '=' token
101 E:\esame.c parse error before '=' token
121 E:\esame.c parse error before '=' token
122 E:\esame.c parse error before '=' token
123 E:\esame.c parse error before '=' token
123 E:\esame.c invalid type argument of `unary *'
----------------------------------------------------------------

Grazie in anticipo

Maldengo

4 Risposte

Devi accedere o registrarti per scrivere nel forum
4 risposte