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