myGully.com Boerse.SH - BOERSE.AM - BOERSE.IO - BOERSE.IM Boerse.BZ .TO Nachfolger
Zurück   myGully.com > Computer & Technik > Programmierung
Seite neu laden

C+ Programmproblem

Willkommen

myGully

Links

Forum

 
Antwort
Themen-Optionen Ansicht
Ungelesen 02.11.11, 22:47   #1
Sanju2
Anfänger
 
Registriert seit: Sep 2011
Beiträge: 7
Bedankt: 0
Sanju2 ist noch neu hier! | 0 Respekt Punkte
Standard C+ Programmproblem

Hey Leute,

ich bin zur zeit dran mit C+ das Programmieren zu lernen...
Ich habe versucht mir einen BMI Rechner zu programmieren und bin dabei auf folgendes Problem gestoßen...

Meine eigentlich Simple Formel berechnet nicht den erwartenden Wert...

Formel: (10000*Gewicht)/(Größe*Größe) // Gewicht und Größe sind Variablen

z.b. gebe ich Werte ein für; Gewicht= 80 und Größe = 180

Mit dem Taschenrechner komme ich auf das Ergebnis 24,7 aber mein Programm rechnet 281,25 aus!

Ich könnte mir vorstellen, dass das Problem wegen der Division der float-variablen zustande kommt... Ich habe diesbezüglich auch schon etwas recherchiert... Leider ohne Erfolg.

Ich hoffe jemand kann mir helfen. Quellcode ist im Spoiler.


Mfg Sanju

Sanju2 ist offline   Mit Zitat antworten
Ungelesen 03.11.11, 01:53   #2
urga
Mitglied
 
Benutzerbild von urga
 
Registriert seit: Aug 2009
Ort: void* (*wtf[])(void **);
Beiträge: 453
Bedankt: 137
urga ist noch neu hier! | 0 Respekt Punkte
Standard

zum einen lassen sich im spoiler auch code bzw. php-tags verschachteln:

das fördert ungemein die lesbarkeit deines prgrammcodes. beachte, ich habe (u.a.) deine globalen variablen als lokale variablen von main() deklariert. gewöhne dir bitte so früh wie möglich ab globale variablen zu verwenden!

zum andern ist dein code standard C. kein c++ sprachmerkmal für mich erkennbar. aber egal, c++ ist ja abwärtskompatibel.

da mein cygwin-gcc gerade buggy ist, und ich jetzt keinen bock habe deinetwegen linux zu starten, allgemeine ratschläge:

a) per cout (c++) oder eben printf in bmi() die eingabe-parameter ausgeben, um zu schaun, ob auch die erwarteten parameter an die funktion übergeben werden.
b) die ausgabe der bmi-auswertung auch in eine funktion auslagern, und da per switch
m/w zu unsterscheiden. so brauchst du kein einziges else. 9-fach geschachtelte if-cascaden sind sehr schwer les- bzw. wartbar.
PHP-Code:
void auswertung (int mwfloat bmi) {
 switch (
mw) {
  case 
0:
   if (
bmi 19) {
     
cout << "\nBMI-Gruppe: Untergewicht!"
   }
   if (
bmi >= 19 && bmi <=24) { 
     
cout << "\nBMI-Gruppe: Normalgewicht!";
   }
   .....
   break;
  case 
1:
   .....
   break;
  default:
    
cout << "aliens unerwünscht!\n";
    exit (-
1);
 }

viel erfolg!
und nicht vergessen: globale variablen sind baba
__________________
entropie erfordert keine wartung
urga ist offline   Mit Zitat antworten
Ungelesen 03.11.11, 12:02   #3
HappyMike34
Erfahrenes Mitglied
 
Registriert seit: Mar 2010
Beiträge: 676
Bedankt: 655
HappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt PunkteHappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt PunkteHappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt PunkteHappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt PunkteHappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt PunkteHappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt PunkteHappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt PunkteHappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt PunkteHappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt PunkteHappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt PunkteHappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt Punkte
Standard

Du hast beim Aufruf von bmi() Größe und Gewicht vertauscht!
__________________
my brain has two parts, the right and the left...on the left, there is nothing right...on the right, there is nothing left
HappyMike34 ist offline   Mit Zitat antworten
Ungelesen 03.11.11, 13:26   #4
Sanju2
Anfänger
 
Registriert seit: Sep 2011
Beiträge: 7
Bedankt: 0
Sanju2 ist noch neu hier! | 0 Respekt Punkte
Standard

Zitat:
Du hast beim Aufruf von bmi() Größe und Gewicht vertauscht!


Danke
Sanju2 ist offline   Mit Zitat antworten
Antwort


Forumregeln
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren

BB code is An
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:23 Uhr.


Sitemap

().