Parameter Problem. "bezeichner nicht definiert" obwohl in der Klasse vorhanden. -= gelöst =-



  • Vor allem wird hier die Allokation und das ganze Drumherum von std::string gespart. Die strings können somit direkt vom Compiler so wie sie da stehen in den Code eingefügt werden. Ich würde allerdings den Zeiger auch noch const machen.



  • 314159265358979 schrieb:

    Ich würde allerdings den Zeiger auch noch const machen.

    Ach, ich Deppchen. Ich habe überall const vergessen, zum Beispiel

    void aDreieck() {
        double const h=eingabeDouble("Bitte geben sie die Hoehe des Dreiecks an.");
        double const g=eingabeDouble("Bitte geben Sie nun noch die Grundseite des Dreiecks an.");
        double const aDreieck = g*h/2;
        cout << "Die Formel lautet g * h : 2\n";
        cout << "Die Flaeche des Dreiecks lautet daher: " << aDreieck << '\n';
    }
    


  • Mal ne Frage: was macht es für einen Sinn, den Wert Konstant zu machen, wenn es völlig ersichtlich ist, dass er nicht mehr verändert wird 😕
    Und könnte man 'g*h/2' nicht gleich in den Ausgabe-Stream schreiben ?
    Oder auch sowas:

    void aDreieck() 
    {
        double aDreieck =
        eingabeDouble("Bitte geben Sie die Grundseite des Dreiecks an.")*
        eingabeDouble("Bitte geben sie nun noch die Hoehe des Dreiecks an.")/2;
        cout << "Die Formel lautet g * h : 2\n"
                 "Die Flaeche des Dreiecks lautet daher: " << aDreieck << '\n';
    }
    

    Edit: hab grad die Antwort gesehen. Passt nicht 🙄



  • Hacker schrieb:

    Und könnte man 'g*h/2' nicht gleich in den Ausgabe-Stream schreiben ?

    Ja nein.
    Ich mag die extrem hochkomplizierte mathematische Berechnung in einer eigenen Zeile haben, um das Programm zu entwirren.



  • Hacker schrieb:

    Mal ne Frage: was macht es für einen Sinn, den Wert Konstant zu machen, wenn es völlig ersichtlich ist, dass er nicht mehr verändert wird 😕

    Ok, dann mache ich das const halt wieder weg.
    Aber jetzt weiß ich nicht, wieviel const überleben soll. Also bei Compilezeitkonstenten wie HAUPTMENU, ENDE und ANZAHL maxchen wir bestimmt ein const.
    Und wo lassen wir es weg? PI, welchen Zeiger meintest Du? Und soll der wirklich const sein oder nicht? Nach welcher Regelung?



  • Hacker schrieb:

    double aDreieck =
        eingabeDouble("Bitte geben Sie die Grundseite des Dreiecks an.")*
        eingabeDouble("Bitte geben sie nun noch die Hoehe des Dreiecks an.")/2;
    

    Nein, so etwas bitte nicht. Die Reihenfolge der Funktionsaufrufe ist undefiniert. Wenn sie das sein soll, braucht es mindestens eine Zwischenvariable.



  • Aber

    double aDreieck =
        eingabeDouble("Bitte geben Sie die Grundseite des Dreiecks an.")*
        eingabeDouble("Bitte geben sie die Hoehe des Dreiecks an.")/2;
    

    wäre spaßig, weil es zufällig nicht falsch wird.



  • @volkard: consts lassen, was nicht verändert werden muss, ist const 😉

    char const* const namen[ANZAHL] = { ... };
    

    Die Funktionszeiger würde ich instinktiv auch const machen, aber wo das const da hin soll, weiß ich nicht.



  • const char* const namen[ANZAHL] = { ... };
    

    oder 🤡



  • void(*const funktionen[ANZAHL])()=
    

    würde ein versehentliches

    funktionen[3]=&aKreis;
    

    verhindern.



  • Arbeitet der Compiler nicht von Links nach rechts ?
    Müssten die Funktionen in meinem Beispiel nicht nacheinander aufgerufen werden und nicht zufällig ? Oder ist das Compilerspezifisch ? 😕



  • 314159265358979 schrieb:

    @volkard: consts lassen, was nicht verändert werden muss, ist const 😉

    Also ich glaube fast, die Profis hauen nicht so viel const rein.



  • Hacker schrieb:

    Arbeitet der Compiler nicht von Links nach rechts ?
    Müssten die Funktionen in meinem Beispiel nicht nacheinander aufgerufen werden und nicht zufällig ? Oder ist das Compilerspezifisch ? 😕

    Ist compilerspezifisch.
    Deine rechet von links nach rechts, also

    double aDreieck =
        eingabeDouble("Bitte geben Sie die Grundseite des Dreiecks an.")*
        eingabeDouble("Bitte geben sie die Hoehe des Dreiecks an.")/2;
    

    Grundseite voe Höhe.

    Und ruft von rechts nach links Funktionsargumente auf, also

    double aDreieck =
        mul(eingabeDouble("Bitte geben Sie die Grundseite des Dreiecks an."),
           eingabeDouble("Bitte geben sie die Hoehe des Dreiecks an."))
        /2;
    

    Höhe vor Grundseite.

    Nehme ich mal an. Könnte aber auch anders sein.



  • Hacker schrieb:

    const char* const namen[ANZAHL] = { ... };
    

    oder 🤡

    Nein,

    char const* const namen[ANZAHL] = { ... };
    

    (Deins geht zwar auch, finde ich aber unhübsch.)



  • volkard schrieb:

    Also ich glaube fast, die Profis hauen nicht so viel const rein.

    Das weiß ich nicht. Besser ein const zu viel als eines zu wenig.



  • volkard schrieb:

    314159265358979 schrieb:

    @volkard: consts lassen, was nicht verändert werden muss, ist const 😉

    Also ich glaube fast, die Profis hauen nicht so viel const rein.

    Musst du wissen, du bist doch hier der Guru 😉



  • Hacker schrieb:

    Musst du wissen, du bist doch hier der Guru 😉

    Ich glaube auch Gurus kein Wort, wenn sie keine Begründung anbringen können.



  • Ich bin zwar kein Guru, aber aus Prinzip mache ich so viel const wie möglich und sinnvoll. Das vermeidet Fehler. Zugegebenermaßen habe ich noch nie einen Fehler durch ungewolltes verändern einer lokalen Variable gehabt, aber mit const kann ich diese Intention direkter ausdrücken. Das hat eher syntaktischen Wert für mich.



  • Hi leuDe,

    zum Thema const.correctnes:
    http://www.possibility.com/Cpp/const.html

    Greetz



  • #include <iostream>
    #include <conio.h>
    #include <string>
    
    using namespace std;
    long int wahl,wahl2;
    const double pi = 3.141;
    bool hauptauswahl,menue2;
    bool ak,uk,ad,ar,vz,ur,ara,ap,at,adra,vke,vku,vp;
    void prozess();
    void prozess2();
    void Hauptauswahl();
    void Menue2();
    void AKreis();
    void UKreis();
    void ADreieck();
    void ARechteck();
    void VZylinder();
    void URaute();					   
    void ARaute();		   
    void AParallelogramm();
    void ATrapez();
    void ADrachen();	   
    void VKegel();	  
    void VKugel();			   
    void VPyramide();	
    
    int main()
    {
    	Hauptauswahl();
    	prozess();
    }
    
    void Hauptauswahl()
    {
    	do
    	{
    		 menue2 = false;
    	     cout << "Hauptauswahl" 
    		 << "\n\nBitte waehlen Sie das gewuenschte Programm:"
    		 << "\n\n(1) Flaecheninhalt eines Kreises" 
    		 << "\n(2) Umfang eines Kreises" 
    		 << "\n(3) Flaecheninhalt eines Dreiecks" 
    		 << "\n(4) Flaecheninhalt eines Rechtecks" 
    		 << "\n(5) Volumen eines Zylinders" 
    		 << "\n(6) Umfang einer Raute" 
    		 << "\n(7) Flaecheninhalt einer Raute" 
    		 << "\n(8) Flaecheninhalt eines Parallelogramms" 
    		 << "\n(9) Flaecheninhalt eines Trapezes" 
    		 << "\n(10) Flaecheninhalt eines Drachen" 
    		 << "\n(11) Volumen eines Kegels" 
    		 << "\n(12) Volumen einer Kugel" 
    		 << "\n(13) Volumen einer pyramide" 
    		 << "\n(14) Programm beenden"
    		 << "\n\n(15) Anleitung zum Programm" << endl;
    	}
    	while (hauptauswahl == true);
    }
    
    void prozess()
    {
    	if (cin >> wahl)
    		{
    			system("cls");
    			switch (wahl)
    			{
    			case 1:
    				hauptauswahl = false;
    				AKreis();
    				break;
    			case 2:
    				hauptauswahl = false;
    				UKreis();
    				break;
    			case 3:
    				hauptauswahl = false;
    				ADreieck();
    				break;
    			case 4:
    				hauptauswahl = false;
    				ARechteck();
    				break;
    			case 5:
    				hauptauswahl = false;
    				VZylinder();
    				break;
    			case 6:
    				hauptauswahl = false;
    				URaute();
    				break;
    			case 7:
    				hauptauswahl = false;
    				ARaute();
    				break;
    			case 8:
    				hauptauswahl = false;
    				AParallelogramm();
    				break;
    			case 9:
    				hauptauswahl = false;
    				ATrapez();
    				break;
    			case 10:
    				hauptauswahl = false;
    				ADrachen();
    				break;
    			case 11:
    				hauptauswahl = false;
    				VKegel();
    				break;
    			case 12:
    				hauptauswahl = false;
    				VKugel();
    				break;
    			case 13:
    				hauptauswahl = false;
    				VPyramide();
    				break;
    			case 14:
    				hauptauswahl = false;
    				system("cls");
    				cout << "Danke , dass Sie dieses Programm genutzt haben!\n\n"
    					 << "Es wurde entwickelt von\n\n"
    					 << "ZODIAC UCHIHA" << endl;
    				_getch();
    				exit(1);
    				break;
    			case 15:
    				hauptauswahl = false;
    				cout << "Geben Sie einfach die Zahl ein, die fuer die Funktion Ihrer wahl steht.\n"
    					 << "Bei einer Fehleingabe werden Sie automatisch zur Hauptauswahl zurueck geleitet.\n"
    					 << "In diesem Programm brauchen sie nur Zahlen eingeben um sich zwischen den Menues\n"
    					 << "hin und her zu bewegen. Auch innerhalb der Funktionen geben sie die Zahlen in\n"
    					 << "Form von Ziffern ein, NICHT in Form von Text!\n"
    					 << "Mehr gibt es zu diesem Programm nicht zu sagen. Simpel und praktisch oder?\n\n\n\n"
    					 << "Dieses Programm wurde entwickelt von\n\n\n"
    					 << "ZODIAC UCHIHA\n\n\n\n\n\n\n\n\n\n\n"
    					 << "Alle Rechte vorbehalten !" << endl;
    				_getch();
    				system("cls");
    				main();
    				break;
    			}
    			if ( wahl > 15)
    			{
    				hauptauswahl = false;
    				system("cls");
    				cerr << "Dies war eine zu grosse Zahl!\a\n"
    					 << "Bitte geben Sie die richtige Zahl fuer die Funktion Ihrer Wahl ein.\n\n"
    					 << "Sie werden nochmal zur Hauptauswahl geleitet." << endl;
    				_getch();
    				system("cls");
    				main();
    			}
    			if ( wahl < 1)
    			{
    				hauptauswahl = false;
    				system("cls");
    				cerr << "Das war eine negative Zahl oder die Null!\a\n"
    					 << "Bitte geben Sie die richtige Zahl fuer die Funktion Ihrer Wahl ein.\n\n"
    					 << "Sie werden nochmal zur Hauptauswahl geleitet." << endl;
    				_getch();
    				system("cls");
    				main();
    			}
    		}
    		else if (!(cin >> wahl))
    		{
    			hauptauswahl = false;
    			system("cls");
    			cerr << "Dies war ein Zeichen! Nur Zahlen sind erlaubt.\a\n"
    				 << "Bitte geben Sie die richtige Zahl fuer die Funktion Ihrer Wahl ein.\n\n"
    				 << "Sie werden nochmal zur Hauptauswahl geleitet." << endl;
    			cin.clear();
    			string g;
    			getline(cin,g);
    			_getch();
    			system("cls");
    			main();
    		}
    }
    
    void Menue2()
    {
    	do
    	{
    		cout << "\n\nZur Hauptauswahl?\n\n"
    			 << "(1) Ja\n"
    			 << "(2) Nochmal\n"
    			 << "(3) Beenden\n" << endl;
    	}
    	while (menue2 == true);
    }
    
    void prozess2()
    {
    	if (cin >> wahl2)
    	{
    		switch (wahl2)
    		{
    		case 1:
    			menue2 = false;
    			system("cls");
    			Hauptauswahl();
    			prozess();
    			break;
    		case 2:
    			menue2 = false;
    			system("cls");
    			if ( ak == true)
    			{
    				AKreis();
    			}
    			else if (uk == true)
    			{
    				UKreis();
    			}
    			else if (ad == true)
    			{
    				ADreieck();
    			}
    			else if (ar == true)
    			{
    				ARechteck();
    			}
    			else if (vz == true)
    			{
    				VZylinder();
    			}
    			else if (ur == true)
    			{
    				URaute();
    			}
    			else if (ara == true)
    			{
    				ARaute();
    			}
    			else if (ap == true)
    			{
    				AParallelogramm();
    			}
    			else if (at == true)
    			{
    				ATrapez();
    			}
    			else if (adra == true)
    			{
    				ADrachen();
    			}
    			else if (vke == true)
    			{
    				VKegel();
    			}
    			else if (vku == true)
    			{
    				VKugel();
    			}
    			else if (vp == true)
    			{
    				VPyramide();
    			}
    			break;
    		case 3:
    			menue2 = false;
    			system("cls");
    			cout << "Danke , dass Sie dieses Programm genutzt haben!\n\n"
    				 << "Es wurde entwickelt von\n\n"
    				 << "ZODIAC UCHIHA" << endl;
    			_getch();
    			exit(1);
    			break;
    		}
    			if ( wahl2 > 3)
    			{
    				hauptauswahl = false;
    				system("cls");
    				cerr << "Das war eine zu grosse Zahl!\a\n"
    					 << "Bitte geben Sie die richtige Zahl fuer die Funktion Ihrer Wahl ein.\n\n"
    					 << "Sie werden zur Hauptauswahl geleitet." << endl;
    				_getch();
    				system("cls");
    				Hauptauswahl();
    				prozess();
    			}
    			if ( wahl2 < 1)
    			{
    				hauptauswahl = false;
    				system("cls");
    				cerr << "Das war eine negative Zahl oder die Null!\a\n"
    					 << "Bitte geben Sie die richtige Zahl fuer die Funktion Ihrer Wahl ein.\n\n"
    					 << "Sie werden zur Hauptauswahl geleitet." << endl;
    				_getch();
    				system("cls");
    				Hauptauswahl();
    				prozess();
    			}
    			else if (!(cin >> wahl2))
    			{
    			hauptauswahl = false;
    			cin.clear();
    			string g;
    			getline(cin,g);
    			system("cls");
    			cerr << "Dies war ein Zeichen! Nur Zahlen sind erlaubt.\a\n"
    				 << "Bitte geben Sie die richtige Zahl fuer die Funktion Ihrer Wahl ein.\n\n"
    				 << "Sie werden zur Hauptauswahl geleitet." << endl;
    			_getch();
    			system("cls");
    			Hauptauswahl();
    			prozess();
    			}
    	}
    }
    
    void AKreis()
    {	
    	ak = true;
    	vku = false;
    	vp = false;
    	uk = false;
    	ad = false;
    	ar = false;
    	vz = false;
    	ur = false;
    	ara = false;
    	ap = false;
    	at = false;
    	adra = false;
    	vke = false;
    	double r;
    	double aKreis;
    	cout << "Flaecheninhalt eines Kreises" << endl;
    	cout << "\n\nBitte geben Sie den Radius des Kreises an." << endl;
    	if (cin >> r)
    	{
    		aKreis = pi*r*r;
    		cout << "\nDie Formel lautet  Pi * r * r" << endl; 
    		cout << "\nDer Flaecheninhalt des Kreises lautet daher: " << aKreis << endl;
    		Menue2();
    		prozess2();
    	}
    	else
    	{
    		system("cls");
    		cin.clear();
    		string g;
    		getline(cin,g);
    		cerr << "Dies war ein Zeichen! Bitte nur Zahlen eingeben!\n\n"
    			 << "Versuchen Sie es nochmal.\a" << endl;
    		_getch();
    		system("cls");
    		AKreis();
    	}
    }			          
    
    void UKreis()
    {	
    	uk = true;
    	vku = false;
    	vp = false;
    	ak = false;
    	ad = false;
    	ar = false;
    	vz = false;
    	ur = false;
    	ara = false;
    	ap = false;
    	at = false;
    	adra = false;
    	vke = false;
    	double r2;
    	double uKreis;
    	cout << "Umfang eines Kreises" << endl;
    	cout << "\n\nBitte geben Sie den Radius des Kreises an." << endl;
    	if (cin >> r2)
    	{
    		uKreis = 2*pi*r2;
    		cout << "\nDie Formel lautet 2 * Pi * r" << endl;
    		cout << "\nDer Umfang des Kreises lautet daher: " << uKreis << endl;
    		Menue2();
    		prozess2();
    	}
    	else
    	{
    		system("cls");
    		cin.clear();
    		string g;
    		getline(cin,g);
    		cerr << "Dies war ein Zeichen! Bitte nur Zahlen eingeben!\n\n"
    			 << "Versuchen Sie es nochmal.\a" << endl;
    		_getch();
    		system("cls");
    		UKreis();
    	}
    
    }
    
    void ADreieck()
    {	
    	ad = true;
    	vku = false;
    	vp = false;
    	ak = false;
    	uk = false;
    	ar = false;
    	vz = false;
    	ur = false;
    	ara = false;
    	ap = false;
    	at = false;
    	adra = false;
    	vke = false;
    	double hoehe , g;
    	double aDreieck;
    	cout << "Flaecheninhalt eines Dreiecks" << endl;
    	cout << "\n\nBitte geben sie die Hoehe des Dreiecks an." << endl;
    	if(cin >> hoehe)
    	{
    		cout << "\nBitte geben Sie nun noch die Grundseite des Dreiecks an." << endl;
    		if (cin >> g)
    		{
    			aDreieck = g*hoehe/2;
    			cout << "\nDie Formel lautet g * h : 2" << endl;
    			cout << "\nDer Flaecheninhalt des Dreiecks lautet daher: " << aDreieck << endl;
    			Menue2();
    			prozess2();
    		}
    		else
    		{
    			system("cls");
    			cin.clear();
    			string g;
    			getline(cin,g);
    			cerr << "Dies war ein Zeichen! Bitte nur Zahlen eingeben!\n\n"
    				 << "Versuchen Sie es nochmal.\a" << endl;
    			_getch();
    			system("cls");
    			ADreieck();
    		}
    	}
    	else
    	{
    		system("cls");
    		cin.clear();
    		string g;
    		getline(cin,g);
    		cerr << "Dies war ein Zeichen! Bitte nur Zahlen eingeben!\n\n"
    			 << "Versuchen Sie es nochmal.\a" << endl;
    		_getch();
    		system("cls");
    		ADreieck();
    	}
    }
    
    void ARechteck()
    {	
    	ar = true;
    	vku = false;
    	vp = false;
    	ak = false;
    	uk = false;
    	ad = false;
    	vz = false;
    	ur = false;
    	ara = false;
    	ap = false;
    	at = false;
    	adra = false;
    	vke = false;
    	double a , b;
    	double aRechteck;
    	cout << "Flaecheninhalt eines Rechtecks" << endl;
    	cout << "\n\nGeben sie die Laenge des Rechtecks an." << endl;
    	if(cin >> a)
    	{
    		cout << "\nBitte geben Sie nun noch die Breite des Rechtecks an." << endl;
    		if(cin >> b)
    		{
    			aRechteck = a*b;
    			cout << "\n\nDie Formel lautet a * b" << endl;
    			cout << "\nDer Flaecheninhalt des Rechtecks lautet daher: " << aRechteck << endl;
    			Menue2();
    			prozess2();
    		}
    		else
    		{
    			system("cls");
    			cin.clear();
    			string g;
    			getline(cin,g);
    			cerr << "Dies war ein Zeichen! Bitte nur Zahlen eingeben!\n\n"
    				 << "Versuchen Sie es nochmal.\a" << endl;
    			_getch();
    			system("cls");
    			ARechteck();
    		}
    	}
    	else
    	{
    		system("cls");
    		cin.clear();
    		string g;
    		getline(cin,g);
    		cerr << "Dies war ein Zeichen! Bitte nur Zahlen eingeben!\n\n"
    			 << "Versuchen Sie es nochmal.\a" << endl;
    		_getch();
    		system("cls");
    		ARechteck();
    	}
    
    }
    
    void VZylinder()
    {	
    	vz = true;
    	vku = false;
    	vp = false;
    	ak = false;
    	uk = false;
    	ad = false;
    	ar = false;
    	ur = false;
    	ara = false;
    	ap = false;
    	at = false;
    	adra = false;
    	vke = false;
    	double hoehe2 , r3;
    	double vZylinder;
    	cout << "Volumen eines Zylinders" << endl;
    	cout << "\n\nBitte geben Sie die Hoehe des Zylinders an:" << endl;
    	if (cin >> hoehe2)
    	{
    		cout << "\nBitte geben Sie nun noch den Radius des Zylinders an." << endl;
    		if (cin >> r3)
    		{
    			vZylinder = pi*r3*r3*hoehe2;
    			cout << "\nDie Formel lautet Pi * r * r * h" <<endl;
    			cout << "\nDas Volumen des Zylinders lautet daher: " << vZylinder << endl;
    			Menue2();
    			prozess2();
    		}
    		else
    		{
    			system("cls");
    			cin.clear();
    			string g;
    			getline(cin,g);
    			cerr << "Dies war ein Zeichen! Bitte nur Zahlen eingeben!\n\n"
    				 << "Versuchen Sie es nochmal.\a" << endl;
    			_getch();
    			system("cls");
    			VZylinder();
    		}
    	}
    	else
    	{
    		system("cls");
    		cin.clear();
    		string g;
    		getline(cin,g);
    		cerr << "Dies war ein Zeichen! Bitte nur Zahlen eingeben!\n\n"
    			 << "Versuchen Sie es nochmal.\a" << endl;
    		_getch();
    		system("cls");
    		VZylinder();
    	}
    }
    
    void URaute()
    {	
    	ur = true;
    	vku = false;
    	vp = false;
    	ak = false;
    	uk = false;
    	ad = false;
    	ar = false;
    	vz = false;
    	ara = false;
    	ap = false;
    	at = false;
    	adra = false;
    	vke = false;
    	double a2;
    	double uRaute;
    	cout << "Umfang einer Raute" << endl;
    	cout << "\n\nBitte geben sie die Seitenlaenge der Raute an." << endl;
    	if (cin >> a2)
    	{
    		uRaute = 4*a2;
    		cout << "\n\nDie Formel lautet 4 * a" << endl;
    		cout << "\nDer Umfang der Raute lautet daher: " << uRaute << endl;
    		Menue2();
    		prozess2();
    	}
    	else
    	{
    		system("cls");
    		cin.clear();
    		string g;
    		getline(cin,g);
    		cerr << "Dies war ein Zeichen! Bitte nur Zahlen eingeben!\n\n"
    			 << "Versuchen Sie es nochmal.\a" << endl;
    		_getch();
    		system("cls");
    		URaute();
    	}
    }
    
    void ARaute()
    {	
    	ara = true;
    	vku = false;
    	vp = false;
    	ak = false;
    	uk = false;
    	ad = false;
    	ar = false;
    	vz = false;
    	ur = false;
    	ap = false;
    	at = false;
    	adra = false;
    	vke = false;
    	double e , f;
    	double aRaute;
    	cout << "Flaecheninhalt einer Raute" << endl;
    	cout << "\n\nBitte geben sie die Zweiteilende Grundseite der Raute an." << endl;
    	if (cin >> e)
    	{
    		cout << "\nBitte geben Sie nun noch die Zweiteilende Hoehe an." << endl;
    		if (cin >> f)
    		{
    			aRaute = (e*f)/2;
    			cout << "\n\nDie Formel lautet e * f : 2" << endl;
    			cout << "\nDer Flaecheninhalt der Raute lautet daher: " << aRaute << endl;
    			Menue2();
    			prozess2();
    		}
    		else
    		{
    			system("cls");
    			cin.clear();
    			string g;
    			getline(cin,g);
    			cerr << "Dies war ein Zeichen! Bitte nur Zahlen eingeben!\n\n"
    				 << "Versuchen Sie es nochmal.\a" << endl;
    			_getch();
    			system("cls");
    			ARaute();
    		}
    	}
    	else
    	{
    		system("cls");
    		cin.clear();
    		string g;
    		getline(cin,g);
    		cerr << "Dies war ein Zeichen! Bitte nur Zahlen eingeben!\n\n"
    			 << "Versuchen Sie es nochmal.\a" << endl;
    		_getch();
    		system("cls");
    		ARaute();
    	}
    }
    
    void AParallelogramm()
    {	
    	ap = true;
    	vku = false;
    	vp = false;
    	ak = false;
    	uk = false;
    	ad = false;
    	ar = false;
    	vz = false;
    	ur = false;
    	ara = false;
    	at = false;
    	adra = false;
    	vke = false;
    	double g2 , hoehe3;
    	double aParallelogramm;
    	cout << "Flaecheninhalt eines Parallelogramms" << endl;
    	cout << "\n\nBitte geben Sie die Grundseite des Parallelogramms an." << endl;
    	if (cin >> g2)
    	{
    		cout << "\nBitte geben Sie nun noch die Hoehe des Parallelogramms an." << endl;
    		if(cin >> hoehe3)
    		{
    			aParallelogramm = g2*hoehe3;
    			cout << "\n\nDie Formel lautet g * h" << endl;
    			cout << "\nDer Flaecheninhalt des Parallelogramms lautet daher: " << aParallelogramm << endl;
    			Menue2();
    			prozess2();
    		}
    		else
    		{
    			system("cls");
    			cin.clear();
    			string g;
    			getline(cin,g);
    			cerr << "Dies war ein Zeichen! Bitte nur Zahlen eingeben!\n\n"
    				 << "Versuchen Sie es nochmal.\a" << endl;
    			_getch();
    			system("cls");
    			AParallelogramm();
    		}
    	}
    	else
    	{
    		system("cls");
    		cin.clear();
    		string g;
    		getline(cin,g);
    		cerr << "Dies war ein Zeichen! Bitte nur Zahlen eingeben!\n\n"
    			 << "Versuchen Sie es nochmal.\a" << endl;
    		_getch();
    		system("cls");
    		AParallelogramm();
    	}
    }
    
    void ATrapez()
    {	
    	at = true;
    	vku = false;
    	vp = false;
    	ak = false;
    	uk = false;
    	ad = false;
    	ar = false;
    	vz = false;
    	ur = false;
    	ara = false;
    	ap = false;
    	adra = false;
    	vke = false;
    	double a3 , c , hoehe4;
    	double aTrapez;
    	cout << "Flaecheninhalt eines Trapezes" << endl;
    	cout << "\n\nBitte geben Sie die groessere Grundseite des Trapezes an." << endl;
    	if (cin >> a3)
    	{
    		cout << "\nBitte geben Sie nun die kleinere Grundseite des Trapezes an." << endl;
    		if (cin >> c)
    		{
    			cout << "\nBiite geben sie nun noch die Hoehe des Trapezes an." << endl;
    			if (cin >> hoehe4)
    			{
    				aTrapez = (a3+c)*hoehe4/2;
    				cout << "\n\nDie Formel lautet (a + c) * h : 2" << endl;
    				cout << "\nDer Flaecheninhalt des Trapez lautet somit: " << aTrapez << endl;
    				Menue2();
    				prozess2();
    			}
    			else
    			{
    				system("cls");
    				cin.clear();
    				string g;
    				getline(cin,g);
    				cerr << "Dies war ein Zeichen! Bitte nur Zahlen eingeben!\n\n"
    					 << "Versuchen Sie es nochmal.\a" << endl;
    				_getch();
    				system("cls");
    				ATrapez();
    			}
    		}
    		else
    		{
    			system("cls");
    			cin.clear();
    			string g;
    			getline(cin,g);
    			cerr << "Dies war ein Zeichen! Bitte nur Zahlen eingeben!\n\n"
    				 << "Versuchen Sie es nochmal.\a" << endl;
    			_getch();
    			system("cls");
    			ATrapez();
    		}
    	}
    	else
    	{
    		system("cls");
    		cin.clear();
    		string g;
    		getline(cin,g);
    		cerr << "Dies war ein Zeichen! Bitte nur Zahlen eingeben!\n\n"
    			 << "Versuchen Sie es nochmal.\a" << endl;
    		_getch();
    		system("cls");
    		ATrapez();
    	}
    }
    
    void ADrachen()
    {	
    	adra = true;
    	vku = false;
    	vp = false;
    	ak = false;
    	uk = false;
    	ad = false;
    	ar = false;
    	vz = false;
    	ur = false;
    	ara = false;
    	ap = false;
    	at = false;
    	vke = false;
    	double e2 , f2;
    	double aDrachen;
    	cout << "Flaecheninhalt eines Drachen" << endl;
    	cout << "\n\nBitte geben Sie die Zweiteilende Grundseite des Drachen an." << endl;
    	if (cin >> e2)
    	{
    		cout << "\nBitte geben sie nun noch die Zweiteilende Hoehe des Drachen an." << endl;
    		if (cin >> f2)
    		{
    			aDrachen = (e2*f2)/2;
    			cout << "\n\nDie Formel lautet e * f : 2" << endl;
    			cout << "\nDer Flaecheninhalt des Drachen lautet daher: " << aDrachen << endl;
    			Menue2();
    			prozess2();
    		}
    		else
    		{
    			system("cls");
    			cin.clear();
    			string g;
    			getline(cin,g);
    			cerr << "Dies war ein Zeichen! Bitte nur Zahlen eingeben!\n\n"
    				 << "Versuchen Sie es nochmal.\a" << endl;
    			_getch();
    			system("cls");
    			ADrachen();
    		}
    	}
    	else
    	{
    		system("cls");
    		cin.clear();
    		string g;
    		getline(cin,g);
    		cerr << "Dies war ein Zeichen! Bitte nur Zahlen eingeben!\n\n"
    			 << "Versuchen Sie es nochmal.\a" << endl;
    		_getch();
    		system("cls");
    		ADrachen();
    	}
    }
    
    void VKegel()
    {	
    	vke = true;
    	vku = false;
    	vp = false;
    	ak = false;
    	uk = false;
    	ad = false;
    	ar = false;
    	vz = false;
    	ur = false;
    	ara = false;
    	ap = false;
    	at = false;
    	adra = false;
    	double r4 , hoehe5;
    	double vKegel;
    	cout << "Volumen eines Kegels" << endl;
    	cout << "\n\nBitte geben Sie den Radius der Kegelgrundflaeche an." << endl;
    	if (cin >> r4)
    	{
    		cout << "\nBitte geben Sie nun noch die Hoehe des Kegels an." << endl;
    		if (cin >> hoehe5)
    		{
    			vKegel = pi*r4*r4*hoehe5/3;
    			cout << "\n\nDie Formel lautet Pi * r * r * h :2" << endl; 
    			cout << "\nDas Volumen des Kegels lautet daher: " << vKegel << endl;
    			Menue2();
    			prozess2();
    		}
    		else
    		{
    			system("cls");
    			cin.clear();
    			string g;
    			getline(cin,g);
    			cerr << "Dies war ein Zeichen! Bitte nur Zahlen eingeben!\n\n"
    				 << "Versuchen Sie es nochmal.\a" << endl;
    			_getch();
    			system("cls");
    			VKegel();
    		}
    	}
    	else
    	{
    		system("cls");
    		cin.clear();
    		string g;
    		getline(cin,g);
    		cerr << "Dies war ein Zeichen! Bitte nur Zahlen eingeben!\n\n"
    			 << "Versuchen Sie es nochmal.\a" << endl;
    		_getch();
    		system("cls");
    		VKegel();
    	}
    }
    
    void VKugel()
    {
    	vku = true;
    	vp = false;
    	ak = false;
    	uk = false;
    	ad = false;
    	ar = false;
    	vz = false;
    	ur = false;
    	ara = false;
    	ap = false;
    	at = false;
    	adra = false;
    	vke = false;
    	double r5;
    	double vKugel;
    	cout << "Volumen einer Kugel" << endl;
    	cout << "\n\nBitte geben Sie den Radius der Kugel an." << endl;
    	if (cin >> r5)
    	{
    		vKugel = pi*r5*r5*r5*4/3;
    		cout << "\n\nDie Formel lautet Pi * r * r * r * 4:3" << endl;
    		cout << "\nDas Volumen der Kugel lautet daher: " << vKugel << endl;
    		Menue2();
    		prozess2();
    	}
    	else
    	{
    		system("cls");
    		cin.clear();
    		string g;
    		getline(cin,g);
    		cerr << "Dies war ein Zeichen! Bitte nur Zahlen eingeben!\n\n"
    			 << "Versuchen Sie es nochmal.\a" << endl;
    		_getch();
    		system("cls");
    		VKugel();
    	}
    }
    
    void VPyramide()
    {
    	vp = true;
    	uk = false;
    	vku = false;
    	ak = false;
    	ad = false;
    	ar = false;
    	vz = false;
    	ur = false;
    	ara = false;
    	ap = false;
    	at = false;
    	adra = false;
    	vke = false;
    	vku = false;
    	double hoehe6 , a4;
    	double vPyramide;
    	cout << "Volumen einer Pyramide" << endl;
    	cout << "\n\nBitte geben Sie die Hoehe der Pyramide an." << endl;
    	if (cin >> hoehe6)
    	{
    		cout << "\nBitte geben Sie nun noch eine der gleichgrossen Grundseiten der" 
    			 << "\nquadratischen Grundflaeche an." << endl;
    		if (cin >> a4)
    		{	
    			vPyramide = a4*a4*hoehe6/3;
    			cout << "\n\nDie Formel lautet a * a * h : 3" << endl;
    			cout << "\nDas Volumen der Pyramide lautet daher: " << vPyramide << endl;
    			Menue2();
    			prozess2();
    		}
    		else
    		{
    			system("cls");
    			cin.clear();
    			string g;
    			getline(cin,g);
    			cerr << "Dies war ein Zeichen! Bitte nur Zahlen eingeben!\n\n"
    				 << "Versuchen Sie es nochmal.\a" << endl;
    			_getch();
    			system("cls");
    			VPyramide();
    		}
    	}
    	else
    	{
    		system("cls");
    		cin.clear();
    		string g;
    		getline(cin,g);
    		cerr << "Dies war ein Zeichen! Bitte nur Zahlen eingeben!\n\n"
    			 << "Versuchen Sie es nochmal.\a" << endl;
    		_getch();
    		system("cls");
    		VPyramide();
    	}
    }
    

    Sodele, habe mal hin und hergewurschtelt und mir kamen da ein paar ideen und es waren die entscheidenen. Es funktioniert so wie ich es mir vorgestellt habe. Und stolz präsentiere ich meine lösung 🙂
    Denn nun kann ich dieses Thema als gelöst markieren. und wir haben ja auch vom thema herausgeschrieben. Wenn ich ein Thema aufmache, dann versuche ich halt nach möglichkeit auch mich an dieses thema zu halten was den inhalt meiner posts angeht. Aber ich denke mal als Anfänger sei mir das verziehen 🙂
    Ich weiss ja auch , dass die Programmierung mehrere Wege nach Rom bietet. Daher ist es ja meistens auch eine Frage des Stils. Wie ich den Arbeitsspeicher entlaste, lerne ich später. ich glaube ich konzentriere mich erstmal darauf die sachen funktionierend zu schreiben. alles weiter kommt von automatisch. Und was das ursprüngliche Thema angeht, die parameter, so kann ich mit denen nun auch in der basis umgehen.
    Danke für die Hilfe !


Anmelden zum Antworten