1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

BMI-Programm !!!

    • Frage
  • shiZZle
  • 25. September 2007 um 09:54
  • Unerledigt
  • shiZZle
    6
    shiZZle
    Mitglied
    Punkte
    380
    Beiträge
    65
    • 26. September 2007 um 12:10
    • #21

    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 :grinning_face_with_smiling_eyes: und ich eine gute Note haben will.

    Code
    REM BMI_Berechnung
    DIM gewicht AS DOUBLE
    DIM groesse AS DOUBLE
    DIM vorname AS STRING
    DIM nachname AS STRING
    DIM geschlecht AS STRING
    DIM bmi AS INTEGER
    DIM anrede AS STRING
    
    
    DO
    
    
               CLS
    
               PRINT "BMI Berechnen"
               PRINT
               PRINT "Dieses Programm berechnet ihren Body Mas Index aus und sagt Ihnen ob die Unter-/Normal-/ oder šbergewichtig sind!"
               PRINT
               INPUT "Vorname:"; vorname
               PRINT
               INPUT "Nachname:"; nachname
               PRINT
               INPUT "Geschlecht Frau oder Herr:"; geschlecht
               PRINT
               INPUT "Geben Sie Ihr Gewicht in KG an:"; gewicht
               PRINT
               INPUT "Nun gegeben Sie Ihre GrӇe in METER an:"; groesse
               PRINT
    
    
               bmi = gewicht / groesse ^ 2
    
    
               SELECT CASE bmi
    
    
                    CASE 20 TO 25
                        PRINT "Sehr geehrte(r) "; geschlecht; " "; vorname; " "; nachname; " Ihr BMI ist: "; bmi; " Somit haben sie normal Gewicht."
    
    
                      CASE 25 TO 30
                          PRINT "Sehr geehrte(r) "; geschlecht; " "; vorname; " "; nachname; " Ihr BMI ist: "; bmi; " Somit haben sie leichtes šbergewicht."
    
    
                         CASE 30 TO 40
                             PRINT "Sehr geehrte(r) "; geschlecht; " "; vorname; " "; nachname; " Ihr BMI ist: "; bmi; " Somit haben sie mittleres šbergewicht."
    
    
                             CASE IS > 40
                             PRINT "Sehr geehrte(r) "; geschlecht; " "; vorname; " "; nachname; " Ihr BMI ist: "; bmi; " Somit haben Sie starkes šbergewicht!"
    
                                  END SELECT
            PRINT
            INPUT "Nochmal mit j"; auswahl$
    
    
            auswahl$ = UCASE$(auswahl$)
    
    
    
    
    LOOP WHILE auswahl$ = "J"
    
    
    PRINT "Programmende!!"
    END
    Alles anzeigen
  • Kampi
    27
    Kampi
    Mitglied
    Reaktionen
    193
    Punkte
    7.828
    Beiträge
    1.468
    • 26. September 2007 um 13:02
    • #22

    ich liefere nur pseudocode, du sollst ja was lernen :winking_face:

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

  • samyjr
    8
    samyjr
    Mitglied
    Reaktionen
    4
    Punkte
    609
    Beiträge
    117
    • 26. September 2007 um 13:11
    • #23

    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.

  • sauzachn
    17
    sauzachn
    Mitglied
    Reaktionen
    51
    Punkte
    3.101
    Beiträge
    606
    • 26. September 2007 um 14:14
    • #24
    Zitat von shiZZle

    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

  • samyjr
    8
    samyjr
    Mitglied
    Reaktionen
    4
    Punkte
    609
    Beiträge
    117
    • 26. September 2007 um 17:38
    • #25
    Zitat von sauzachn

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

  • Florian
    4
    Florian
    Mitglied
    Punkte
    165
    Beiträge
    33
    • 26. September 2007 um 21:55
    • #26

    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.

  • hal
    32
    hal
    Mitglied
    Reaktionen
    52
    Punkte
    11.122
    Beiträge
    2.208
    • 26. September 2007 um 23:20
    • #27
    Zitat von Florian

    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!

  • jeuneS2
    11
    jeuneS2
    Mitglied
    Reaktionen
    17
    Punkte
    1.227
    Beiträge
    238
    • 26. September 2007 um 23:33
    • #28
    Zitat von hal

    "Tot" ist das Wort, das du suchst.

    BMI: 19.49, Puls: 70. Da hats was bei mir.

    Why bother spending time reading up on things? Everybody's an authority, in a free land.

  • hal
    32
    hal
    Mitglied
    Reaktionen
    52
    Punkte
    11.122
    Beiträge
    2.208
    • 26. September 2007 um 23:38
    • #29

    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!

  • sauzachn
    17
    sauzachn
    Mitglied
    Reaktionen
    51
    Punkte
    3.101
    Beiträge
    606
    • 27. September 2007 um 11:41
    • #30
    Zitat von hal

    Ja stimmt, das fangt erst bei <15 an


    Der Puls?

    Dipper dipper dii dipper dii dipper dii duuu

  • shiZZle
    6
    shiZZle
    Mitglied
    Punkte
    380
    Beiträge
    65
    • 27. September 2007 um 20:11
    • #31

    ^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

  • shiZZle
    6
    shiZZle
    Mitglied
    Punkte
    380
    Beiträge
    65
    • 27. September 2007 um 20:29
    • #32
    Zitat von Kampi

    ich liefere nur pseudocode, du sollst ja was lernen :winking_face:

    $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?

    Code
    REM BMI_Berechnung
    DIM gewicht AS DOUBLE
    DIM groesse AS DOUBLE
    DIM vorname AS STRING
    DIM nachname AS STRING
    DIM geschlecht AS STRING
    DIM bmi AS INTEGER
    DIM anrede AS STRING
    
    
    DO
    
    
               CLS
    
               PRINT "BMI Berechnen"
               PRINT
               PRINT "Dieses Programm berechnet ihren Body Mas Index aus und sagt Ihnen ob die Unter-/Normal-/ oder šbergewichtig sind!"
               PRINT
               INPUT "Vorname:"; vorname
               PRINT
               INPUT "Nachname:"; nachname
               PRINT
               INPUT "Geschlecht Frau oder Herr:"; geschlecht
               PRINT
               INPUT "Geben Sie Ihr Gewicht in KG an:"; gewicht
               PRINT
               INPUT "Nun gegeben Sie Ihre GrӇe in METER an:"; groesse
               PRINT
    
    
               bmi = gewicht / groesse ^ 2
    
    
                   IF geschlecht = Herr THEN
                     anrede$ = "Sehr geehrter"
    
    
    
    
                            ELSE
                             anrede$ = "Sehr geehrte"
    
    
                   END IF
    
    
               PRINT anrede; " "; geschlecht; " "; vorname; " "; nachname; " Ihr BMI ist:- "; bmi; "- Somit haben sie:"
               PRINT
    
    
    
               SELECT CASE bmi
    
    
                    CASE 20 TO 25
                        PRINT "+++Normal-Gewicht+++"
    
    
                      CASE 25 TO 30
                          PRINT "+++Leichte-šbergewicht+++"
    
    
                         CASE 30 TO 40
                             PRINT "+++Mittleres-šbergewicht+++"
    
    
                             CASE IS > 40
                             PRINT "***Starkes-šbergewicht***"
    
                                  END SELECT
            PRINT
            PRINT
            INPUT "Nochmal mit j"; auswahl$
    
    
            auswahl$ = UCASE$(auswahl$)
    
    
    
    
    LOOP WHILE auswahl$ = "J"
    PRINT
    PRINT "Programmende!!"
    END
    Alles anzeigen

    Der Fehler liegt hier:

    IF geschlecht = Herr THEN

    Keine ahnun was der Feler ist

  • Paulchen
    1
    Paulchen
    Gast
    • 27. September 2007 um 21:45
    • #33

    Wild guess...

    Code
    IF geschlecht = "Herr" THEN


    ?

  • shiZZle
    6
    shiZZle
    Mitglied
    Punkte
    380
    Beiträge
    65
    • 28. September 2007 um 03:31
    • #34
    Code
    REM BMI_Berechnung
    DIM gewicht AS DOUBLE
    DIM groesse AS DOUBLE
    DIM vorname AS STRING
    DIM nachname AS STRING
    DIM geschlecht AS STRING
    DIM bmi AS INTEGER
    DIM anrede AS STRING
    
    
    DO
    
    
               CLS
    
               PRINT "BMI Berechnen"
               PRINT
               PRINT "Dieses Programm berechnet ihren Body Mas Index aus und sagt Ihnen ob die Unter-/Normal-/ oder šbergewichtig sind!"
               PRINT
               INPUT "Vorname:"; vorname
               PRINT
               INPUT "Nachname:"; nachname
               PRINT
               INPUT "Geschlecht m„nnlich oder weiblich? Fr m„nnlich m, fr weiblich w:"; geschlecht
               PRINT
               INPUT "Geben Sie Ihr Gewicht in KG an:"; gewicht
               PRINT
               INPUT "Nun gegeben Sie Ihre GrӇe in METER an:"; groesse
               PRINT
               PRINT
    
    
               bmi = gewicht / groesse ^ 2
    
    
                  IF geschlecht = "m" THEN
                     anrede$ = "Sehr geehrter Herr"
    
    
    
    
                             ELSE
                                   IF geschlecht = "w" THEN
                                   anrede$ = "Sehr geehrte Frau"
    
    
                  
                     END IF
                     END IF
    
    
               PRINT anrede; " "; nachname; " "; vorname; ", Ihr BMI ist:- "; bmi; "- Somit haben sie:"
               PRINT
    
    
    
               SELECT CASE bmi
    
    
                CASE 0 TO 14
                    PRINT "+++Lebensbedrohliches-Unter-Gewicht+++"
    
    
                  CASE 15 TO 19
                      PRINT "***Unter-Gewicht***"
    
    
                    CASE 20 TO 25
                        PRINT "+++Normal-Gewicht+++"
    
    
                      CASE 25 TO 30
                          PRINT "+++Leichte-šbergewicht+++"
    
    
                         CASE 30 TO 40
                             PRINT "+++Mittleres-šbergewicht+++"
    
    
                             CASE IS > 40
                             PRINT "***Starkes-šbergewicht***"
    
                                  END SELECT
            PRINT
            PRINT
            INPUT "Nochmal mit j"; auswahl$
    
    
            auswahl$ = UCASE$(auswahl$)
    
    
    
    
    LOOP WHILE auswahl$ = "J"
    PRINT
    PRINT "Programmende!!"
    END
    Alles anzeigen
  • shiZZle
    6
    shiZZle
    Mitglied
    Punkte
    380
    Beiträge
    65
    • 2. Oktober 2007 um 02:45
    • #35

    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.

  • Paulchen
    1
    Paulchen
    Gast
    • 2. Oktober 2007 um 10:02
    • #36

    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
  • shiZZle
    6
    shiZZle
    Mitglied
    Punkte
    380
    Beiträge
    65
    • 2. Oktober 2007 um 12:35
    • #37

    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

  • samyjr
    8
    samyjr
    Mitglied
    Reaktionen
    4
    Punkte
    609
    Beiträge
    117
    • 2. Oktober 2007 um 13:22
    • #38

    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.

    Code
    boolean beantwortet=false;
    string geschlecht="";
    
    
    do {
         ausgebe("welches geschlecht haben sie? (m/w)");
         geschlecht=eingabe();
         if(geschlecht=="m"||geschlecht=="w") beantwortet=true; else {
               ausgabe("ihre eingabe war inkorrekt");
         }
    } while(beantwortet==false);
    
    
    string anrede="";
    if(geschlecht="m") anrede="Sehr geehrter Heer"; else anrede="Sehr geehrte Frau";
    Alles anzeigen
  • shiZZle
    6
    shiZZle
    Mitglied
    Punkte
    380
    Beiträge
    65
    • 2. Oktober 2007 um 15:58
    • #39

    das hab ich net sorecht verstanden wie du das jetzt meinst? kannst du oder jmd anderes das vll nochmal erklären???

  • samyjr
    8
    samyjr
    Mitglied
    Reaktionen
    4
    Punkte
    609
    Beiträge
    117
    • 2. Oktober 2007 um 16:25
    • #40

    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!

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung