kein Spaghetti-Code



  • Hallo Leutz,

    wir haben in der Schule die Aufgabe bekommen einen BodyMassIndex Rechner zu programmieren. Das Ergebnis muß mit Alter und Wert mit der unten stehenden Tabelle verglichen werden und als Endergebnis muß dann eben stehen Sie sind "schlank".

    Tabelle : zu dünn , schlank, normal ,übergewichtig , adipös

    18-24 : < 19 , 19-24 , 24-29 , 29-39 , > 39

    25-34 : < 20 , 20-25 , 25-30 , 30-40 , > 40

    35-44 : < 21 , 21-26 , 26-31 , 31-41 , > 41

    45-54 : < 22 , 22-27 , 27-32 , 32-42 , > 42

    55-64 : < 23 , 23-28 , 28-33 , 33-43 , > 43

    65+ : < 24 , 24-29 , 29-34 ,34-44 ,> 44

    Jetzt mein Problem, wie kann man das umsetzen ohne ewig lange verschachtelte if else mit den Ranges?Habe leider keine Idee.

    Danke schon mal



  • Sorry, aber setz Dich mal hin und sieh Dir die Zahlen an. Das ist so einfach, dass jeder Tipp schon praktisch die komplette Lösung wäre.
    Hausaufgaben werden hier prinzipiell nicht vorgekaut.

    Grüße Joe_M.



  • Sorry, aber ich kapier es nicht, ich habe das jetzt mit:

    if (alter>17 && alter<=24)
       {
         if(bmi<20)
         {        
         Label1->Caption="zu dünn"
         }
         else if(bmi>=19 && bmi<=24)
         {        
         Label1->Caption="schlank"
         } 
         ...usw.
       }
       und das ganze jeweils für alle Altersbereiche
    

    Sieht halt sehr unelegant aus, mathematisch kann man den Zahlen nicht kommen, die stammen aus einer Tabelle und sind ganz so glatt wie ich die hier hingetippt habe.
    Ich will ja nix vorgekaut, sondern einen Tip



  • na dann geb ich dir einen tipp wenn du es echt gar nicht kapierst beim HINSEHEN und DRÜBER NACHDENKEN(!)

    18-24 : < [b]19[/b] , [b]19-24[/b] = 19 - 19+5 , 19+5 - 19+5+5 , 19+10-19+20 , > 39 
    
    25-34 : < [b]19+1[/b] , [b]19+1-24+1[/b] , 25-30 , 30-40 , > 40 
    
    35-44 : < [b]19+2[/b] , [b]19+2-24+2[/b] , 26-31 , 31-41 , > 41 
    
    45-54 : < [b]19+3[/b] , 22-27 , 27-32 , 32-42 , > 42 
    
    55-64 : < [b]19+4[/b] , 23-28 , 28-33 , 33-43 , > 43 
    
    65+ : < [b]19+5/[b] , 24-29 , 29-34 ,34-44 ,> 44
    

    na merkste was?



  • int age=StrToInt(Edit1->Text);
    int index=StrToInt(Edit2->Text);
    int min=24;
    unsigned pos=0;
    while(age-min > 0 && pos < 5)
    {
       min+=10;
       pos++;
    }
    String bmi_index[5]={"zu dünn","schlank","normal","übergewichtig","adipös"};
    unsigned i=0;
    if(index>18+pos && index<24+pos) i=1;
    else if(index>23+pos && index<29+pos) i=2;
    else if(index>28+pos && index<40+pos) i=3;
    else if(index>39+pos) i=4;
    Edit3->Text = bmi_index[i];
    

Anmelden zum Antworten