C-Programm Einkommenssteuer berechnung

1 Antwort

Der Code ist etwas schlecht formatiert...

(Hinweis: ich bin kein C-Programmierer und kann auch grad nichts testen, eventuell sind da mehr Fehler drin oder es ist ein anderer Fehler)

Ich tippe mal auf "& steuer". Entweder du möchtest die Zahl printen (ohne "&") oder du willst den Inhalt des Pointers "steuer" haben ("&steuer"). Allerdings macht das keinen Sinn, da "steuer" als *float* deklariert wurde und nicht als Pointer. Das Entfernen von dem "&" sollte dein Problem also beheben.

Ach und ein Tipp beim Programmieren: Wenn du etwas mehr als doppelt schreibst, kannst du es meist vereinfachen. Das kann man auch hier. Beispielsweise ändert sich die Berechnung durch 3 Faktoren:

  1. Ein Faktor bei Kinder (abhängig ob verheiratet oder nicht)
  2. Der Faktor bei Bruttogehalt (abhängig von Bruttogehalt)
  3. Bruttogehalt

Du musst die Formel für die Berechnung nicht jedes mal immer wieder hinschreiben, es reicht, wenn du die definierten Konstanten stattdessen umwandelst in Variablen und diese vorher berechnest:

//Ersten Faktor berechnen
float steuerFaktor;

if(bruttogehalt <= 0) //negatives Gehalt ist möglich??
  steuerFaktor = 0;
else if(bruttogehalt > 0 && bruttogehalt <= 12000)
  steuerFaktor = 0.12;
//...

//Zweiten Faktor berechnen
float kinderFaktor = 0.0;

if(verheiratet)
  kinderFaktor = 0.2;

if(kinder < 0)
{
  printf("Eingabefehler\n");
  return -1; //return 0 bedeutet für gewöhnlich, dass
               kein Fehler aufgetreten ist, ist hier
               allerdings nicht der Fall.
}

//Formel
steuer = bruttogehalt * steuerFaktor *
           (1-(kinderFaktor+kinder*0.1));

printf("%.21f\n", steuer);

return 0;

Das vereinfacht dir die Änderung, falls beispielsweise die Formel sich ändern muss. Außerdem ist die Berechnung der Faktoren transparenter. Zumindest für mich :D

Ist aber halt deine Sache wie du das machst. Der Fehler ist wohl nur das "&" bei Steuer.

DeStRoYYD 
Beitragsersteller
 29.04.2015, 19:47

ich musste des "&" beim printen weg machen danke ^^:D