Problem mit einem C-Programm (11. Klasse)
-
Lies die mehrwertsteuer mit scanf ein. Dazu ist es da.
Die Zeichenliterale musst du dann noch in Zahlenliterale umändern. ('7' zu 7)
-
Hab die "Literale" schon weggenommen, dann erkennt er es nichtmehr und die 7 geht auch nichtmehr.
-
allied schrieb:
Hab die "Literale" schon weggenommen, dann erkennt er es nichtmehr und die 7 geht auch nichtmehr.
Das etwas lockere "umändern" bedeutet nicht "weglassen" sondern eher eine Funktion aufrufen, die sowas macht. Hier käme z.B. atoi() infrage.
-
merano schrieb:
Hier käme z.B. atoi() infrage.
Aber nicht, wenn er die Zeichen mit getchar einliest.
@allied
getchar liest einzelne Zeichen ein. Und das Zeichen das die 7 darstellt ('7') hat einen anderen Wert als 7.Daher ist getchar die falsche Funktion dafür. Vor allem, weil die 19 auch aus zwei Zeichen besteht.
DirkB schrieb:
Lies die mehrwertsteuer mit scanf ein.
Sonst zeig nochmal deinen aktuellen Code.
-
scanf("%d",&mehrwertsteuer);fflush(stdin);
jetzt greift aber der switch nichtmehr ein und es nimmt jeden prozentsatz
und ausrechnen tut es mir das ergebnis immer noch nicht
-
Das wird nur noch ein rumgerate.
DirkB schrieb:
Sonst zeig nochmal deinen aktuellen Code.
-
Also er nimmt jetzt die 7 und die 19. (:
Wenn ich <iostream> rausnehme geht das system("Pause") aber nichtmehr
#include "targetver.h" #include <stdio.h> #include <tchar.h> #include <conio.h> #include <iostream> int main(void) { //lokale Variablen definieren int mehrwertsteuer; //Festkommazahl bzw. Ganzzahldatentyp float ergebnismehrwertsteuer; float ergebnisnettowert; float bruttowert; //Gleitkommazahlen bzw. Fließkommadatentypen unsigned char weiter; //Zeichendatentyp für Tastencodes int fehler; //0:kein Fehler, 1:Fehler 1, 2:Fehler 2 //BS <- Überschrift, Beschreibung //BS...Bildschirm printf("\nB R U T T O Z U N E T T O R E C H N E R Version 1.0 von J.-P. Meinert\n"); printf("\n\rDer Rechner verarbeitet zwei Flie%ckommazahlen mit",225); printf("\n\rden Mehrwertsteuers%ctzen 7%c und 19%c.",132,37,37); printf("\n\rAls Erstes geben Sie den Bruttowert ein, danach den gew%cnschten Prozentsatz.",129); printf("\n\rAnschlie%cend wird das Ergebnis angezeigt.",225); printf("\n\rAlle Eingaben sind mit ENTER zu best%ctigen.",132); printf("\n\rAnsonsten wird das Programm beendet.\n"); do { // BS <- "Bruttowert: " printf("\n\tBruttowert: "); //operand1 <- TASTATUR scanf("%d",&bruttowert);fflush(stdin); //Einlesen und Tastaturpuffer löschen //BS <- "Mehrwertsteuersatz 7% oder 19%: " printf("\t\nMehrwertsteuersatz 7%c oder 19%c: ",37,37); do { //mehrwertsteuer <- TASTATUR //!!!Fehleingaben abfangen scanf("%d",&mehrwertsteuer);fflush(stdin); }while(!((mehrwertsteuer==7) || (mehrwertsteuer==19))); //Mehrfachauswahl zur Verarbeitung der Rechenoperation switch(mehrwertsteuer) { case 7: //Mehrwertsteuer 7% ergebnismehrwertsteuer=(float)bruttowert / (int)107 * (int)7; ergebnisnettowert=(float)bruttowert / (int)107 * (int)100; break; case 19: //Mehrwertsteuer 19% ergebnismehrwertsteuer=(float)bruttowert / (int)119 * (int)19; ergebnisnettowert=(float)bruttowert / (int)119 * (int)100; break; } printf("\n\tErgebnis Mehrwertsteuer: %.2f",ergebnismehrwertsteuer); printf("\n\tErgebnis Nettowert: %.2f",ergebnisnettowert); //BS-Ausgabe printf("\n\n\tUm eine neue Rechnung zu starten, Taste ENTER dr%ccken, sonst beenden.\n",129); //weiter <- Tastatur weiter=getch();fflush(stdin); //Tastaturpuffer löschen printf("\n\t---------------------------------------------------------------------\n"); }while(weiter==13); system("PAUSE"); return 0; }
-
Die Mehrwertsteuer hast du jetzt als Zahlenwert. Da brauchst du das
switch
gar nicht.ergebnismehrwertsteuer = bruttowert / (100+mehrwertsteuer) * mehrwertsteuer; ergebnisnettowert = bruttowert / (100+mehrwertsteuer) * 100;
Die casts brauchst du da auch nicht, da sie nichts verändert haben.
(und bruttowert auch schon ein Fleißkommatyp ist)iostream
ist übrigens C++. Du programmierst aber C.Und
system
brauchst du nicht. Führe das Programm in der Konsole (CMD-Fenster) aus und es geht.
Für C istsystem
in derstdlib.h
-
Das macht auf jedenfall Sinn
Aber ausrechnen tut es immer noch nicht
#include "targetver.h" #include <stdio.h> #include <tchar.h> #include <conio.h> int main(void) { //lokale Variablen definieren int mehrwertsteuer; //Festkommazahl bzw. Ganzzahldatentyp float ergebnismehrwertsteuer; float ergebnisnettowert; float bruttowert; //Gleitkommazahlen bzw. Fließkommadatentypen unsigned char weiter; //Zeichendatentyp für Tastencodes int fehler; //0:kein Fehler, 1:Fehler 1, 2:Fehler 2 //BS <- Überschrift, Beschreibung //BS...Bildschirm printf("\nB R U T T O Z U N E T T O R E C H N E R Version 1.0 von J.-P. Meinert\n"); printf("\n\rDer Rechner verarbeitet zwei Flie%ckommazahlen mit",225); printf("\n\rden Mehrwertsteuers%ctzen 7%c und 19%c.",132,37,37); printf("\n\rAls Erstes geben Sie den Bruttowert ein, danach den gew%cnschten Prozentsatz.",129); printf("\n\rAnschlie%cend wird das Ergebnis angezeigt.",225); printf("\n\rAlle Eingaben sind mit ENTER zu best%ctigen.",132); printf("\n\rAnsonsten wird das Programm beendet.\n"); do { // BS <- "Bruttowert: " printf("\n\tBruttowert: "); //operand1 <- TASTATUR scanf("%d",&bruttowert);fflush(stdin); //Einlesen und Tastaturpuffer löschen //BS <- "Mehrwertsteuersatz 7% oder 19%: " printf("\t\nMehrwertsteuersatz 7%c oder 19%c: ",37,37); do { //mehrwertsteuer <- TASTATUR //!!!Fehleingaben abfangen scanf("%d",&mehrwertsteuer);fflush(stdin); }while(!((mehrwertsteuer==7) || (mehrwertsteuer==19))); ergebnismehrwertsteuer = bruttowert / (100+mehrwertsteuer) * mehrwertsteuer; ergebnisnettowert = bruttowert / (100+mehrwertsteuer) * 100; printf("\n\tErgebnis Mehrwertsteuer: %.2f",ergebnismehrwertsteuer); printf("\n\tErgebnis Nettowert: %.2f",ergebnisnettowert); //BS-Ausgabe printf("\n\n\tUm eine neue Rechnung zu starten, Taste ENTER dr%ccken, sonst beenden.\n",129); //weiter <- Tastatur weiter=getch();fflush(stdin); //Tastaturpuffer löschen printf("\n\t---------------------------------------------------------------------\n"); }while(weiter==13); return 0; }
-
Du bist ein unbelehrbarer Noob.
Dein Code ist genauso Schrott wie zu Beginn.
Du hast alle hier gegebenen Hinweise nicht beachtet und wunderst dich, dass dein Schrottprogramm nach wie vor nicht läuft.
Ich empfehle allen Hilfestellern hier aus dem Grund, dir nicht weiter zu helfen.
-
Wutz schrieb:
Ich empfehle allen Hilfestellern hier aus dem Grund, dir nicht weiter zu helfen.
Einen noch: Zweite Antwort, dritte Zeile.