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



  • volkard schrieb:

    Konntest Du den Code nicht hier posten?

    17 Seiten Code:

    #include <iostream>
    #include <conio.h>
    
    using namespace std;
    
    const double pi = 3.141;
    
    int prozess();
    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()
    {
    	prozess();
    }
    
    int prozess()
    {
    	     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(20) Anleitung des Programms" << endl;
    
    int wahl;
    		if (cin >> wahl)
    		{
    
    			switch (wahl)
    			{
    			case 1:
    				system("cls");
    				AKreis();
    				break;
    			case 2:
    				system("cls");
    				UKreis();
    				break;
    			case 3:
    				system("cls");
    				ADreieck();
    				break;
    			case 4:
    				system("cls");
    				ARechteck();
    				break;
    			case 5:
    				system("cls");
    				VZylinder();
    				break;
    			case 6:
    				system("cls");
    				URaute();
    				break;
    			case 7:
    				system("cls");
    				ARaute();
    				break;
    			case 8:
    				system("cls");
    				AParallelogramm();
    				break;
    			case 9:
    				system("cls");
    				ATrapez();
    				break;
    			case 10:
    				system("cls");
    				ADrachen();
    				break;
    			case 11:
    				system("cls");
    				VKegel();
    				break;
    			case 12:
    				system("cls");
    				VKugel();
    				break;
    			case 13:
    				system("cls");
    				VPyramide();
    				break;
    			case 14:
    				exit(1);
    				break;
    			case 20:
    				system("cls");
    				cout << "Geben Sie die Zahl ein" << endl; 
    				break;
    			}
    		}
    		else
    		{
    			system("cls");
    			cout << "\aFalsche Eingabe! Sie werden zur Hauptauswahl geleitet." << endl;
    			_getch();
    			system("cls");
    			prozess();
    		}
    }
    
    void AKreis()
    {
    	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;
    		cout << "\n\nZur Hauptauswahl?"
    			 << "\n\n(2) Ja"
    			 << "\n(1) nochmal versuchen"
    			 << "\n(0) beenden" << endl;
    		int wahl2;
    		if (cin >> wahl2)
    		{
    			if (wahl2 == 2)
    			{
    				system("cls");
    				prozess();
    			}
    			else if (wahl2 == 1)
    			{
    				system("cls");
    				AKreis();
    			}
    			else if (wahl2 == 0)
    			{
    				exit(1);
    			}
    		}
    		else
    		{
    			system("cls");
    			cerr << "\aFalsche Eingabe! Sie werden zur Hauptauswahl geleitet." << endl;
    			_getch();
    			prozess();
    		}
    	}
    	else
    	{
    		system("cls");
    		cout << "\aFalsche Eingabe! Sie werden zur Hauptauswahl geleitet." << endl;
    		_getch();
    		system("cls");
    		prozess();
    	}
    }			          
    
    void UKreis()
    {
    	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;
    		cout << "\n\nZur Hauptauswahl?"
    			 << "\n\n(2) Ja"
    			 << "\n(1) nochmal versuchen"
    			 << "\n(0) beenden" << endl;
    		int wahl3;
    		if (cin >> wahl3)
    		{
    			if (wahl3 == 2)
    			{
    				system("cls");
    				prozess();
    			}
    			else if (wahl3 == 1)
    			{
    				system("cls");
    				UKreis();
    			}
    			else if (wahl3 == 0)
    			{
    				exit(1);
    			}
    		}
    		else
    		{
    			system("cls");
    			cerr << "\aFalsche Eingabe! Sie werden zur Hauptauswahl geleitet." << endl;
    			_getch();
    			prozess();
    		}
    	}
    	else
    	{
    		system("cls");
    		cerr << "\aFalsche Eingabe! Sie werden zur Hauptauswahl geleitet." << endl;
    		_getch();
    		prozess();
    	}
    }
    
    void ADreieck()
    {
    	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;
    			cout << "\n\nZur Hauptauswahl?"
    				 << "\n\n(2) Ja"
    				 << "\n(1) nochmal versuchen"
    				 << "\n(0) beenden" << endl;
    		int wahl4;
    			if (cin >> wahl4)
    			{
    				if (wahl4 == 2)
    				{
    					system("cls");
    					prozess();
    				}
    				else if (wahl4 == 1)
    				{
    					system("cls");
    					ADreieck();
    				}
    				else if (wahl4 == 0)
    				{
    					exit(1);
    				}
    			}
    			else
    			{
    				system("cls");
    				cerr << "\aFalsche Eingabe! Sie werden zur Hauptauswahl geleitet." << endl;
    				_getch();
    				prozess();
    			}
    		}
    		else
    		{
    			system("cls");
    			cerr << "\aFalsche Eingabe! Sie werden zur Hauptauswahl geleitet." << endl;
    			_getch();
    			prozess();
    		}
    	}
    	else 
    	{
    		system("cls");
    		cerr << "\aFalsche Eingabe! Sie werden zur Hauptauswahl geleitet." << endl;
    		_getch();
    		prozess();
    	}
    }
    
    void ARechteck()
    {
    	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;
    			cout << "\n\nZur Hauptauswahl?"
    			 << "\n\n(2) Ja"
    			 << "\n(1) nochmal versuchen"
    			 << "\n(0) beenden" << endl;
    		int wahl5;
    			if (cin >> wahl5)
    			{
    				if (wahl5 == 2)
    				{
    					system("cls");
    					prozess();
    				}
    				else if (wahl5 == 1)
    				{
    					system("cls");
    					ARechteck();
    				}
    				else if (wahl5 == 0)
    				{
    					exit(1);
    				}
    			}
    			else
    			{
    				system("cls");
    				cerr << "\aFalsche Eingabe! Sie werden zur Hauptauswahl geleitet." << endl;
    				_getch();
    				prozess();
    			}
    		}
    		else
    		{
    			system("cls");
    			cerr << "\aFalsche Eingabe! Sie werden zur Hauptauswahl geleitet." << endl;
    			_getch();
    			prozess();
    		}
    	}
    	else
    	{
    		system("cls");
    		cerr << "\aFalsche Eingabe! Sie werden zur Hauptauswahl geleitet." << endl;
    		_getch();
    		prozess();
    	}
    }
    
    void VZylinder()
    {
    	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;
    			cout << "\n\nZur Hauptauswahl?"
    				 << "\n\n(2) Ja"
    				 << "\n(1) nochmal versuchen"
    				 << "\n(0) beenden" << endl;
    		int wahl6;
    			if (cin >> wahl6)
    			{
    				if (wahl6 == 2)
    				{
    					system("cls");
    					prozess();
    				}
    				else if (wahl6 == 1)
    				{
    					system("cls");
    					VZylinder();
    				}
    				else if (wahl6 == 0)
    				{
    					exit(1);
    				}
    			}
    			else
    			{
    				system("cls");
    				cerr << "\aFalsche Eingabe! Sie werden zur Hauptauswahl geleitet." << endl;
    				_getch();
    				prozess();
    			}
    		}
    		else
    		{
    			system("cls");
    			cerr << "\aFalsche Eingabe! Sie werden zur Hauptauswahl geleitet." << endl;
    			_getch();
    			prozess();
    		}
    	}
    	else
    	{
    		system("cls");
    		cerr << "\aFalsche Eingabe! Sie werden zur Hauptauswahl geleitet." << endl;
    		_getch();
    		prozess();
    	}
    }
    
    void URaute()
    {
    	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;
    		cout << "\n\nZur Hauptauswahl?"
    			 << "\n\n(2) Ja"
    			 << "\n(1) nochmal versuchen"
    			 << "\n(0) beenden" << endl;
    		int wahl7;
    			if (cin >> wahl7)
    			{
    				if (wahl7 == 2)
    				{
    					system("cls");
    					prozess();
    				}
    				else if (wahl7 == 1)
    				{
    					system("cls");
    					URaute();
    				}
    				else if (wahl7 == 0)
    				{
    					exit(1);
    				}
    			}
    			else
    			{
    				system("cls");
    				cerr << "\aFalsche Eingabe! Sie werden zur Hauptauswahl geleitet." << endl;
    				_getch();
    				prozess();
    			}
    	}
    	else
    	{
    		system("cls");
    		cerr << "\aFalsche Eingabe! Sie werden zur Hauptauswahl geleitet." << endl;
    		_getch();
    		prozess();
    	}
    }
    
    void ARaute()
    {
    	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;
    			cout << "\n\nZur Hauptauswahl?"
    				 << "\n\n(2) Ja"
    				 << "\n(1) nochmal versuchen"
    				 << "\n(0) beenden" << endl;
    		int wahl8;
    			if (cin >> wahl8)
    			{
    				if (wahl8 == 2)
    				{
    					system("cls");
    					prozess();
    				}
    				else if (wahl8 == 1)
    				{
    					system("cls");
    					ARaute();
    				}
    				else if (wahl8 == 0)
    				{
    					exit(1);
    				}
    			}
    			else
    			{
    				system("cls");
    				cerr << "\aFalsche Eingabe! Sie werden zur Hauptauswahl geleitet." << endl;
    				_getch();
    				prozess();
    			}
    		}
    		else
    		{
    			system("cls");
    			cerr << "\aFalsche Eingabe! Sie werden zur Hauptauswahl geleitet." << endl;
    			_getch();
    			prozess();
    		}
    	}
    	else 
    	{
    		system("cls");
    		cerr << "\aFalsche Eingabe! Sie werden zur Hauptauswahl geleitet." << endl;
    		_getch();
    		prozess();
    	}
    }
    
    void AParallelogramm()
    {
    	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;
    			cout << "\n\nZur Hauptauswahl?"
    				 << "\n\n(2) Ja"
    				 << "\n(1) nochmal versuchen"
    				 << "\n(0) beenden" << endl;
    		int wahl9;
    			if (cin >> wahl9)
    			{
    				if (wahl9 == 2)
    				{
    					system("cls");
    					prozess();
    				}
    				else if (wahl9 == 1)
    				{
    					system("cls");
    					AParallelogramm();
    				}
    				else if (wahl9 == 0)
    				{
    					exit(1);
    				}
    			}
    			else
    			{
    				system("cls");
    				cerr << "\aFalsche Eingabe! Sie werden zur Hauptauswahl geleitet." << endl;
    				_getch();
    				prozess();
    			}
    		}
    		else
    		{
    			system("cls");
    			cerr << "\aFalsche Eingabe! Sie werden zur Hauptauswahl geleitet." << endl;
    			_getch();
    			prozess();
    		}
    	}
    	else
    	{
    		system("cls");
    		cerr << "\aFalsche Eingabe! Sie werden zur Hauptauswahl geleitet." << endl;
    		_getch();
    		prozess();
    	}
    }
    
    void ATrapez()
    {
    	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;
    				cout << "\n\nZur Hauptauswahl?"
    					 << "\n\n(2) Ja"
    					 << "\n(1) nochmal versuchen"
    					 << "\n(0) beenden" << endl;
    		int wahl10;
    				if (cin >> wahl10)
    				{
    					if (wahl10 == 2)
    					{
    						system("cls");
    						prozess();
    					}
    					else if (wahl10 == 1)
    					{
    						system("cls");
    						ATrapez();
    					}
    					else if (wahl10 == 0)
    					{
    						exit(1);
    					}
    				}
    				else
    				{
    					system("cls");
    					cerr << "\aFalsche Eingabe! Sie werden zur Hauptauswahl geleitet." << endl;
    					_getch();
    					prozess();
    				}
    			}
    			else
    			{
    				system("cls");
    				cerr << "\aFalsche Eingabe! Sie werden zur Hauptauswahl geleitet." << endl;
    				_getch();
    				prozess();
    			}
    		}
    		else
    		{
    			system("cls");
    			cerr << "\aFalsche Eingabe! Sie werden zur Hauptauswahl geleitet." << endl;
    			_getch();
    			prozess();
    		}
    	}
    	else 
    	{
    		system("cls");
    		cerr << "\aFalsche Eingabe! Sie werden zur Hauptauswahl geleitet." << endl;
    		_getch();
    		prozess();
    	}
    }
    
    void ADrachen()
    {
    	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;
    			cout << "\n\nZur Hauptauswahl?"
    				 << "\n\n(2) Ja"
    			  	 << "\n(1) nochmal versuchen"
    				 << "\n(0) beenden" << endl;
    		int wahl11;
    			if (cin >> wahl11)
    			{
    				if (wahl11 == 2)
    				{
    					system("cls");
    					prozess();
    				}
    				else if (wahl11 == 1)
    				{
    					system("cls");
    					ADrachen();
    				}
    				else if (wahl11 == 0)
    				{
    					exit(1);
    				}
    			}
    			else
    			{
    				system("cls");
    				cerr << "\aFalsche Eingabe! Sie werden zur Hauptauswahl geleitet." << endl;
    				_getch();
    				prozess();
    			}
    		}
    		else
    		{
    			system("cls");
    			cerr << "\aFalsche Eingabe! Sie werden zur Hauptauswahl geleitet." << endl;
    			_getch();
    			prozess();
    		}
    	}
    	else
    	{
    		system("cls");
    		cerr << "\aFalsche Eingabe! Sie werden zur Hauptauswahl geleitet." << endl;
    		_getch();
    		prozess();
    	}
    }
    
    void VKegel()
    {
    	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;
    			cout << "\n\nZur Hauptauswahl?"
    				 << "\n\n(2) Ja"
    				 << "\n(1) nochmal versuchen"
    				 << "\n(0) beenden" << endl;
    		int wahl12;
    			if (cin >> wahl12)
    			{
    				if (wahl12 == 2)
    				{
    					system("cls");
    					prozess();
    				}
    				else if (wahl12 == 1)
    				{
    					system("cls");
    					VKegel();
    				}
    				else if (wahl12 == 0)
    				{
    					exit(1);
    				}
    			}
    			else
    			{
    				system("cls");
    				cerr << "\aFalsche Eingabe! Sie werden zur Hauptauswahl geleitet." << endl;
    				_getch();
    				prozess();
    			}
    		}
    		else 
    		{
    			system("cls");
    			cerr << "\aFalsche Eingabe! Sie werden zur Hauptauswahl geleitet." << endl;
    			_getch();
    			prozess();
    		}
    	}
    	else
    	{
    		system("cls");
    		cerr << "\aFalsche Eingabe! Sie werden zur Hauptauswahl geleitet." << endl;
    		_getch();
    		prozess();
    	}
    }
    
    void VKugel()
    {
    	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;
    		cout << "\n\nZur Hauptauswahl?"
    			 << "\n\n(2) Ja"
    			 << "\n(1) nochmal versuchen"
    			 << "\n(0) beenden" << endl;
    		int wahl13;
    		if (cin >> wahl13)
    		{
    			if (wahl13 == 2)
    			{
    				system("cls");
    				prozess();
    			}
    			else if (wahl13 == 1)
    			{
    				system("cls");
    				VKugel();
    			}
    			else if (wahl13 == 0)
    			{
    				exit(1);
    			}
    		}
    		else
    		{
    			system("cls");
    			cerr << "\aFalsche Eingabe! Sie werden zur Hauptauswahl geleitet." << endl;
    			_getch();
    			prozess();
    		}
    	}
    	else
    	{
    		system("cls");
    		cerr << "\aFalsche Eingabe! Sie werden zur Hauptauswahl geleitet." << endl;
    		_getch();
    		prozess();
    	}
    }
    
    void VPyramide()
    {
    	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;
    			cout << "\n\nZur Hauptauswahl?"
    				 << "\n\n(2) Ja"
    				 << "\n(1) nochmal versuchen"
    				 << "\n(0) beenden" << endl;
    		int wahl14;
    			if (cin >> wahl14)
    			{
    				if (wahl14 == 2)
    				{
    					system("cls");
    					prozess();
    				}
    				else if (wahl14 == 1)
    				{
    					system("cls");
    					VPyramide();
    				}
    				else if (wahl14 == 0)
    				{
    					exit(1);
    				}
    			}
    			else
    			{
    				system("cls");
    				cerr << "\aFalsche Eingabe! Sie werden zur Hauptauswahl geleitet." << endl;
    				_getch();
    				prozess();
    			}
    		}
    		else
    		{
    			system("cls");
    			cerr << "\aFalsche Eingabe! Sie werden zur Hauptauswahl geleitet." << endl;
    			_getch();
    			prozess();
    		}
    	}
    	else
    	{
    		system("cls");
    		cerr << "\aFalsche Eingabe! Sie werden zur Hauptauswahl geleitet." << endl;
    		_getch();
    		prozess();
    	}
    }
    


  • Zodiac Uchiha schrieb:

    Ich kenne aus anderen Foren (keine C++ Foren) die Funktion "spoiler". Damit kann man ganz grosse Geschichten hineinschreiben und bei bedarf dann auf und zu klicken. So wird Platz im Forum gespart und die Member können ohne Bedenken Grosse Sachen in ihre Posts bringen.

    Man muß hier nicht Platz sparen.

    Zodiac Uchiha schrieb:

    Das ist der Grund warum ich meine Datei als Downloadlink gepostet habe statt hier ins forum.

    Und das wiederum ist der Grund, warum ich den Code nicht angeschaut habe. Fremde Seite mit Werbung und Popupwerbung und da mache ich gar nicht weiter. Schon die Erweiterung .rtf macht mir Angst.

    Zodiac Uchiha schrieb:

    Ausserdem könnte man die Nachrichtentextfelder etwas breiter machen. Auf diese Weise würden dann längere couts nicht verschoben und es ist wesentlich weniger arbeit auch mal längere codes hier hinein zu schreiben.

    Kannste auch selber. Beim Antworten oben rechts "breiter".
    Aber mach die Zeilen nicht deutlich breiter als 80 Zeichen. Das wäre nicht mehr hübsch. Lieber selber umbrechen in einer Weise, die einigermaßen logisch ist.



  • Aua. Hatten wir das nicht schon durch, daß man Schleifen besser nicht baut, indem man die Funktion aus sich selbst heraus nochmal aufruft. Und exit ist böse. Und viel zu viel Code ist doppelt.



  • Was mir nicht gefällt, ist, dass du verdreifachten Code hast.
    Edit: Nein, verzehntfachten ! Z. 385, ~615 ++
    Edit²: Nein, verdreizehnfachten ! Z. 557 ++

    Edit: zu langsam ... 😕

    Z. 839 ist unlogisch. mach gleich alles am Stück.
    Ebenso 9 Zeilen weiter unten ...

    Und volkard hat recht. Funktionen in sich selbst aufzurufen kann in einer nicht mehr ohne Gewalt zu beendenden Rekursion enden. Gewöhn dir das ab.



  • Um dem Augenkrebs ein wenig entgegenzuwirken, habe ich mal ein wenig rumgespielt.
    Und bitte kein endl mehr nehmen, wenn '\n' gemeint ist und '\n' ans Ende schreiben und laß Funktionen möglichst nur einen Zweck erfüllen. Und generell versuchen, Code nicht mehrmals zu haben.
    So, der Anfang ist gemacht. Ist aber noch total unfertig. Habe viel Logik von Dir stehenlassen, die kann bestimmt noch vereinfacht werden.

    #include <iostream>
    #include <cmath>
    
    void clearScreen(){
        int i=system("clear");
        (void)i;//only to make the compiler happy
    }
    void _getch(){
    }
    
    using namespace std;
    
    void aKreis() {
    	double r=eingabeDouble("Bitte geben Sie den Radius des Kreises an.");
    	double aKreis = M_PI*r*r;
    	cout << "Die Formel lautet  Pi * r * r\n";
    	cout << "Der Flaecheninhalt des Kreises lautet daher: " << aKreis << '\n';
    }
    
    void uKreis() {
    	double r=eingabeDouble("Bitte geben Sie den Radius des Kreises an.");
    	double uKreis*pi*r;
    	cout << "Die Formel lautet 2 * Pi * r\n";
    	cout << "Der Umfang des Kreises lautet daher: " << uKreis << '\n';
    }
    
    void aDreieck() {
    	double h=eingabeDouble("Bitte geben sie die Hoehe des Dreiecks an.");
    	double g=eingabeDouble("Bitte geben Sie nun noch die Grundseite des Dreiecks an.");
    	double aDreieck = g*hoehe/2;
    	cout << "Die Formel lautet g * h : 2\n";
    	cout << "Die Flaeche des Dreiecks lautet daher: " << aDreieck << '\n';
    }
    
    void aRechteck() {
    	double a=eingabeDouble("Geben sie die Laenge des Rechtecks an.");
    	double b=eingabeDouble("Bitte geben Sie nun noch die Breite des Rechtecks an.");
    	double aRechteck;
    	cout << "\n\nDie Formel lautet a * b" << endl;
    	cout << "\nDer Flaecheninhalt des Rechtecks lautet daher: " << aRechteck << endl;
    }
    
    void vZylinder() {
    	double h=eingabeDouble("Bitte geben Sie die Hoehe des Zylinders an.");
    	double r=eingabeDouble("Bitte geben Sie nun noch den Radius des Zylinders an.");
    	double vZylinder = pi*r3*r3*hoehe2;
        cout << "\nDie Formel lautet Pi * r * r * h" <<endl;
        cout << "\nDas Volumen des Zylinders lautet daher: " << vZylinder << endl;
    }
    
    double eingabeDouble(char const* prompt){
        cout<<prompt;
        double result;
        cin>>result;//if throw
        return result;
    }
    
    int rechne(char const* name,int(f)()){
        clearScreen();
        for(;;){
            cout<<name<<'\n';
            f();
            cout << "Zur Hauptauswahl?\n"
                 << "(2) Ja\n"
                 << "(1) nochmal versuchen\n"
                 << "(0) beenden\n";
    		int wahl2;
    		if (cin >> wahl2) {
    			if (wahl2 == 2)
                    return HAUPTMENUE;
    			else if (wahl2 == 1)
                    continue;
    			else if (wahl2 == 0) 
    				return ENDE;
                else {
                    clearScreen();
                    cerr << "\aFalsche Eingabe! Sie werden zur Hauptauswahl geleitet." << endl;
                    _getch();
                    return HAUPTMENUE;
    			}
        }
    }
    
    int main() {
        int const ANZAHL=5;
        char const* namen[ANZAHL]{
            "Flaecheninhalt eines Kreises",
            "Umfang eines Kreises",
            "Flaecheninhalt eines Dreiecks",
            "Flaecheninhalt eines Rechtecks",
            "Volumen eines Zylinders",
        };
        void(*funktionen[ANZAHL])()={
            &aKreis,
            &uKreis,
            &aDreieck,
            &aRechteck,
            &vZylinder,
        }
    	cout << "Hauptauswahl\n";
    	for(int i=0;i!=ANZAHL;++i)
            cout<<namen[i]<<'\n';
        cout<<"("<<ANZAHL<<") Programm beenden\n"
    	cout<<"(20) Anleitung des Programms\n";
    
    	int wahl;
    	cin>>wahl;
        if(1<=wahl && wahl<=ANZAHL){
            rechne(name[wahl-1],funktion[wahl-1]);
        }
        else if(wahl==20){
    		clearScreen();
    		cout << "Geben Sie die Zahl ein" << endl;
    		break;
    	}
    	else {
    		clearScreen();
    		cout << "\aFalsche Eingabe! Sie werden zur Hauptauswahl geleitet." << endl;
    		_getch();
    		clearScreen();
    		prozess();
    	}
    	return 0;
    }
    


  • gelöscht



  • Noch ein paar Minuten gespielt.

    #include <iostream>
    #include <cmath>
    
    using namespace std;
    
    int const HAUPTMENU=1;
    int const ENDE=2;
    
    void clearScreen() {
    	int i=system("clear");
    	(void)i;//only to make the compiler happy
    }
    
    void _getch() {
    }
    
    double eingabeDouble(char const* prompt) {
    	cout<<prompt;
    	double result;
    	cin>>result;//if throw
    	return result;
    }
    
    void aKreis() {
    	double r=eingabeDouble("Bitte geben Sie den Radius des Kreises an.");
    	double aKreis = M_PI*r*r;
    	cout << "Die Formel lautet  Pi * r * r\n";
    	cout << "Der Flaecheninhalt des Kreises lautet daher: " << aKreis << '\n';
    }
    
    void uKreis() {
    	double r=eingabeDouble("Bitte geben Sie den Radius des Kreises an.");
    	double uKreis=M_PI*r;
    	cout << "Die Formel lautet 2 * Pi * r\n";
    	cout << "Der Umfang des Kreises lautet daher: " << uKreis << '\n';
    }
    
    void aDreieck() {
    	double h=eingabeDouble("Bitte geben sie die Hoehe des Dreiecks an.");
    	double g=eingabeDouble("Bitte geben Sie nun noch die Grundseite des Dreiecks an.");
    	double aDreieck = g*h/2;
    	cout << "Die Formel lautet g * h : 2\n";
    	cout << "Die Flaeche des Dreiecks lautet daher: " << aDreieck << '\n';
    }
    
    void aRechteck() {
    	double a=eingabeDouble("Geben sie die Laenge des Rechtecks an.");
    	double b=eingabeDouble("Bitte geben Sie nun noch die Breite des Rechtecks an.");
    	double aRechteck=a*b;
    	cout << "Die Formel lautet a * b" << '\n';
    	cout << "Der Flaecheninhalt des Rechtecks lautet daher: " << aRechteck << '\n';
    }
    
    void vZylinder() {
    	double h=eingabeDouble("Bitte geben Sie die Hoehe des Zylinders an.");
    	double r=eingabeDouble("Bitte geben Sie nun noch den Radius des Zylinders an.");
    	double vZylinder = M_PI*r*r*h;
    	cout << "\nDie Formel lautet Pi * r * r * h" <<'\n';
    	cout << "\nDas Volumen des Zylinders lautet daher: " << vZylinder << '\n';
    }
    
    int rechne(char const* name,void(funktion)()) {
    	clearScreen();
    	for(;;) {
    		cout<<name<<'\n';
    		(*funktion)();
    		cout << "Zur Hauptauswahl?\n"
    				 << "(2) Ja\n"
    				 << "(1) nochmal versuchen\n"
    				 << "(0) beenden\n";
    		int wahl2;
    		if (cin >> wahl2) {
    			if (wahl2 == 2)
    				return HAUPTMENU;
    			else if (wahl2 == 1)
    				continue;
    			else if (wahl2 == 0)
    				return ENDE;
    			else {
    				clearScreen();
    				cerr << "\aFalsche Eingabe! Sie werden zur Hauptauswahl geleitet." << endl;
    				_getch();
    				return HAUPTMENU;
    			}
    		}
    	}
    }
    
    int main() {
    	int const ANZAHL=5;
    	char const* namen[ANZAHL] {
    		"Flaecheninhalt eines Kreises",
    		"Umfang eines Kreises",
    		"Flaecheninhalt eines Dreiecks",
    		"Flaecheninhalt eines Rechtecks",
    		"Volumen eines Zylinders",
    	};
    	void(*funktionen[ANZAHL])()= {
    		&aKreis,
    		&uKreis,
    		&aDreieck,
    		&aRechteck,
    		&vZylinder,
    	};
    	for(;;){
            cout << "Hauptauswahl\n";
            for(int i=0; i!=ANZAHL; ++i)
                cout<<namen[i]<<'\n';
            cout<<"("<<ANZAHL+1<<") Programm beenden\n";
            cout<<"(20) Anleitung des Programms\n";
    
            int wahl;
            cin>>wahl;
            int weiter;
            else if(wahl==20) {
                clearScreen();
                cout << "Geben Sie die Zahl ein" << endl;
                _getch();
                continue;
            } else if (wahl==ANZAHL+1){
                break;
            }
            else if(wahl<1 || wahl>ANZAHL){}
                clearScreen();
                cout << "\aFalsche Eingabe! Sie werden zur Hauptauswahl geleitet." << endl;
                _getch();
                continue;
            }
            else{
                wahl=rechne(namen[wahl-1],funktionen[wahl-1]);
                if(wahl==ENDE)
                    break;
                else if(wahl==HAUPTMENU)
                    continue;
                else
                    //hmm
                    ;
            }
    	}
    	return 0;
    }
    


  • Hacker schrieb:

    Volkard, ist Z. 93 dein Ernst ?
    Ist das etwa ein C-Array ?

    Was ist daran so verkehrt?



  • Hacker schrieb:

    wird renoviert (dieser post)

    Ja, klar ist Zeile 93 mein Ernst. Damit will ich ihn unter anderem dazu anregen, ein Buch durchzulesen. Und es war gerade schneller zu tippen. Selber würde ich das wohl nicht stehen lassen. Oder doch? Weiß nicht. Ich würde das ganze Programm nicht so schreiben. Kann mich nicht sehr tief reindenken.



  • Nein, war eher als scherz gemeint, allerdings verstehe ich nicht ganz wieso. Auch nicht die C strings, das ist doch nicht gesund. 😃

    Aber egal. was ich sagen will, selbst nachdem du ihn verbessert hast - das war (und ist (?)) Müll.
    Man müsste das Grundgerüst neu überdenken.



  • Hacker schrieb:

    Auch nicht die C strings, das ist doch nicht gesund. 😃

    Altes Märchen.
    Die sind hier angemessener als std::string, sie werden ja nicht irgendwie "verarbeitet".



  • 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 🤡


Anmelden zum Antworten