27. August 200817 j //BMI Ausrechner (Prototyp) #include <stdio.h> int main () { double kg, m; // Definition der Variablen printf("\nBitte geben Sie ihre Koerper-Groeße (in m) ein! \n"); scanf("%3f", &m); // Tast.-Abfrage 1 und Zuweisung (m) (Format fuer 3-stellige Komma-Zahl) printf ("\nBitte geben sie jetzt ihr Gewicht (in kg) ein! \n"); scanf("%3f", &kg); // Tast.-Abfrage 2 und Zuweisung (kg) (Format fuer 3-stellige Komma-Zahl) printf ("\nIhr BMI betraegt: %d\n", kg / m * m) // Ausgabe des Quotient-Wertes getchar(); getcahr(); getchar(); // Warten auf Eingabe (3x) return 0; } Nabend, Bin noch totaler C - Noob. Ich Skripte gerade mein erstes kleines aber feines Tool. Nur streikt dieser "Borland C++ Compiler 1.0" (siehe Anhang). Ich bin ratlos und ich weiß nicht woran es liegen koennte... :confused: Wenn ihr mir weiterhelfen könntet, were ich sehr froh. Danke! Greetz! squidy Bearbeitet 27. August 200817 j von squidward
27. August 200817 j Ich bin ratlos und ich weiß nicht woran es liegen koennte... An dem Unterschied zwischen "getchar" und "getcahr".
27. August 200817 j Jetzt kommt noch eine Fehler-Meldung (siehe Anhang): ... getchars verbessert Danke!
27. August 200817 j Jo, denn habe ich jetzt auch verbessert nun muessten alle fluechtigkeitsfehler der Vergangenheit angehoeren! Leider kommt da noch eine Fehlermeldung liegt es vielleicht am Compiler? Edit: Wie frustrierend man freut sich auf sein erstes Programm und dann tausender abstrakter Fehlermeldungen die nur ein etwas erfahrener Programmierer entziffern kann, was für ein desaster... Wuerde der Skript denn Theoretisch laufen? Bearbeitet 27. August 200817 j von squidward
28. August 200817 j Wenn das die einzigen Fehlermeldungen sind, dann liegt es vermutlich an der Entwicklungsumgebung. Denn das Programm sollte sich jetzt zumindest kompilieren und linken lassen. Vielleicht solltest du dich von dieser Uralt-IDE lösen und etwas aktuelleres installieren, z.B. Code::Blocks oder Visual C++ Express, beides gibt's kostenlos. Nebenbei, nimm bitte nicht Dev-C++. Wie frustrierend man freut sich auf sein erstes Programm und dann tausender abstrakter Fehlermeldungen die nur ein etwas erfahrener Programmierer entziffern kann, was für ein desaster...Auch das liegt zum Teil daran, dass du eine sehr sehr alte Entwicklungsumgebung benutzt. Visual C++ 2008 lieferte für deine Fehler folgende Meldungen (Hervorhebung von mir): "getcahr": warning C4013: [B]'getcahr' undefined[/B]; assuming extern returning int main.obj : error LNK2001: unresolved external symbol _getcahr[/code] Semikolon: [code]error C2146: syntax error : [B]missing ';' [/B]before identifier 'getchar' Weitere Fehler im Code: doubles liest man mit %lf ein, nicht mit %f.doubles gibt man mit %f aus, nicht mit %d.Mit der Formatfestlegung auf 3 Stellen beim Einlesen machst du es nur dir und dem Benutzer schwer.Die Berechnungsformel ist falsch. Du rechnest zuerst / und dann *.
28. August 200817 j Morgen! Vielleicht solltest du dich von dieser Uralt-IDE lösen und etwas aktuelleres installieren, z.B. Code::Blocks oder Visual C++ Express, beides gibt's kostenlos. Nebenbei, nimm bitte nicht Dev-C++. Du hast Recht, weg mit dem alten Kram! [*]doubles liest man mit %lf ein, nicht mit %f. Frage: Wie liest man dann integers mit d ein? Mit %ld viell.? Das Problem ist dass, das in meinem Buch von Bernd Bruegmann steht das ich floats mit %f und nicht mit %lf einlesen soll, aber das buch ist ja auch schon Uralt... na ja... ...oder es ist ein moeglicher Tippfehler vom Autor!? doubles gibt man mit %f aus, nicht mit %d. Hoppla, fluechtigkeitsfehler! Mit der Formatfestlegung auf 3 Stellen beim Einlesen machst du es nur dir und dem Benutzer schwer. Warum? Wie soll man denn sonst 3 Stellen eintippen können? Es dient doch dazu oder? Die Berechnungsformel ist falsch. Du rechnest zuerst / und dann *. Ach ja, in Klammern setzen... Verbesserter Code: //BMI Ausrechner (Prototyp) #include <stdio.h> int main () { double kg, m; // Definition der Variablen printf("\nBitte geben Sie ihre Koerper-Groeße (in m) ein! \n"); scanf("%3lf", &m); // Tast.-Abfrage 1 und Zuweisung (m) (Format fuer 3-stellige Komma-Zahl) printf ("\nBitte geben sie jetzt ihr Gewicht (in kg) ein! \n"); scanf("%3lf", &kg); // Tast.-Abfrage 2 und Zuweisung (kg) (Format fuer 3-stellige Komma-Zahl) printf ("\nIhr BMI betraegt: %f\n", kg / (m * m)); // Ausgabe des Quotient-Wertes getchar(); getchar(); getchar(); // Warten auf Eingabe (3x) return 0; } Danke! Greetz! squidy
28. August 200817 j Hallo, ich bin auf der Arbeit und kann den Code leider nicht ausprobieren. Aber trotzdem noch den Hinweis, das Programm robust gegen Falscheingaben zu machen. Gruß Tobias
28. August 200817 j Frage: Wie liest man dann integers mit d ein? Ja. Mit %ld viell.? %d. Das Problem ist dass, das in meinem Buch von Bernd Bruegmann steht das ich floats mit %f und nicht mit %lf einlesen soll, aber das buch ist ja auch schon Uralt... na ja... ...oder es ist ein moeglicher Tippfehler vom Autor!? float = %f double = long float = %lf (Eselsbrücke) Warum? Wie soll man denn sonst 3 Stellen eintippen können? Es dient doch dazu oder? Am besten alles als String einlesen und dann nach Möglichkeit parsen && (weiterrechnen ^ fehler ausgeben).
28. August 200817 j float = %f double = long float = %lf (Eselsbrücke) Jetzt wird es mir allmaehlich klar. => jeder Datentyp hat eine eigene Formatanweißung. Danke! Am besten alles als String einlesen und dann nach Möglichkeit parsen && (weiterrechnen ^ fehler ausgeben). Soweit bin ich nun auch wieder nicht ^^ Frage: Was verbirgt sich denn hinter parsen und &&? && kommt mir bekannt vor, event. wenn Bedingung 1 und 2 Erfüllt ist, mache dies und das. Parsen? Meinst du viell. damit Debuggen?! Bearbeitet 28. August 200817 j von squidward
28. August 200817 j Frage: Was verbirgt sich den hinter parsen und &&? && kommt mir bekannt vor, event. wenn Bedingung 1 und 2 Erfüllt ist, mache dies und das. Parsen? Meinst du viell. damit Debuggen?! Das war eine logische Verknüpfung. (kommt von zu viel programmieren ) Parsen: String in Zahl umwandel. Folglich: String in Zahl umwandeln und (weiterrechnen [wenn erfolgreich] oder fehler ausgeben [wenn nicht in zahl umwandelbar]). Das Problem an der Sache ist nämlich, das einige [...] Scherzkekse mal unsinnige Eingaben wie "sdioljfosdg" machen und dann stürzt das programm ab.
29. August 200817 j /* BMI Rechner sw 29.8.08 */ #include <stdio.h> int main() { float k, g; printf("\nKoerpergroese eingeben: \n"); scanf("%f, &k"); printf("Gewicht eingeben: \n"); scanf("%f, &g"); printf("Ergebnis: %f\n", g / (k * k)); getchar(); getchar(); return 0; } Problem: Wenn ich die Datei Kompilire und dannach ausfuehre kommt eine Fehlermeldung, nachdem ich eine Zahl in "Koerpergroesse eingeben: " getippt habe. Was ist der Fehler? Uebrigens Code::Blocks ist Super! MfG\n squidward
29. August 200817 j /* BMI Rechner sw 29.8.08 */ #include <stdio.h> int main() { float k, g, q; printf("\nKoerpergroese eingeben: \n"); scanf("%f, &k"); printf("Gewicht eingeben: \n"); scanf("%f, &g"); q = (g / (k * k)); printf("Ergebnis: %f\n", q); if (q > 25) { printf("Du hast ..."); } else { printf("Gut ..."); } getchar(); getchar(); return 0; } So, das voherige Problem wollte ich editieren aber da es ja ein Zeit-Limit gibt... So, dass vorherige Problem scheint sich irgendwie in Luft aufgeloest zu haben. Jetzt das naechste bei der auswertung kommt eine Abstrakte Zeichenkette... Warum?
30. August 200817 j scanf("%f, &k"); // falsch scanf("%f", &k); // richtig[/CODE] Und für's nächste Mal: "es kommt eine Fehlermeldung" ist keine ausreichende Fehlerbeschreibung. Auch wenn dir die Meldung nichts sagt, uns kann sie für die Fehlerdiagnose sehr wichtig sein.
30. August 200817 j DANKESCHOEN Klotzkopp, TDM und Panke! Und für's nächste Mal: "es kommt eine Fehlermeldung" ist keine ausreichende Fehlerbeschreibung. Auch wenn dir die Meldung nichts sagt, uns kann sie für die Fehlerdiagnose sehr wichtig sein. Ja, sorry war wohl etwas zu ungeduldig...BMIRechner.zip
31. August 200817 j Hi, was soll das Bild sagen? Ist das die "abstrakte Zeichenkette", die du nicht verstehst? Dann guck dir das mal an: ttp://www.cplusplus.com/reference/clibrary/cstdio/printf.html Ansonsten verstehe ich dein Problem nicht.
31. August 200817 j was soll das Bild sagen? Ist das die "abstrakte Zeichenkette", die du nicht verstehst? Hi, es ist kein Problem! Ich wollte mich nur bei denjenigen bedanken die mir dabei geholfen haben. Greetz!
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.