Hoffentlich hilft es Dir :
Code:
typedef struct {
double bruttoeinkommen,steuer;
} STEUERPARAMETER;
int steuer_berechnen(STEUERPARAMETER *pSt);
/*
Progressionstufe i hat den Laufindex x, x = i - 1, bei i >= 1
progressionsstufe[x][0] ... Steuerbasis Stufe i
progressionsstufe[x][1] ... Steuersatz Stufe i
*/
#define SPITZENSTEUERSATZ 50.0
double progressionsstufe[][2] = { 3640.0, 31.0 , 14534.0, 41.0 , 29069.0, SPITZENSTEUERSATZ , 0.0, 0.0 };
int main( void )
{
STEUERPARAMETER St;
printf("EinkommensSteuerBerechnungsProgramm von Andreas Schmidberger");
printf("\n\n\nBitte geben Sie ihr BRUTTO Einkommen ein-->");
scanf("%lf",&St.bruttoeinkommen);
if( steuer_berechnen(&St) < 0 )
{ printf("Fehler bei der Steuerberechnung\n"); exit(0); }
printf("Ihre Einkommenssteuer beträgt %.2lf Euro\n"
"Ihr Nettoeinkommen beläuft sich auf %.2lf Euro\n", St.steuer, St.bruttoeinkommen - St.steuer);
return 0;
}
/* Steuer bezogen auf die Progressionstufen berechnen */
int steuer_berechnen(STEUERPARAMETER *pSt)
{
int x;
pSt->steuer = 0.0;
if(pSt->bruttoeinkommen < 0.0) return -1;
for( x = 0 ; ; x++ )
{
if( pSt->bruttoeinkommen <= progressionsstufe[x][0] ) break;
if( progressionsstufe[x][1] == SPITZENSTEUERSATZ )
{
pSt->steuer = pSt->steuer + ((pSt->bruttoeinkommen - progressionsstufe[x][0]) * progressionsstufe[x][1] / 100.0);
break;
}
if( pSt->bruttoeinkommen < progressionsstufe[x+1][0] )
pSt->steuer = pSt->steuer + ((pSt->bruttoeinkommen - progressionsstufe[x][0]) * progressionsstufe[x][1] / 100.0);
else
pSt->steuer = pSt->steuer + ((progressionsstufe[x+1][0] - progressionsstufe[x][0]) * progressionsstufe[x][1] / 100.0);
}
return 0;
}