Zum Inhalt springen

Empfohlene Beiträge

Geschrieben (bearbeitet)

//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

2064d1219871258-c-anfaenger-problem-fehler.jpg

post-53341-14430448045593_thumb.jpg

Bearbeitet von squidward
Geschrieben (bearbeitet)

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?

2066d1219874034-c-anfaenger-problem-nervend.jpg

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?

post-53341-1443044804672_thumb.jpg

Bearbeitet von squidward
Geschrieben

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 *.

Geschrieben

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! :rolleyes:

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

Geschrieben

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

Geschrieben

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).

Geschrieben (bearbeitet)
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 von squidward
Geschrieben
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 :D)

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.

Geschrieben
/* 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

Geschrieben

/* 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?

Geschrieben

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.

Geschrieben

DANKESCHOEN Klotzkopp, TDM und Panke!

attachment.php?attachmentid=2070&stc=1&d=1220134145

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

post-53341-14430448049282_thumb.jpg

Geschrieben

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.

Geschrieben
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!

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...