Brutto in Netto rechner funktioniert nicht

… richtig!

So folgendes problem ich bin zurzeit dabei die sprache C zu lernen, als kleine Übung habe ich von meinem Vater die Aufgabe bekommen, ein tool zu entwickeln mit dem man Brutto in Netto und anders herum rechnen kann, heißt es rechnet 19% mwst vom Bruttowert ab gibt, den wert aus und zeigt den nettobetrag an. Selbiges macht es beim nettobetrag aber eben anderstrum.
Da das Programm auch von weniger versierten Nutzern verwendet werden soll habe ich mit einem script aus dem netzt den ich angepasst habe, geändert das man anstatt dem
‚.‘ bei einer kommazahl ein ‚,‘ angeben kann um unnötige anrufe zu vermeiden ;D.
aber irgendwie spuckt das Programm dadurch falsche lösungen aus meist weichen sie nur wenige Cent vom richtigen Ergebnis ab (und auch nur wenn ein komma ins spiel kommt), Allerdings kann ich meinen Fehler einfach nicht finden. bitte werft mal einen Blick drauf.

zum script noch ich weiß er ist nicht perfekt und es gibt sogar „goto“ wie gesagt ich bin noch am lernen.

Bitte lösungsvorschläge genau erklären^^

danke.

http://paste2.org/p/1573150

code liegt auf anderer seite um das Format zu wahren

Hallo globus243,
das Problem liegt in der Punkt-Komma-Umwandlung.
C kennt nur die englische Darstellungsformt.
Rechne einfach mit dem Punkt weiter und ändere erst beim Ergebnis den Punkt zum Komma.
Dann wird das auch funktionieren.
Gruß Alfred

Hi, ich habe zwar schon lange kein C mehr programmiert, aber spuckt dir das Programm überhaupt Kommazahlen aus, oder sieht deine Zahl immer so aus xx,00?
(xx = irgendeine Zahl)

bg

Kettex

Rechne einfach mit dem Punkt weiter und ändere erst

das Ding ist ja, ich will das der nutzer das, eingeben kann und soll und nicht den Punkt

nein, aber sobald kommazahlen verwendet werden werden diese falsch ausgegeben heißt das Korrekte ergebnis währe zb: 10,77 mein Programm jedoch gibt 10,64 aus also eine abweichung von 0,13. Das ist aber nicht standart in einem anderen bsp. weicht es um 0,11 ab ich verstehs einfach nicht

Hallo globus243,
lass den Nutzer einen String eingeben. Prüfe, ob das was er eingibt numerisch ist (bis auf Komma). Wandle dann den Punkt in ein Komma, Danach kannst Du rechnen (zuvor in numerisches Format ändern) und das Ergebnis entsprechend Deinen Vorstellungen aufbereiten (Punkt und Komma vertauschen).
Gruß Alfred

Hallo,

ich mach mal zwei Versuche:

  • Warum hast du x als float definiert, wo atof doch double zurückgibt?
  • Probier mal:
    mwst=(double)(x*19)/100;

Und statt dem goto bitte ganz schnell eine
do
{

} while ( );
Konstruktion nutzen!!

Achso, noch zwei Anmerkungen:
Der Teil, der aus dem , einen . macht gehört in eine Funktion! Außerdem hast du bei der Ausgabe einen „.“. DAher kannst du dafür auch noch eine Funktion schreiben.

Hallo globus243,
ich habe dein Code noch nicht compiliert, aber ich habe festgestellt, dass du nach der for-Schleife keine geschweifte Klammer hast. Der Code, der in der for-Schleife stehen soll, muß innerhalb der geschweiften Klammern stehen. Das könnte sehr wohl ein Problem sein, da immer nur die erste Ziffer der Zahl überprüft wird. Da steht aber niemals ein Komma.
Viel Erfolg noch.

Nach meinen Verständnis ist hier das Semikolon
zuviel.

if (zahl[i] == ‚,‘);

Dadurch wird vorgesehene Then-Zweig, d.h.
zahl[i] = ‚.‘;
nicht ausgeführt und x = atof(zahl);
konvertiert nur den ganzzgahligen Anteil,
weil es beim Komma abbricht

Hoi,

So folgendes problem ich bin zurzeit dabei die sprache C zu
lernen, als kleine Übung habe ich von meinem Vater die Aufgabe
bekommen, ein tool zu entwickeln mit dem man Brutto in Netto
und anders herum rechnen kann, heißt es rechnet 19% mwst vom
Bruttowert ab gibt, den wert aus und zeigt den nettobetrag an.
Selbiges macht es beim nettobetrag aber eben anderstrum.
Da das Programm auch von weniger versierten Nutzern verwendet
werden soll habe ich mit einem script aus dem netzt den ich
angepasst habe, geändert das man anstatt dem
‚.‘ bei einer kommazahl ein ‚,‘ angeben kann um unnötige
anrufe zu vermeiden ;D.
aber irgendwie spuckt das Programm dadurch falsche lösungen
aus meist weichen sie nur wenige Cent vom richtigen Ergebnis
ab (und auch nur wenn ein komma ins spiel kommt), Allerdings
kann ich meinen Fehler einfach nicht finden. bitte werft mal
einen Blick drauf.

zum script noch ich weiß er ist nicht perfekt und es gibt

ist die frage noch aktuell, oder bereits gelöst?

greetz, me