g1x Geschrieben 16. Oktober 2011 Geschrieben 16. Oktober 2011 Hey, bin seit 01. September FIAE und habe in der Schule C# - habe leider bereits schon die ein oder anderen Probleme beim Versuch zu programmieren Ich möchte gerne eine Konsolenanwendung schreiben, welche als erstes nach einer Kundenkarte fragt. Wenn ja, dann bekommt man auf die Endsumme 5% Rabatt. Wenn nein, dann bekommt man kein Rabatt und er rechnet die Zwischensummen normal zusammen und gibt einen Endbetrag aus. Nach der Frage, sollte man so viel beliebige Zahlen wie möglich eingeben können, welche addiert werden, bis man eine bestimmt Ziffer eingibt. Hier mal mein Anfang: namespace ConsoleApplication2 { class Program { static void Main(string[] args) { Console.WriteLine("#######################"); Console.WriteLine("## Kassenapplikation ##"); //Erstellen der Überschrift "Kassenapplikation" Console.WriteLine("#######################"); Console.WriteLine(); //Leere Zeile aus Übersichtszwecken Console.WriteLine("Besitzen Sie eine Kundenkarte? (ja/nein)"); string eingabe = Console.ReadLine(); //Erstellen des Strings "Eingabe" & Zuweisen und Lesen der Benutzereingabe if (eingabe == "ja") //if-Bedingung mit entsorechenden Anweisungen Console.WriteLine("Bitte geben Sie den Betrag ein: "); else Console.WriteLine("Bitte geben Sie den Betrag ein: "); Console.ReadLine(); Wäre echt dankbar für eure Hilfe! Grüße g1x Zitieren
127.0.0.1 Geschrieben 16. Oktober 2011 Geschrieben 16. Oktober 2011 ...und wo ist jetzt dein problem genau? Zitieren
lilith2k3 Geschrieben 16. Oktober 2011 Geschrieben 16. Oktober 2011 ...und wo ist jetzt dein problem genau? Dass Du nicht hingehst und den Code zuende geschrieben hast Zitieren
Sacaldur Geschrieben 19. Oktober 2011 Geschrieben 19. Oktober 2011 Dass Du nicht hingehst und den Code zuende geschrieben hast also wirklich! wie kannst du nur! =O du solltest zwar überprüfen, ob "ja" eingegeben wurde, allerdings wäre es vielleicht besser, wenn du es in einer Variable zwischenspeicherst und nach der Eingabe der ganzen Daten zur Berechnung verwendest so wiederholst du nicht den gleichen Code immer und immer wieder, das Programm wird übersichtlicher und lässt sich dadurch leichter lesen und bearbeiten (DRY - Don't Repeat Yourself!) das eigentlich Problem, was du anscheinend hast, ist, dass du nicht weißt, was du machen musst was in der Aufgabe genannt wurde, ist, dass man immer wieder einzelne Beträge eingeben können soll und das auch in beliebiger Anzahl somit müsste dir sofort klar sein, dass dafür nur eine Schleife in Frage kommt (keine Zählschleife/for-Schleife und keine anderne Kontrollstrukturen, wie Fallunterscheidungen/if's oder switch's) in jedem Schleifendurchlauf muss der Benutzer gebeten werden, einen Betrag einzugeben, der dann in einer Variablen gespeichert wird sollte die ganz bestimmte Zahl eingegeben werden, die das Ende kennzeichnet, brichst du aus der Schleife aus eigentlich solltest du alleine auf diese Lösung kommen, weshalb dir, auch wenn du eine richtige Frage formuliert hättest, vermutlich niemand geholfen hätte den Code zu dem, was ich jetzt geschrieben habe, musst du aber alleine schreiben, da auch ich dir da nicht mehr helfen werde immerhin musst du eine solche Übung später meistern können, ohne jemanden deswegen fragen zu müssen (allerdings dürftest du das Schreiben des Codes jetzt schaffen, da du die sprachlichen Elemente dafür größtenteils schon verwendet hast) Zitieren
el_pollo_diablo Geschrieben 28. Oktober 2011 Geschrieben 28. Oktober 2011 Uiuiuiui *schiebt der Katze vorsichtig die Krallen wieder ein* Gerade am Anfang ist es immer gut, wenn man das Problem in Ruhe durchdenkt und sich einen schriftlichen Ablaufplan (Grafik mit vielen Formen und Pfeilen/Strichen) erstellt. Hierbei gilt immer: Focus on function not form. Natürlich sind solche Darstellungen DINitisiert oder Schlimmeres, aber das lernst Du irgendwann später in Deiner Ausbildung. Die entstehende Grafik trägt enorm zum Verständnis des Problems und zum Auffinden von etwailigen Denkfehlern bei... Frei nach dem Motto: Ein Bild sagt mehr als tausend Worte. Wenn man dann irgendwann mit dem Ergebnis zufrieden ist, geht es an die Umsetzung in eine Programmiersprache. Im Idealfall kennt man bereits deren Möglichkeiten und kann dadurch seinen Plan schnell umsetzen. Fast alle Sprachen unterstützen die bereits angesprochenen Schleifen und Kontrollstrukturen, so dass man hier eigentlich nur noch die Schreibweise in Erfahrung bringen muss. Sacaldur hat ja bereits das Problem analysiert und auch erklärt, wie man es lösen würde. Nimm einfach mal die Vorgehensweise und setze die in einen Ablaufplan um. Diesen kannst Du ja mit evtl. auftretenden Verständnisproblemen hier posten und hoffen, dass die Katze ihn nicht gleich zerfetzt *rennt schnell weg und versteckt sich* Zitieren
matdog89 Geschrieben 28. Oktober 2011 Geschrieben 28. Oktober 2011 die selbe aufgabe hattn wir auch ales erstes beim programmieren in der BS. Schein standard zu sein ^^ Tipp: Nutz mal das Galileo openbook für c# das hat mir sehr sehr viel geholfen Zitieren
g1x Geschrieben 28. Oktober 2011 Autor Geschrieben 28. Oktober 2011 oO man wir ja wohl Fragen dürfen... Habe das Programm erweitert und das Ganze folgendermaßen gelöst - äußerst easy: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication3 { class Program { static void Main(string[] args) { double zwischensumme = 1; double endsumme = 0; double eingabe; Console.WriteLine("#####################"); Console.WriteLine("##Kassenapplikation##"); Console.WriteLine("#####################"); Console.WriteLine(""); Console.WriteLine("Besitzen Sie eine Kundenkarte? (1=ja/2=nein)"); eingabe = Convert.ToDouble(Console.ReadLine()); while (eingabe != 1 & eingabe != 2) { Console.WriteLine("Besitzen Sie eine Kundenkarte? (1=ja/2=nein)"); eingabe = Convert.ToDouble(Console.ReadLine()); } if (eingabe == 1) { endsumme = endsumme * 0.95; } while (zwischensumme != 0) { Console.WriteLine("Bitte geben Sie die entsprechende Summe ein: "); zwischensumme = Convert.ToDouble(Console.ReadLine()); endsumme += zwischensumme; } Console.WriteLine("Ihre zu zahlende Gesamtsumme beträgt:" + endsumme); Console.WriteLine("Wie möchten Sie den Betrag bezahlen? Wählen Sie eine der folgenden Möglichkeiten aus:"); Console.WriteLine("Barzahlung (1)"); Console.WriteLine("EC-Karte (2)"); Console.WriteLine("Kreditkarte (3)"); double eingabe2 = Convert.ToDouble(Console.ReadLine()); while (eingabe2 != 1 & eingabe2 != 2 & eingabe2 != 3) { Console.WriteLine("Bitte überprüfen Sie Ihre Eingabe nocheinmal!"); eingabe2 = Convert.ToDouble(Console.ReadLine()); } if (eingabe2 == 1) { Console.WriteLine("Sie wollen also Bar bezahlen? - Vielen Dank!"); } if (eingabe2 == 2) { Console.WriteLine("Sie wollen also per EC-Karte zahlen? - Dankeschön!"); Console.WriteLine("Bitte geben Sie den PIN-Code ein:"); double pincodeec = Convert.ToDouble(Console.ReadLine()); Console.WriteLine("Bitte geben Sie den PIN-Code ein zweites mal ein:"); double pincodeec2 = Convert.ToDouble(Console.ReadLine()); if (pincodeec == pincodeec2) { Console.WriteLine("Transaktion war erfolgreich!"); } else { Console.WriteLine("Transaktion konnte nicht durchgeführt werden - Bitte überprüfen Sie Ihre Eingabe!"); Console.WriteLine("Bitte geben Sie den PIN-Code ein:"); pincodeec = Convert.ToDouble(Console.ReadLine()); Console.WriteLine("Bitte geben Sie den PIN-Code ein zweites mal ein:"); pincodeec2 = Convert.ToDouble(Console.ReadLine()); if (pincodeec == pincodeec2) { Console.WriteLine("Transaktion war erfolgreich!"); } if (pincodeec != pincodeec2) { Console.WriteLine("Transaktion konnte erneut nicht durchgeführt werden! - Der Vorgang wurde abgebrochen!"); } } } if (eingabe2 == 3) { Console.WriteLine("Sie wollen also per Kreditkarte zahlen? - Danke!"); Console.WriteLine("Bitte geben Sie den PIN-Code ein:"); double pincodekredit = Convert.ToDouble(Console.ReadLine()); Console.WriteLine("Bitte geben Sie den PIN-Code ein zweites mal ein:"); double pincodekredit2 = Convert.ToDouble(Console.ReadLine()); if (pincodekredit == pincodekredit2) { Console.WriteLine("Transaktion war erfolgreich!"); } else { Console.WriteLine("Transaktion konnte nicht durchgeführt werden - Bitte überprüfen Sie Ihre Eingabe!"); Console.WriteLine("Bitte geben Sie den PIN-Code ein:"); pincodekredit = Convert.ToDouble(Console.ReadLine()); Console.WriteLine("Bitte geben Sie den PIN-Code ein zweites mal ein:"); pincodekredit2 = Convert.ToDouble(Console.ReadLine()); if (pincodekredit == pincodekredit2) { Console.WriteLine("Transaktion war erfolgreich!"); } if (pincodekredit != pincodekredit2) { Console.WriteLine("Transaktion konnte erneut nicht durchgeführt werden! - Der Vorgang wurde abgebrochen!"); } } Console.ReadLine(); } } } } Unter anderem hab ich heute meine Klassenarbeit zurückbekommen - und siehe da 1,2 - man muss sich nur mit der Thematik außeinandersetzen. Zitieren
Sacaldur Geschrieben 31. Oktober 2011 Geschrieben 31. Oktober 2011 Uiuiuiui *schiebt der Katze vorsichtig die Krallen wieder ein* war das, was ich geschrieben habe, denn so schlimm? (es ist ja so lange her, dass ich das geschrieben habe... x) ) ich hätte mich vielleicht ein wenig mehr in die Zeit versetzen sollen, als ich mit dem Programmieren angefangen habe... und eigentlich wollte ich eher aussagen, dass du das später, wenn du mehr Erfahrungen in Sachen Programmierung gesammelt hast, automatisch das von mir beschriebene machst es ist also nicht so schlimm, dass du nicht sofort auf den Lösungsweg gekommen bist (und ich bitte um Entschuldigung für die doch ... ungünstige Formulierung) el_pollo hat einen guten Ansatz gegeben: für das, was du programmieren willst/sollst kannst du dir eine grafische Ansicht machen, damit du eine Übersicht hast, was dein Programm genau machen muss da das völlig unabhängig von der Programmiersprache läuft, ist die Erstellung dieser Darstellung wesentlich einfacher auch das Implementieren der Darstellung sollte dann sehr einfach sein falls du es noch nicht gemacht hast, kannst du eine solche Darstellung für den Code jetzt noch anfertigen wie el_pollo schon geschrieben hat, gibt es bereits standardisierte Darstellungsformen, die ihr in der Berufsschule aber noch als Thema haben werdet ... und hoffen, dass die Katze ihn nicht gleich zerfetzt *rennt schnell weg und versteckt sich* @el_pollo: du solltest dich schon ein wenig mehr in Acht nehmen, denn das ist ein Kater! ein _KATER_! meintest du mit "DINisiert" sowas wie "von der DIN normiert" (oder allgemein "normiert")? @g1x: der Code den du geschrieben hast, sieht schon gut aus wird die Endsumme denn richtig berechnet, wenn eine Kundenkarte vorhanden ist? die Variablennamen sind schon recht gut gewählt, da sie ihren Zweck erkennen lassen (wie endsumme oder eingabe) allerdings meine ich behaupten zu können, dass Variablennamen mit einer Nummerierung (eingabe, eingabe2) sich auch durch andere Namen vermeiden lassen in dem Fall scheint es, als wäre die 2. Variable nicht notwendig, da die 1. weiter verwendet werden könnte allerdings sind das vorerst Feinheiten, die noch nicht so relevant sind Zitieren
el_pollo_diablo Geschrieben 1. November 2011 Geschrieben 1. November 2011 @Sacaldur, den Kater: Generell fand ich Deinen Text nicht so schlimm, wollte aber einfach die Anspannung aus dem Thread entfernen und verhindern, dass ein Neuling schon vor Halloween Saures bekommt :-) Mit "DINisiert" habe ich den, zugegeben plumpen, Versuch unternommen kurz vor Jahresende noch schnell ein Buzzwort und/oder Unwort des Jahres zu generieren... Zitieren
g1x Geschrieben 1. November 2011 Autor Geschrieben 1. November 2011 @Sacaldur: die Endsumme wird richtig berechnet (also es werden bei vorhandener Kundenkarte immer 5% Rabatt abgezogen und demnach auch ausgegeben). Die Variablennamen hätte ich sorgfältiger auswählen können, da man irgendwann den Überblick verliert Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.