C++ Projekt Arrays


Alex45

Grünschnabel
#1
Hi zusammen,
ich bin ziemlich neu auf diesem Gebiet und habe schon die ersten Probleme. Ich bin kein absoluter Noob, doch beschränken sich meine Skripte auf ideal Fälle und ich bekomme sie nicht umgewandelt, dass ich sie in meinem Projekt nutzen kann. Ich erkläre kurz was ich vor Habe.
Ich möchte einen BMI Rechner entwickeln in Form von Arrays. Das Grundkonzept steht auch. Ich scheiter momentan daran, aus dem errechneten BMI'S einen Durschnitt zu erhalten und das ich als Ausgabe zu jedem BMI Untergewicht, Normalgewicht oder Übergewicht ausgeben lasse. Letzeres habe ich mir als Switch case vorgestellt.
Ich hoffe mir kann einer von euch helfen. Danke schon einmal.

C++:
#include "pch.h"
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
float Gewicht[30], Groesse[30], BMI[30], Groesse2[30], x, mittelwert;
int sum = 0;
for (int i = 0; i < 3; i++)
{
  cout << " Gewicht in Kg fuer Person " << i+1 << " eingeben " << endl;
  cin >> Gewicht[i];
}
for (int i = 0; i < 3; i++)
{
  cout << " Gewicht in Kg von Person " << i+1 << " = " << Gewicht[i] << endl;
  cout << endl;
}
for (int i = 0; i < 3; i++)
{
  cout << " Groesse in Meter fuer Person " << i+1 << " eingeben  " << endl;
  cin >> Groesse[i];
}
for (int i = 0; i < 3; i++)
{
  cout << " Groesse in m von Person " << i << " = " << Groesse[i] << endl;
  cout << endl;
}
for (int i = 0; i < 3; i++)
{
  Groesse2[i] = Groesse[i] * Groesse[i];
  BMI[i] = Gewicht[i] / Groesse2[i];
  cout << "BMI " << BMI[i] << endl;
  
}

return 0;
}
 
Zuletzt bearbeitet von einem Moderator:

ComFreek

Mod | @comfreek
Moderator
#2
Hallo Alex und willkommen im Forum!

Bitte Code-Tags [ code=cpp] ... [/code ] nutzen. Ich habe deinen Beitrag für dich bereits editiert.

Das ist (a) ein klassischer Include in C (und hat daher in C++ eher weniger zu suchen) und (b) brauchst du das nicht.

Sei dir darüber im Klaren, dass das "using namespace std" i. Allg. nicht tun sollte. Gründe findest du im Internet, insb. auf StackOverflow genug ;) In diesem Kleinstbeispiel von dir kann man das jedoch noch durchgehen lassen.

float Gewicht[30], Groesse[30], BMI[30], Groesse2[30], x, mittelwert; int sum = 0;
Deklariere keine Variablem im Voraus, wenn du sie erst später brauchst. Du kannst überall Variablen deklarieren. Nutze dieses Feature (jeder normalen Programmiersprache).

Letzeres habe ich mir als Switch case vorgestellt.
Switch-Case prüft einen Wert auf Gleichheit mit vorgegebenen Werten. Für den BMI willst du jedoch Fragen der Art "< 20", ">= 20 && < 26" und ">= 26" stellen. (Das sind beliebige Werte, die mir gerade eingefallen sind und ungefähr in die richtige Richtung beim BMI gehen müssten ;))
Switch fällt daher weg und es bleibt dir also nur noch das if-Konstrukt, um dein Vorhaben zu realisieren.
 

Alex45

Grünschnabel
#3
Danke für die schnelle Antwort.

Switch-Case prüft einen Wert auf Gleichheit mit vorgegebenen Werten. Für den BMI willst du jedoch Fragen der Art "< 20", ">= 20 && < 26" und ">= 26" stellen. (Das sind beliebige Werte, die mir gerade eingefallen sind und ungefähr in die richtige Richtung beim BMI gehen müssten ;))
Switch fällt daher weg und es bleibt dir also nur noch das if-Konstrukt, um dein Vorhaben zu realisieren.[/QUOTE]

Als if habe ich es auch schon probiert. Leider bekomme ich es überhaupt nicht zum laufen
.
Kannst du mir vielleicht grob zeigen wie das dann aussieht?
 

ComFreek

Mod | @comfreek
Moderator
#4
Als if habe ich es auch schon probiert. Leider bekomme ich es überhaupt nicht zum laufen
Wenn du das nächste Mal gleich den Code posten würdest (und die Fehlermeldung), dann könnte ich dir direkt sagen, was falsch ist.
C++:
// BMI-Werte sind fake
if (BMI < 20) {
  cout << "Untergewicht";
}
if (BMI >= 20 && BMI < 26) {
  cout << "Normal";
}
if (BMI >= 26) {
  cout << "Übergewicht";
}
(Wenn du das damit mal zum Laufen bekommst, könntest du dir überlegen, wie du das sauberer hinschreiben könntest. Könntest du evtl. else-if und else ausnutzen, um Code zu sparen?)
 

Alex45

Grünschnabel
#5
Also das Projekt steht soweit und ich bin ganz Zufrieden. Für meinen Kenntnisstand vor dem Projekt und jetzt ein riesen Lernerfolg. Ich möchte noch bis zur Abgabe die Gewichte bis 500Kg und Größe bis 3m ergänzen, kleine Schönheitsfehler beheben und meine Zeilen kommentieren. #Ich danke für die Hilfe und bin natürlich für weitere Anregungen offen.
Im Anschluss hänge ich das Projekt nochmal:
[Code =cpp]
#include "pch.h"
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
float Gewicht[5], Groesse[5], BMI[5], Groesse2[5], x, mittelwert;
int sum = 0;
cout << "Herzlich Willkommen zum BMI Rechner von Alexander Klein" << endl << "Benutzen Sie anstelle eines Kommas (,) einen Punkt (.)" << endl;
cout << "Bestaetigen Sie jede Eingabe mit Enter" << endl << endl;
for (int i = 0; i < 5; i++)
{
cout << "Gewicht fuer Person " << i+1 << " eingeben in Kilogramm" << endl;
cin >> Gewicht ;

}
cout << endl;

for (int i = 0; i < 5; i++)
{
cout << "Groesse fuer Person " << i+1 << " eingeben in Meter " << endl;
cin >> Groesse;

}
cout << endl;
for (int i = 0; i < 5; i++)
{
cout << "Gewicht in Kg von Person " << i + 1 << " = " << Gewicht << endl;
//cout << endl;
}
for (int i = 0; i < 5; i++)
{
cout << "Groesse in m von Person " << i+1 << " = " << Groesse << endl;
//cout << endl;
}
cout << endl;
for (int i = 0; i < 5; i++)
{
Groesse2 = Groesse * Groesse;
BMI = Gewicht / Groesse2;
cout << "Der BMI von Person " << i+1 << " ist " << BMI << endl;

}
cout << endl;
if (BMI[0] < 22) {
cout << "Person 1 hat Untergewicht";
}
if (BMI[0] >= 22 && BMI[0] < 28) {
cout << "Person 1 hat Normalgewicht";
}
if (BMI[0] >= 28) {
cout << "Person 1 hat Uebergewicht";
}
cout << endl;
if (BMI[1] < 22) {
cout << "Person 2 hat Untergewicht";
}
if (BMI[1] >= 22 && BMI[1] < 28) {
cout << "Person 2 hat Normalgewicht";
}
if (BMI[1] >= 28) {
cout << "Person 2 hat Uebergewicht";
}
cout << endl;
if (BMI[2] < 22) {
cout << "Person 3 hat Untergewicht";
}
if (BMI[2] >= 22 && BMI[2] < 28) {
cout << "Person 3 hat Normalgewicht";
}
if (BMI[2] >= 28) {
cout << "Person 3 hat Uebergewicht";
}
cout << endl;
if (BMI[3] < 22) {
cout << "Person 4 hat Untergewicht";
}
if (BMI[3] >= 22 && BMI[3] < 28) {
cout << "Person 4 hat Normalgewicht";
}
if (BMI[3] >= 28) {
cout << "Person 4 hat Uebergewicht";
}
cout << endl;
if (BMI[4] < 22) {
cout << "Person 5 hat Untergewicht";
}
if (BMI[4] >= 22 && BMI[4] < 28) {
cout << "Person 5 hat Normalgewicht";
}
if (BMI[4] >= 28) {
cout << "Person 5 hat Uebergewicht";
}
cout << endl << endl;
for (int i = 0; i < 1; i++)
{
mittelwert = (BMI[0] + BMI[1] + BMI[2] + BMI[3] + BMI[4]) / 5;
cout << "Im Durchschnitt ist der BMI " << mittelwert << endl;
cout << endl << endl;
}
if (mittelwert < 22) {
cout << "Im Durchschnitt haben die Teilnehmer Untergewicht" << endl;
}
if (mittelwert >= 22 && mittelwert < 28) {
cout << "Im Durchschnitt haben die Teilnehmer Normalgewicht" << endl;
}
if (mittelwert >= 28) {
cout << "Im Durchschnitt haben die Teilnehmer Uebergewicht" << endl;
}
cout << endl << "Die Werte und Formel stammen vom aktuellen BMI Rechner der Technikerkrankenkasse." << endl;
cout << "Die Einstufungen sind nur Richtwerte und koennen von Person zu Person unterschiedliche" << endl;
cout << "Gruende haben." << endl;
cout << "Quelle: Ihre Krankenversicherung: Techniker Krankenkasse | Die Techniker" << endl << endl;

exit(0);
}
 

Jennesta

Erfahrenes Mitglied
#7
Hallo,
da du auch nach Anregungen gefragt hattest, hier noch ein Hinweis.
Dir fällt sicher auch auf, dass der if-else Part für die einzelnen Personen immer gleich aussieht. Das einzige was sich hier ändert ist lediglich der Index beim BMI, bzw. die Personennummer. Ähnlich wie bei der Angabe der Größe könntest du die Berechnung/Ausgabe ebenfalls mit einer Schleife realisieren. Damit kannst du später auch einfacher eine variable Anzahl an Personen umsetzen.

Viele Grüße
 

Neue Beiträge