K
kissen
Hi,
ich habe eine Frage zu Perl. Ich schreibe grade ein Programm, welches den BMI ausrechnet, und auf Wunsch eben den altersgerechten BMI.
Jedoch gibt es jedes mal wenn ich mit einem Alter den BMI ausrechnen lassen, die Ausgabe "Sie sind untergewichtig", "Sie haben ein Normalgewicht" oder "Sie sind uebergewichtig" doppelt aus .. Jetzt suche ich seit geraumer Zeit den Fehler, finde aber nichts. Kann jemand helfen?
Hier der Code:
Danke im Voraus,
ich habe eine Frage zu Perl. Ich schreibe grade ein Programm, welches den BMI ausrechnet, und auf Wunsch eben den altersgerechten BMI.
Jedoch gibt es jedes mal wenn ich mit einem Alter den BMI ausrechnen lassen, die Ausgabe "Sie sind untergewichtig", "Sie haben ein Normalgewicht" oder "Sie sind uebergewichtig" doppelt aus .. Jetzt suche ich seit geraumer Zeit den Fehler, finde aber nichts. Kann jemand helfen?
Hier der Code:
Code:
#!/usr/bin/perl
print "Wir berechnen Ihren Body-Mass-Index zur Bewertung Ihres Koerpergewichts\n";
print "Sind Sie maennlich, weiblich oder keine Angabe (m/w/n)?: ";
my $gen=<STDIN>;
print "Bitte geben Sie Ihr Alter ein (oder ein n fuer keine Angabe): ";
my $age=<STDIN>;
print "Bitte geben Sie Ihr Gewicht ein (in kg): ";
my $weight=<STDIN>;
print "Bitte geben Sie Ihre Koerpergroesse eine (in m (x.yz)): ";
my $size=<STDIN>;
chomp($gen);
chomp($age);
chomp($size);
chomp($weight);
my $bmi=($weight / ($size*$size));
print "Ihr Body-Mass-Index: ".$bmi."\n";
@out = ("Sie sind untergewichtig!\n", "Sie haben ein Normalgewicht!\n", "Sie sind uebergewichtig!\n");
@minm = ('19', '20', '21', '22', '23', '24');
@minf = ('18', '19', '20', '21', '22', '23');
@maxm = ('24', '25', '26', '27', '28', '29');
@maxf = ('23', '24', '25', '26', '27', '28');
if($gen=="m" && $age < 18 && $age != "n"){
print "Sie muessen mindestens 18 Jahre alt sein!\n";
}
elsif($gen=="m" && $age >= 18 && $age <= 24){
if($bmi <= $minm[0]){
print $out[0];
}
elsif($bmi >= $minm[0] && $bmi <= $maxm[0]){
print $out[1];
}
elsif($bmi >= $maxm[0]){
print $out[2];
}
}
elsif($gen=="m" && $age >= 25 && $age <= 34){
if($bmi <= $minm[1]){
print $out[0];
}
elsif($bmi >= $minm[1] && $bmi <= $maxm[1]){
print $out[1];
}
elsif($bmi >= $maxm[1]){
print $out[2];
}
}
elsif($gen=="m" && $age >= 35 && $age <= 44){
if($bmi <= $minm[2]){
print $out[0];
}
elsif($bmi >= $minm[2] && $bmi <= $maxm[2]){
print $out[1];
}
elsif($bmi >= $maxm[2]){
print $out[2];
}
}
elsif($gen=="m" && $age >= 45 && $age <= 54){
if($bmi <= $minm[3]){
print $out[0];
}
elsif($bmi >= $minm[3] && $bmi <= $maxm[3]){
print $out[1];
}
elsif($bmi >= $maxm[3]){
print $out[2];
}
}
elsif($gen=="m" && $age >= 55 && $age <= 64){
if($bmi <= $minm[4]){
print $out[0];
}
elsif($bmi >= $minm[4] && $bmi <= $maxm[4]){
print $out[1];
}
elsif($bmi >= $maxm[4]){
print $out[2];
}
}
elsif($gen=="m" && $age >= 64){
if($bmi <= $minm[5]){
print $out[0];
}
elsif($bmi >= $minm[5] && $bmi <= $maxm[5]){
print $out[1];
}
elsif($bmi >= $maxm[5]){
print $out[2];
}
}
if($gen=="w" && $age < 18 && $age != "n"){
print "Sie muessen mindestens 18 Jahre alt sein!\n";
}
elsif($gen=="w" && $age >= 18 && $age <= 24){
if($bmi <= $minf[0]){
print $out[0];
}
elsif($bmi >= $minf[0] && $bmi <= $maxf[0]){
print $out[1];
}
elsif($bmi >= $maxf[0]){
print $out[2];
}
}
elsif($gen=="w" && $age >= 25 && $age <= 34){
if($bmi <= $minf[1]){
print $out[0];
}
elsif($bmi >= $minf[1] && $bmi <= $maxf[1]){
print $out[1];
}
elsif($bmi >= $maxf[1]){
print $out[2];
}
}
elsif($gen=="w" && $age >= 35 && $age <= 44){
if($bmi <= $minf[2]){
print $out[0];
}
elsif($bmi >= $minf[2] && $bmi <= $maxf[2]){
print $out[1];
}
elsif($bmi >= $maxf[2]){
print $out[2];
}
}
elsif($gen=="w" && $age >= 45 && $age <= 54){
if($bmi <= $minf[3]){
print $out[0];
}
elsif($bmi >= $minf[3] && $bmi <= $maxf[3]){
print $out[1];
}
elsif($bmi >= $maxf[3]){
print $out[2];
}
}
elsif($gen=="w" && $age >= 55 && $age <= 64){
if($bmi <= $minf[4]){
print $out[0];
}
elsif($bmi >= $minf[4] && $bmi <= $maxf[4]){
print $out[1];
}
elsif($bmi >= $maxf[4]){
print $out[2];
}
}
elsif($gen=="w" && $age >= 64){
if($bmi <= $minf[5]){
print $out[0];
}
elsif($bmi >= $minf[5] && $bmi <= $maxf[5]){
print $out[1];
}
elsif($bmi >= $maxf[5]){
print $out[2];
}
}
sub mas{
if($bmi <= 20){
print $out[0];
}
elsif($bmi >= 20 && $bmi <= 25){
print $out[1];
}
elsif($bmi >= 25){
print $out[2];
}
}
sub fem{
if($bmi <= 19){
print $out[0];
}
elsif($bmi >= 19 && $bmi <= 24){
print $out[1];
}
elsif($bmi >= 24){
print $out[2];
}
}
sub uns{
if($bmi <= 18.5){
print $out[0];
}
elsif($bmi >= 18.5 && $bmi <= 25){
print $out[1];
}
elsif($bmi >= 25){
print $out[2];
}
}
if($gen=="m" && $age=="n"){
mas;
}
elsif($gen=="w" && $age=="n"){
fem;
}
elsif($gen=="n" && $age=="n"){
uns;
}
Danke im Voraus,