matheraum.de
Raum für Mathematik
Offene Informations- und Nachhilfegemeinschaft

Für Schüler, Studenten, Lehrer, Mathematik-Interessierte.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Mathe
  Status Schulmathe
    Status Primarstufe
    Status Mathe Klassen 5-7
    Status Mathe Klassen 8-10
    Status Oberstufenmathe
    Status Mathe-Wettbewerbe
    Status Sonstiges
  Status Hochschulmathe
    Status Uni-Analysis
    Status Uni-Lin. Algebra
    Status Algebra+Zahlentheo.
    Status Diskrete Mathematik
    Status Fachdidaktik
    Status Finanz+Versicherung
    Status Logik+Mengenlehre
    Status Numerik
    Status Uni-Stochastik
    Status Topologie+Geometrie
    Status Uni-Sonstiges
  Status Mathe-Vorkurse
    Status Organisatorisches
    Status Schule
    Status Universität
  Status Mathe-Software
    Status Derive
    Status DynaGeo
    Status FunkyPlot
    Status GeoGebra
    Status LaTeX
    Status Maple
    Status MathCad
    Status Mathematica
    Status Matlab
    Status Maxima
    Status MuPad
    Status Taschenrechner

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Dt. Schulen im Ausland: Mathe-Seiten:Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
StartseiteMatheForenC/C++BMI Rechner
Foren für weitere Studienfächer findest Du auf www.vorhilfe.de z.B. Astronomie • Medizin • Elektrotechnik • Maschinenbau • Bauingenieurwesen • Jura • Psychologie • Geowissenschaften
Forum "C/C++" - BMI Rechner
BMI Rechner < C/C++ < Programmiersprachen < Praxis < Informatik < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "C/C++"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

BMI Rechner: weiteres Vorgehen
Status: (Frage) beantwortet Status 
Datum: 18:49 Sa 15.10.2011
Autor: pina7

Aufgabe
Ich schreibe ein Programm, dass den Body Mass Index ausgibt.
Nach BMI Ausgabe hat der Nutzer 3 Möglichkeiten:
1) erneute Eingabe von Gewicht und Größe, erneute BMI Ausgabe, erneute Auswahlmöglichkeit
2) Ausgabe einer spezifischen Übersichtstabelle
3) sofortiges Schließen des Programms

Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.

Hallo,
ich bin bisher soweit gekommen, dass Auswahlmöglichkeit 1 funktioniert.

Hat jemand eine Idee, wie ich die anderen beiden Möglichkeiten programmiere? Noch mal zwei Schleifen oder lieber if-Abfragen setzen?
PS: Meine c++ Kenntnisse sind noch recht frisch.
Ab nächster Zeile folgt mein Quellcode.

// Body_Mass_Index.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
//

#include "stdafx.h"
#include <iostream>
#include <iomanip>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
int Gewicht = 0;

float Groesse = 0.0;

int Eingabe = 0; // zur Nutzerwahl, wie das Programm weiterlaufen soll


// folgende ist die erste Schleife (es wird eine erneute Ausgabe durchgeführt)
do
{

system("cls");

cout << "*** Body-Mass-Index Berechnung ***" << endl;

cout << " " << endl;

cout << "Bitte geben Sie Ihr Koerpergewicht als ganze Zahl in Kilogramm ein." << endl;

cout << "Gewicht:" << endl;

cin >> Gewicht;

cout << "Bitte geben Sie nun Ihre Koerpergroesse in Meter ein." << endl;

cout << "Groesse:" << endl;

cin >> Groesse;

cout << "" << endl;

cout << "Ihr BMI betraegt: " << fixed << setprecision(0) << Gewicht / (Groesse*Groesse) << endl;

cout << setfill('.') << setw(65) << endl;

cout << "" << endl;


if ((Gewicht / (Groesse*Groesse)) < 19)

{
cout << "" << endl;
cout << "Sie haben Untergewicht." << endl;

}

else if ((Gewicht / (Groesse*Groesse)) > 19 <= 25)

{
cout << "" << endl;
cout << "Sie haben Normalgewicht." << endl;

}

else if ((Gewicht / (Groesse*Groesse)) > 25 <= 30)

{
cout << "" << endl;
cout << "Sie haben Uebergewicht." << endl;

}

else if ((Gewicht / (Groesse*Groesse)) > 30)

{
cout << "" << endl;
cout << "Sie haben Adipositas." << endl;

}


cout << setfill('.') << setw(65) << endl;

cout << "" << endl;

cout << "" << endl; //mit nur einer Leerzeile wird diese nicht angezeigt; verstehe ich nicht...

cout << "Wenn Sie eine erneute Abfrage durchfuehren moechten, druecken Sie die 1." << endl;

cout << "" << endl;

cout << "Wenn Sie eine BMI-Uebersichtstabelle erhalten moechten, druecken Sie die 2." << endl;

cout << "" << endl;

cout << "Wenn Sie das Programm schliessen wollen, druecken Sie die 3." << endl;

cout << "" << endl;

cin >> Eingabe;

} while (Eingabe == 1);

system("pause");
return 0;
}

        
Bezug
BMI Rechner: Antwort
Status: (Antwort) fertig Status 
Datum: 19:11 Sa 15.10.2011
Autor: MathePower

Hallo pina7,


[willkommenmr]


> Ich schreibe ein Programm, dass den Body Mass Index
> ausgibt.
>  Nach BMI Ausgabe hat der Nutzer 3 Möglichkeiten:
>  1) erneute Eingabe von Gewicht und Größe, erneute BMI
> Ausgabe, erneute Auswahlmöglichkeit
>  2) Ausgabe einer spezifischen Übersichtstabelle
>  3) sofortiges Schließen des Programms
>  Ich habe diese Frage in keinem Forum auf anderen
> Internetseiten gestellt.
>  
> Hallo,
>  ich bin bisher soweit gekommen, dass Auswahlmöglichkeit 1
> funktioniert.
>  
> Hat jemand eine Idee, wie ich die anderen beiden
> Möglichkeiten programmiere? Noch mal zwei Schleifen oder
> lieber if-Abfragen setzen?
> PS: Meine c++ Kenntnisse sind noch recht frisch.
>  Ab nächster Zeile folgt mein Quellcode.
>  
> // Body_Mass_Index.cpp : Definiert den Einstiegspunkt für
> die Konsolenanwendung.
>  //
>  
> #include "stdafx.h"
>  #include <iostream>
>  #include <iomanip>
>  
> using namespace std;
>  
> int _tmain(int argc, _TCHAR* argv[])
>  {
>   int Gewicht = 0;
>  
> float Groesse = 0.0;
>  
> int Eingabe = 0; // zur Nutzerwahl, wie das Programm
> weiterlaufen soll
>  
>
> // folgende ist die erste Schleife (es wird eine erneute
> Ausgabe durchgeführt)
> do
>   {
>  
> system("cls");
>  
> cout << "*** Body-Mass-Index Berechnung ***" << endl;
>  
> cout << " " << endl;
>  
> cout << "Bitte geben Sie Ihr Koerpergewicht als ganze Zahl
> in Kilogramm ein." << endl;
>  
> cout << "Gewicht:" << endl;
>  
> cin >> Gewicht;
>
> cout << "Bitte geben Sie nun Ihre Koerpergroesse in Meter
> ein." << endl;
>  
> cout << "Groesse:" << endl;
>  
> cin >> Groesse;
>  
> cout << "" << endl;
>  
> cout << "Ihr BMI betraegt: " << fixed << setprecision(0)
> << Gewicht / (Groesse*Groesse) << endl;
>  
> cout << setfill('.') << setw(65) << endl;
>  
> cout << "" << endl;
>  
>
> if ((Gewicht / (Groesse*Groesse)) < 19)
>  
> {
>   cout << "" << endl;
>   cout << "Sie haben Untergewicht." << endl;
>  
> }
>  
> else if ((Gewicht / (Groesse*Groesse)) > 19 <= 25)
>  
> {
>   cout << "" << endl;
>   cout << "Sie haben Normalgewicht." << endl;
>  
> }
>  
> else if ((Gewicht / (Groesse*Groesse)) > 25 <= 30)
>  
> {
>   cout << "" << endl;
>   cout << "Sie haben Uebergewicht." << endl;
>  
> }
>  
> else if ((Gewicht / (Groesse*Groesse)) > 30)
>  
> {
>   cout << "" << endl;
>   cout << "Sie haben Adipositas." << endl;
>  
> }
>  
>
> cout << setfill('.') << setw(65) << endl;
>  
> cout << "" << endl;
>  
> cout << "" << endl; //mit nur einer Leerzeile wird diese
> nicht angezeigt; verstehe ich nicht...
>  
> cout << "Wenn Sie eine erneute Abfrage durchfuehren
> moechten, druecken Sie die 1." << endl;
>  
> cout << "" << endl;
>  
> cout << "Wenn Sie eine BMI-Uebersichtstabelle erhalten
> moechten, druecken Sie die 2." << endl;
>  
> cout << "" << endl;
>  
> cout << "Wenn Sie das Programm schliessen wollen, druecken
> Sie die 3." << endl;
>  
> cout << "" << endl;
>  
> cin >> Eingabe;
>  
> } while (Eingabe == 1);
>  
> system("pause");
>   return 0;
>  }


Für die 2 Fälle

1) Berechnung des BMI
2) BMI-Übersichtstabelle

kannst Du, wegen der Übersichtlichkeit, 2 Funktionen schreiben.

Solltest Du in Sachen C++ noch am Anfang stehen, so sind m.E.
weitere IF-Abfragen sinnvoll. Wie Du dann feststellen wirst, wird
das schnell unübersichtlich.


Gruss
MathePower

Bezug
                
Bezug
BMI Rechner: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 22:23 Sa 15.10.2011
Autor: pina7

danke für deine antwort.

also meinst du mit zwei funktionen zwei neue schleifen oder neue if-bedingungen?
ich weiß auch nicht so genau (egal ob schleife oder if) an welche stelle ich sie dann setzen sollte.
danke nochmals

Bezug
                        
Bezug
BMI Rechner: Antwort
Status: (Antwort) fertig Status 
Datum: 22:38 Sa 15.10.2011
Autor: MathePower

Hallo Pina7,

> danke für deine antwort.
>  
> also meinst du mit zwei funktionen zwei neue schleifen oder
> neue if-bedingungen?


Mit Funktionen meine ich Unterprogramme.
Eines das den BMI ausrechnet, das andere das die Tabelle erstellt.


>  ich weiß auch nicht so genau (egal ob schleife oder if)
> an welche stelle ich sie dann setzen sollte.


Nun,  zu Beginn der Schleife hast Du dann eine Abfrage der Art

if (Eingabe == 1)
{
...// Berechne BMI
}
else if  (Eingabe ==2)
{
... // Erstelle BMI-Übersichtstabelle
}
else
{
... // Verlasse die Schleife
}

Nebenbei bemerkt, die if-Abfragen
betreffend des BMI stimmen auch nicht ganz:


> danke nochmals


Gruss
MathePower

Bezug
                                
Bezug
BMI Rechner: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 11:28 So 16.10.2011
Autor: pina7

Mmh, also ich denke ich brauche noch genauere Hilfestellung.
Ich habe es jetzt mit zwei if-Bedingungen geschrieben.

Für die Tabelle (im Moment nur cout << "Tabelle" <<, wird noch vervollständigt, wenn ich die anderen Probleme gelöst habe) funktioniert es, so, wie ich es möchte.

Zum Schließen möchte ich, dass sich das Fenster nach drücken der 3 und enter sofort schließt, also ohne "beliebige Taste drücken". Ich weis, dass dies über auskommentieren von system("pause"); geschieht. In meinem Fall funktioniert das aber nicht. Warum?

Was genau ist bei den if-Abfragen bzgl. des BMI nicht korrekt?

Danke für die Hilfestellung!
Mein Quellcode:

// Body_Mass_Index.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
//

#include "stdafx.h"
#include <iostream>
#include <iomanip>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
int Gewicht = 0;

float Groesse = 0.0;

int Eingabe = 0; // zur Nutzerwahl, wie das Programm weiterlaufen soll


// folgende ist die Schleife zur erneuten BMI-Bestimmung

do
{

system("cls");

cout << "*** Body-Mass-Index Berechnung ***" << endl;

cout << " " << endl;

cout << "Bitte geben Sie Ihr Koerpergewicht als ganze Zahl in Kilogramm ein." << endl;

cout << "Gewicht:" << endl;

cin >> Gewicht;

cout << "Bitte geben Sie nun Ihre Koerpergroesse in Meter ein." << endl;

cout << "Groesse:" << endl;

cin >> Groesse;

cout << "" << endl;

cout << "Ihr BMI betraegt: " << fixed << setprecision(0) << Gewicht / (Groesse*Groesse) << endl;

cout << setfill('.') << setw(65) << endl;

cout << "" << endl;

if ((Gewicht / (Groesse*Groesse)) < 19)

{
cout << "" << endl;
cout << "Sie haben Untergewicht." << endl;

}

else if ((Gewicht / (Groesse*Groesse)) > 19 <= 25)

{
cout << "" << endl;
cout << "Sie haben Normalgewicht." << endl;

}

else if ((Gewicht / (Groesse*Groesse)) > 25 <= 30)

{
cout << "" << endl;
cout << "Sie haben Uebergewicht." << endl;

}

else if ((Gewicht / (Groesse*Groesse)) > 30)

{
cout << "" << endl;
cout << "Sie haben Adipositas." << endl;

}


cout << setfill('.') << setw(65) << endl;

cout << "" << endl;

cout << "" << endl; //mit nur einer Leerzeile wird diese nicht angezeigt; verstehe ich nicht...

cout << "Wenn Sie eine erneute Abfrage durchfuehren moechten, druecken Sie die 1." << endl;

cout << "" << endl;

cout << "Wenn Sie eine BMI-Uebersichtstabelle erhalten moechten, druecken Sie die 2." << endl;

cout << "" << endl;

cout << "Wenn Sie das Programm schliessen wollen, druecken Sie die 3." << endl;

cout << "" << endl;

cin >> Eingabe;

system("pause");

} while (Eingabe == 1);

// mit dieser if-Abfrage soll eine Tabelle ausgegeben werden

if (Eingabe == 2)

{
cout << "Tabelle" << endl;

system("pause");

}

// hier soll sich das Programm sofort schliessen

else if (Eingabe == 3)

{
return 0;
}


// system("pause");
return 0;
}

Bezug
                                        
Bezug
BMI Rechner: Antwort
Status: (Antwort) fertig Status 
Datum: 12:32 So 16.10.2011
Autor: MathePower

Hallo pina7,

> Mmh, also ich denke ich brauche noch genauere
> Hilfestellung.
>  Ich habe es jetzt mit zwei if-Bedingungen geschrieben.
>  
> Für die Tabelle (im Moment nur cout << "Tabelle" <<, wird
> noch vervollständigt, wenn ich die anderen Probleme
> gelöst habe) funktioniert es, so, wie ich es möchte.
>  
> Zum Schließen möchte ich, dass sich das Fenster nach
> drücken der 3 und enter sofort schließt, also ohne
> "beliebige Taste drücken". Ich weis, dass dies über
> auskommentieren von system("pause"); geschieht. In meinem
> Fall funktioniert das aber nicht. Warum?
>  


Nun, das es sich hier um ein Progamm handelt, das auf der Konsole läuft,
schließt sich hier kein Fenster, sondern das Programm wird beendet, wenn
ein andere als die Taste "1" gedrückt wird.


> Was genau ist bei den if-Abfragen bzgl. des BMI nicht
> korrekt?
>  
> Danke für die Hilfestellung!
>  Mein Quellcode:
>  
> // Body_Mass_Index.cpp : Definiert den Einstiegspunkt für
> die Konsolenanwendung.
>  //
>  
> #include "stdafx.h"
>  #include <iostream>
>  #include <iomanip>
>  
> using namespace std;
>  
> int _tmain(int argc, _TCHAR* argv[])
>  {
>   int Gewicht = 0;
>  
> float Groesse = 0.0;
>  
> int Eingabe = 0; // zur Nutzerwahl, wie das Programm
> weiterlaufen soll
>  
>
> // folgende ist die Schleife zur erneuten BMI-Bestimmung
>  
> do
>   {
>  
> system("cls");
>  
> cout << "*** Body-Mass-Index Berechnung ***" << endl;
>  
> cout << " " << endl;
>  
> cout << "Bitte geben Sie Ihr Koerpergewicht als ganze Zahl
> in Kilogramm ein." << endl;
>  
> cout << "Gewicht:" << endl;
>  
> cin >> Gewicht;
>
> cout << "Bitte geben Sie nun Ihre Koerpergroesse in Meter
> ein." << endl;
>  
> cout << "Groesse:" << endl;
>  
> cin >> Groesse;
>  
> cout << "" << endl;
>  
> cout << "Ihr BMI betraegt: " << fixed << setprecision(0)
> << Gewicht / (Groesse*Groesse) << endl;
>  
> cout << setfill('.') << setw(65) << endl;
>  
> cout << "" << endl;
>  


Zunächst einmal definierst Du Dir eine Variable bmi:

int bmi = Gewicht/(Groesse*Groesse);

Dann werden die Abfragen einfacher.


> if ((Gewicht / (Groesse*Groesse)) < 19)


Hier steht dann: if (bmi < 19)


>  
> {
>   cout << "" << endl;
>   cout << "Sie haben Untergewicht." << endl;
>  
> }
>  
> else if ((Gewicht / (Groesse*Groesse)) > 19 <= 25)

>


Diese if Abfrage muss lauten: if ((bmi > 19) && (bmi <= 25))

  

> {
>   cout << "" << endl;
>   cout << "Sie haben Normalgewicht." << endl;
>  
> }
>  
> else if ((Gewicht / (Groesse*Groesse)) > 25 <= 30)
>  


Genauso hier: if ((bmi > 25)  && (bmi <= 30))


> {
>   cout << "" << endl;
>   cout << "Sie haben Uebergewicht." << endl;
>  
> }
>  
> else if ((Gewicht / (Groesse*Groesse)) > 30)
>  


Genauso hier: if (bmi > 30)


> {
>   cout << "" << endl;
>   cout << "Sie haben Adipositas." << endl;
>  
> }
>  
>
> cout << setfill('.') << setw(65) << endl;
>  
> cout << "" << endl;
>  
> cout << "" << endl; //mit nur einer Leerzeile wird diese
> nicht angezeigt; verstehe ich nicht...
>  
> cout << "Wenn Sie eine erneute Abfrage durchfuehren
> moechten, druecken Sie die 1." << endl;
>  
> cout << "" << endl;
>  
> cout << "Wenn Sie eine BMI-Uebersichtstabelle erhalten
> moechten, druecken Sie die 2." << endl;
>  
> cout << "" << endl;
>  
> cout << "Wenn Sie das Programm schliessen wollen, druecken
> Sie die 3." << endl;
>  
> cout << "" << endl;
>  
> cin >> Eingabe;
>  
> system("pause");
>  
> } while (Eingabe == 1);
>  
> // mit dieser if-Abfrage soll eine Tabelle ausgegeben
> werden
>  
> if (Eingabe == 2)
>  
> {
> cout << "Tabelle" << endl;
>  
> system("pause");
>  
> }
>  
> // hier soll sich das Programm sofort schliessen
>  
> else if (Eingabe == 3)
>  
> {
>   return 0;
>   }

>


Diese Abfrage ist hier unnötig.

Die Abfrage nach dem Wert der Variablen "Eingabe" muss in der Schleife erfolgen.

In der Schleife muss dann stehen:

do
{
...if (Eingabe == 1)
   {
     // Berechnung BMI
    ...
  }
else if (Eingabe ==2)
{
   // BMI-Übersichtstabelle
  ..
}

  //Benutzer auffordern zur Eingabe
...

} while ((Eingabe ==1) || (Eingabe==2));  

Vor Beginn der Schleife muss die Variable "Eingabe" auf 1 gesetzt werden,
damit die Schleife mindestens einmal durchlaufen wird.


> // system("pause");
>   return 0;
>  }


Gruss
MathePower

Bezug
Ansicht: [ geschachtelt ] | ^ Forum "C/C++"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.matheraum.de
[ Startseite | Forum | Wissen | Kurse | Mitglieder | Team | Impressum ]