Problem bei BMI rechner Variabletyp falsch?



  • C/C++ Code:
    int* p = 0;
    p = new int(5);
    

    an sich sollt eman sich eh angewöhnen verwaltete Pointer (auto_ptr, shared_ptr, etc.) zu verwenden. Abgesehen davon ist eine Initialisierung bei Pointern stark anzuraten.



  • muffmolch schrieb:

    an sich sollt eman sich eh angewöhnen verwaltete Pointer (auto_ptr, shared_ptr, etc.) zu verwenden.

    Ja, das schon. Es ging mir auch eher darum, übertriebenes Null-Setzen aufzuzeigen. Und rohe Zeiger haben teilweise durchaus ihre Berechtigung.

    muffmolch schrieb:

    Abgesehen davon ist eine Initialisierung bei Pointern stark anzuraten.

    Was? Wie meinst du das?



  • Ich hab folgenden Teil im Überfliegen nochmal angesehen und dann gepostet...

    float weight, size;
        float bmi = weight/(size * size);
    

    Ist klar dass hier ohne Initialisierung irgendwas herauskommt.
    Daher meinte ich es wäre in Fällen wo nichts eingelesen wird bzw. die Variable sich nachher nicht verändert, besser direkt den Wert zu vergeben.



  • Nexus schrieb:

    muffmolch schrieb:

    Abgesehen davon ist eine Initialisierung bei Pointern stark anzuraten.

    Was? Wie meinst du das?

    Ich denke mal, dass er die 0 Initialisierung meint. Von wegen Überprüfung, ob es ein gültiger Zeiger ist, delete usw.



  • drakon schrieb:

    Ich denke mal, dass er die 0 Initialisierung meint. Von wegen Überprüfung, ob es ein gültiger Zeiger ist, delete usw.

    Das macht für mich aber keinen Sinn... Wieso sollte davon im Allgemeinen stark abzuraten sein?



  • Nexus schrieb:

    drakon schrieb:

    Ich denke mal, dass er die 0 Initialisierung meint. Von wegen Überprüfung, ob es ein gültiger Zeiger ist, delete usw.

    Das macht für mich aber keinen Sinn... Wieso sollte davon im Allgemeinen stark abzuraten sein?

    Er schreib: anzuraten. 😉



  • Fellhuhn schrieb:

    Er schreib: anzuraten. 😉

    Hehe, tatsächlich. Das hab ich jetzt schon die ganze Zeit falsch gelesen - merkwürdig. In dem Fall ist natürlich alles klar. 😃



  • Nexus schrieb:

    Fellhuhn schrieb:

    Er schreib: anzuraten. 😉

    Hehe, tatsächlich. Das hab ich jetzt schon die ganze Zeit falsch gelesen - merkwürdig. In dem Fall ist natürlich alles klar. 😃

    sorry, hab jetzt erst wieder reingeschaut. aber die frage hat sich ja dann doch von selbst geklärt... aBzuraten wäre davon die pointer nicht mit NULL zu initialisieren 😉 ich werde in zukunft solche unstimmigkeiten besser hervorheben



  • muffmolch schrieb:

    ich werde in zukunft solche unstimmigkeiten besser hervorheben

    Nein, das war absolut okay von dir. Ich habe nur falsch gelesen, der Fehler liegt also gänzlich bei mir... Sorry für die entstandenen Umstände 🙂



  • Wow ihr habt alle einen voll kurzen Quelltext, also wir hatten das jetzt in der schule, ich hab nen ewig langen xDD aber er funzt! xDD

    //Lanny-------------------10.12.09------------BMI.cpp
    
    #include<iostream>
    #include<iomanip>
    
    using namespace std;
    
    int main()
    {
    
    	char cgeschlecht;
    	float fgros, fgewicht, falter, fNormal, fideal, fabwei, fbmi;
    
    	cout<<"\n\nGeben Sie Ihr Geschlecht ein(m oder w)\t:\t";
    	cin>>cgeschlecht;
    	cout<<"\nGeben Sie Ihre Groesse (in cm) ein\t:\t";
    	cin>>fgros;
    	cout<<"\nGeben Sie Ihr Gewicht (in kg) ein\t:\t";
    	cin>>fgewicht;
    	cout<<"\nGeben Sie Ihr Alter ein (in Jahren)\t:\t";
    	cin>>falter;
    
    	system("cls");
    
    	cout<<"\n\nGeschlecht:\t\t"<<cgeschlecht;
    	cout<<"\nGroesse:\t\t"<<fgros;
    	cout<<"\nGewicht:\t\t"<<fgewicht;
    	cout<<"\nAlter:\t\t\t"<<falter<<"\n\n";
    
    	//Berechnungen
    
    	fNormal=fgros-100;
    
    	if(cgeschlecht=='m')
    	{
    		fideal=fNormal/100*90;
    		fabwei=fgewicht-fideal;
    		fbmi=fgewicht/(fgros/100*fgros/100);
    
    	}
    	else
    	{
    		fideal=fNormal/100*85;
    		fabwei=fgewicht-fideal;
    		fbmi=fgewicht/(fgros/100*fgros/100);
    	}
    
    		//BMI Bewertung
    
    	switch(cgeschlecht)
    	{
    		case 'm' : 
    	{
    
    			if(fbmi<20)
    			{
    				cout<<"Mit einem BMI von "<<fbmi<<" haben sie Untergewicht!";
    				cout<<"\n\n\nIhr Idealgewicht:\t\t\t"<<fideal;
    				cout<<"\n\nIhre Abweichung vom Idealgewicht:\t"<<fabwei;
    				cout<<"\n\nIhr BMI betraegt:\t\t\t\t"<<fbmi;
    			}
    			else
    			{
    				if(fbmi<25)
    				{
    					cout<<"Mit einem BMI von "<<fbmi<<" haben Sie Normalgewicht!";
    					cout<<"\n\n\nIhr Idealgewicht:\t\t\t"<<fideal;
    					cout<<"\n\nIhre Abweichung vom Idealgewicht:\t"<<fabwei;
    					cout<<"\n\nIhr BMI betraegt:\t\t\t\t"<<fbmi;
    				}
    				else
    				{
    					if(fbmi<30)
    					{
    						cout<<"Mit einem BMI von "<<fbmi<<" haben Sie Uebergewicht!";
    						cout<<"\n\n\nIhr Idealgewicht:\t\t\t"<<fideal;
    						cout<<"\n\nIhre Abweichung vom Idealgewicht:\t"<<fabwei;
    						cout<<"\n\nIhr BMI betraegt:\t\t\t\t"<<fbmi;
    					}
    					else
    					{
    						if(fbmi<40)
    						{
    							cout<<"Mit einem BMI von "<<fbmi<<" haben Sie Adipositas!\nBitte suchen Sie umgehend einen Arzt auf!!";
    							cout<<"\n\n\nIhr Idealgewicht:\t\t\t"<<fideal;
    							cout<<"\n\nIhre Abweichung vom Idealgewicht:\t"<<fabwei;
    							cout<<"\n\nIhr BMI betraegt:\t\t\t\t"<<fbmi;
    						}
    						else
    						{
    								cout<<"Mit einem BMI von "<<fbmi<<" haben Sie starke Adipositas!\nBitte suchen Sie umgehend einen Arzt auf!";
    								cout<<"\n\n\nIhr Idealgewicht:\t\t\t"<<fideal;
    								cout<<"\n\nIhre Abweichung vom Idealgewicht:\t"<<fabwei;
    								cout<<"\n\nIhr BMI betraegt:\t\t\t\t"<<fbmi;
    						}
    					}
    				}
    			}
    	}
    
    	break;
    
    					case 'w' : 
    						{
    
    			if(fbmi<19)
    			{
    				cout<<"Mit einem BMI von "<<fbmi<<" haben sie Untergewicht!";
    				cout<<"\n\n\nIhr Idealgewicht:\t\t\t"<<fideal;
    				cout<<"\n\nIhre Abweichung vom Idealgewicht:\t"<<fabwei;
    				cout<<"\n\nIhr BMI betraegt:\t\t\t\t"<<fbmi;
    			}
    			else
    			{
    				if(fbmi<=24)
    				{
    					cout<<"Mit einem BMI von "<<fbmi<<" haben Sie Normalgewicht!";
    					cout<<"\n\n\nIhr Idealgewicht:\t\t\t"<<fideal;
    					cout<<"\n\nIhre Abweichung vom Idealgewicht:\t"<<fabwei;
    					cout<<"\n\nIhr BMI betraegt:\t\t\t\t"<<fbmi;
    				}
    				else
    				{
    					if(fbmi<=30)
    					{
    						cout<<"\n\nMit einem BMI von "<<fbmi<<" haben Sie Uebergewicht!";
    						cout<<"\n\n\nIhr Idealgewicht:\t\t\t"<<fideal;
    						cout<<"\n\nIhre Abweichung vom Idealgewicht:\t"<<fabwei;
    						cout<<"\n\nIhr BMI betraegt:\t\t\t\t"<<fbmi;
    					}
    					else
    					{
    						if(fbmi<=40)
    						{
    							cout<<"Mit einem BMI von "<<fbmi<<" haben Sie Adipositas!\nBitte suchen Sie umgehend einen Arzt auf!";
    							cout<<"\n\n\nIhr Idealgewicht:\t\t\t"<<fideal;
    							cout<<"\n\nIhre Abweichung vom Idealgewicht:\t"<<fabwei;
    							cout<<"\n\nIhr BMI betraegt:\t\t\t\t"<<fbmi;
    						}
    						else
    						{
    								cout<<"Mit einem BMI von "<<fbmi<<" haben Sie starke Adipositas!\nBitte suchen Sie umgehend einen Arzt auf!";
    								cout<<"\n\n\nIhr Idealgewicht:\t\t\t"<<fideal;
    								cout<<"\n\nIhre Abweichung vom Idealgewicht:\t"<<fabwei;
    								cout<<"\n\nIhr BMI betraegt:\t\t\t\t"<<fbmi;
    						}
    					}
    				}
    			}
    						}
    
    						break;
    
    		default: 
    			{
    				cout<<"Falsche eingabe!";
    			}
    
    	}
    
    		//optimale BMI nach Alter
    
    	if(falter>=19 && falter<=24 && fbmi>=19 && fbmi<=24)
    	{
    		cout<<"\n\nSie haben einen optimalen BMI!";
    	}
    	else
    	{
    		if(falter<=34 && fbmi>=20 && fbmi<=25)
    		{
    			cout<<"\n\nSie haben einen optimalen BMI!";
    		}
    		else
    		{
    			if(falter<44 && fbmi>=21 && fbmi<=26)
    			{
    				cout<<"\n\nSie haben einen optimalen BMI!";
    			}
    			else
    			{
    				if(falter<54 && fbmi>=22 && fbmi<=27)
    				{
    					cout<<"\n\nSie haben einen optimalen BMI!";
    				}
    				else
    				{
    					if(falter<64 && fbmi>=23 && fbmi<=28)
    					{
    						cout<<"\n\nSie haben einen optimalen BMI!";
    					}
    					else
    					{
    						if(falter>65 && fbmi>=24 && fbmi<=29)
    						{
    							cout<<"\n\nSie haben einen optimalen BMI!";
    						}
    						else
    						{
    							cout<<"\n\nSie haben keinen optimalen BMI!";
    						}
    					}
    				}
    			}
    		}
    	}
    
    	cin.get();cin.get();
    
    	return 0;
    }
    


  • Funktionen und Schleifen sind hier wohl das Stichwort!

    Du wirst den Code noch exterm verbessern können, wenn du diese 2 Sprachfeatures auch noch lernst!


Anmelden zum Antworten