BMI-Programm !!!

  • loool noch mehr arbeit? Soll mein Lehrer mit nem Punkt zu frieden sein.

    Hier hab ich noch mal den fertigen Code um eure MEinungen zu hören, ob etwas nicht so professionell ist, weil dieses auch benotet wird ^^ und ich eine gute Note haben will.

  • ich liefere nur pseudocode, du sollst ja was lernen ;)

    $anrede deklarierst du, verwendest sie aber nicht. ich wuerde ihr den wert "Sehr geehrte" geben und dann vor dem 'select' eine abfrage in der richtung machen:

    Code
    if (geschlecht == herr) $anrede = $anrede + 'r';
    oder
    if (geschlecht == herr) $anrede = "Sehr geehrter";

    und dann entspechend $anrede ausgeben.
    und dass das eine case von "20 TO 25" und das andere dann von "25 TO 30" laeuft ist nicht schoen. die eine obergrenze sollte nicht die andere untergrenze sein, es sollte ein wert abstand sein.

    Willfähriges Mitglied des Fefe-Zeitbinder-Botnets und der Open Source Tea Party.

  • ich würde nur noch die zeile:

    PRINT "Sehr geehrte(r) "; geschlecht; " "; vorname; " "; nachname; " Ihr BMI ist: "; bmi; " Somit haben sie "

    vor dem SELECT CASE ausgeben (da es ja bei allen fällen gleich ist) und in den einzelnen fällen dann nur mehr

    PRINT "normal gewicht." bzw. PRINT "übergewicht". usw. machen.

    sieht dann vielleicht ein bischen "aufgeräumter" aus, ist aber natürlich geschmackssache.

  • Ausgabe:

    Vorname:

    Eingabe: Patrick

    Ausgabe:

    Korrigieren Sie die Eingabe
    Vorname:


    Dann heißt du eben nicht Patrick. Warum belügst du den Computer? Ich finde das nicht in Ordnung von dir. Wer Computer belügt, der belügt auch Menschen!

    btw: Was Konstruktives: Warum fragst du die Größe nicht in cm ab - ist zwar keine SI-Einheit, aber du ersparst dir Probleme mit . und , und ersetzt das durch Arithmetik.

    Dipper dipper dii dipper dii dipper dii duuu

  • Warum fragst du die Größe nicht in cm ab - ist zwar keine SI-Einheit, aber du ersparst dir Probleme mit . und , und ersetzt das durch Arithmetik.

    weil warscheinlich der Prof das beispiel aus irgendeinem Programmierbuch geflaucht hat und in der angabe steht halt meter... :p

    ... aber falls der Prof nicht drauf besteht ist das wirklich ein geiler hack!!! sowas nennt man wohl "kreative problemlösung".

  • Es ist eigentlich eh schon fast alles gesagt worden, die Wertebereiche sollten sich nicht überschneiden. Zusätzlich würde ich auch noch die restlichen Fälle abfangen (BMI < 20), in dem Fall wird man vermutlich untergewichtig sein.

  • Zusätzlich würde ich auch noch die restlichen Fälle abfangen (BMI < 20), in dem Fall wird man vermutlich untergewichtig sein.

    "Tot" ist das Wort, das du suchst.

    [font=verdana,sans-serif]"An über-programmer is likely to be someone who stares quietly into space and then says 'Hmm. I think I've seen something like this before.'" -- John D. Cock[/font]

    opentu.net - freier, unzensierter Informationsaustausch via IRC-Channel!
    Hilfe und Support in Studienangelegenheiten, gemütliches Beisammensein, von und mit Leuten aus dem Informatik-Forum!

  • Ja stimmt, das fangt erst bei <15 an

    [font=verdana,sans-serif]"An über-programmer is likely to be someone who stares quietly into space and then says 'Hmm. I think I've seen something like this before.'" -- John D. Cock[/font]

    opentu.net - freier, unzensierter Informationsaustausch via IRC-Channel!
    Hilfe und Support in Studienangelegenheiten, gemütliches Beisammensein, von und mit Leuten aus dem Informatik-Forum!

  • ^Find ich cool eure Ratschläge aber das mit der Grenze und den ganzen Werten hat mir mein Lehrer gesagt, deswegen kann ich daran nix ändern. Und auch das mit dem cm geht leider net wegen ihm

  • ich liefere nur pseudocode, du sollst ja was lernen ;)

    $anrede deklarierst du, verwendest sie aber nicht. ich wuerde ihr den wert "Sehr geehrte" geben und dann vor dem 'select' eine abfrage in der richtung machen:

    Code
    if (geschlecht == herr) $anrede = $anrede + 'r';
    oder
    if (geschlecht == herr) $anrede = "Sehr geehrter";

    und dann entspechend $anrede ausgeben.
    und dass das eine case von "20 TO 25" und das andere dann von "25 TO 30" laeuft ist nicht schoen. die eine obergrenze sollte nicht die andere untergrenze sein, es sollte ein wert abstand sein.

    Wenn ich das so angebe, sagt er das er das nicht ausführen kann, da Herr keine Variable ist und geschlecht als STRING ausgeführt wird. Was soll ich machen?

    Der Fehler liegt hier:

    IF geschlecht = Herr THEN

    Keine ahnun was der Feler ist

  • Ich hab ein weiteres Problem. Wenn der Ausführer nicht "w" (weiblich ) oder "m" (männlich ) eingibt, macht das PRogramm trotzdem weiter.

    Wie kann ich das soo schreiben das er sagt "FALSCHE EINGABE" und er die Frage nach dem Geschlecht wiederholt.

    Code
    IF geschlecht = "m" THEN
                     anrede$ = "Sehr geehrter Herr"
    
    
    
    
                             ELSE
                                   IF geschlecht = "w" THEN
                                     anrede$ = "Sehr geehrte Frau"

    JEtzt fällt mir nicht ein, was ich nach dem letzten IF schreiben muss, damit ich das halt so haben kann wie ich es mir wünsche.

    Hoffe ihr wisst was.

  • Das sollt so gehen:

    Code
    IF geschlecht = "m" THEN
        anrede$ = "Sehr geehrter Herr"
    ELSE
        IF geschlecht = "w" THEN
            anrede$ = "Sehr geehrte Frau"
        ELSE
            PRINT "Du Trottel, du darfst nur 'm' oder 'w' eingeben!"
        END IF
    END IF


    BASIC hat aber, soviel ich weiß, auch ein spezielles ELSEIF-Konstrukt:

    Code
    IF geschlecht = "m" THEN
        anrede$ = "Sehr geehrter Herr"
    ELSEIF geschlecht = "w" THEN
        anrede$ = "Sehr geehrte Frau"
    ELSE
        PRINT "Du Trottel, du darfst nur 'm' oder 'w' eingeben!"
    END IF
  • dein Vorschlag klingt ja gut, aber ich möchte ja, wenn er die Falsche Eingabe macht, das er die Frage wiederholt und ihn nicht einfach als trottel bezeichnet und mit dem programm weiter macht ohne das geschlecht zu wissen

  • dann mach ne boolean flag rein (beantwortet) und setzte sie auf false (k.a. wie das in der Sprache geht, ist zuuuu laaangeee her. ich schreib dir mal den code als pseudo-pseudo-code hin). frage solange das geschlecht ab (while schleife mit der bedingung beantwortet==false ist), bis eine richtige antwort kommt (also ein w oder m) und setze das flag in diesem fall auf true (beantwortet=true). dann wird solange nachgefragt, bis jemand was korrektes (m oder w) eingibt.

  • du macht einfach eine schleife um den Eingabe bereich (wo halt am bildschirm aufgefordert wird, m oder w einzugeben) aus der man nur dann rauskommt, falls m oder w eingegeben wurde. d.h.: die person wird solange aufgefordert m oder w einzugeben, bis sie dies gemacht hat

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!