Simulation eines Fahrkartenautomat in C++



  • Hallo!
    Ich habe die Aufgabe, bis zum 05.12. einen Fahrkartenautomaten zu programmieren, der ein Auswahlmenü hat, etc... Hab ehrlich gesagt nicht so wirklich den großen Plan von C++. 🙄 Bin schon froh, dass ich den ersten Teil der Aufgabe gelöst habe, man die Tarifzonen auswählen und den Fahrschein bezahlen kann. 🙂
    Jetzt habe ich aber folgendes Problem, wo ich dank eines Brett vorm Kopf nicht weiterkomme. 😞

    #include <iostream.h>
    
    void main()
    {
    	char m;
    	double zahl1=0, zahl2=0, rest=0, betrag=0, preis, rueckgabe;
    
    	cout << "	*******************Menue********************" << endl;
    	cout << "	* FAHRKARTENAUTOMAT                        *" << endl;
    	cout << "	*                                          *" << endl;
    	cout << "	*                                          *" << endl;
    	cout << "	* Preisstufe       Betrag       Taste      *" << endl;
    	cout << "	* --------------------------               *" << endl;
    	cout << "	* Kurzstrecke      1.60 Euro    k          *" << endl;
    	cout << "	*                                          *" << endl;
    	cout << "	* 1 Tarifzone      2.50 Euro    1          *" << endl;
    	cout << "	* 2 Tarifzonen     4.80 Euro    2          *" << endl;
    	cout << "	* 3 Tarifzonen     7.20 Euro    3          *" << endl;
    	cout << "	* 4 Tarifzonen     9.00 Euro    4          *" << endl;
    	cout << "	*                                          *" << endl;
    	cout << "	*                                          *" << endl;
    	cout << "	* Unterbrechung                 x          *" << endl;
    	cout << "	* --------------------------               *" << endl;
    	cout << "	*                                          *" << endl;
    	cout << "	* Ihre Auswahl ================>           *" << endl;
    	cout << "	********************************************" << endl;
    	cout << endl << "	Eingabe: ";
    	cin >> m;
    
    	switch(m)
    	{
    	case 'k':
    		{
    			preis=1.60;
    			break;
    		}
    	case '1':
    		{
    			preis=2.50;
    			break;
    		}
    	case '2':
    		{
    			preis=4.80;
    			break;
    		}
    	case '3':
    		{
    			preis=7.20;
    			break;
    		}
    	case '4':
    		{
    			preis=9.00;
    			break;
    		}
    	case 'x':
    		{
    			preis=0.00;
    			break;
    		}
    	default:
    		{
    			cout << "	Falsche Eingabe" << endl;
    			preis=0.00;
    			break;
    		}
    	}
    
    	betrag=preis;
    	cout << "Bitte den Betrag von: " << betrag << " Euro einwerfen." << endl;
    	cout << "Nur mit Muenzen!" << endl;
    	cout << "Erlaubt sind: 2 Euro, 1 Euro, 0.50 Euro, 0.20 Euro, 0.10 Euro" << endl;
    	betrag=betrag*100;
    	rest=betrag;
    
    	do
    	{
    		cin >> zahl1;
    		if (zahl1==2 || zahl1==1 || zahl1==0.50 || zahl1==0.20 || zahl1==0.10)
    		{
    		}
    		else
    		{
    			cout << "Falsche Eingabe, es gibt keine " << zahl1 << "Muenze." << endl;
    			zahl1=0;
    		}
    		zahl1=zahl1*100;
    		zahl2=zahl2+zahl1;
    		rest=rest-zahl1;
    
    		if (rest > 0)
    		{
    			cout << "Es muss noch " << (rest/100) << " Euro bezahlt werden." << endl;
    		}
    	}
    	while (betrag>zahl2);
    
    	zahl2=zahl2-betrag;
    	cout << "Rueckgabe von "<<(zahl2/100)<<" Euro\n";
    
    	rueckgabe=(zahl2/100);
    
    }
    

    In meinem switch-case ist im default ein Fehler. Das Programm soll zwar anzeigen, dass es eine falsche Eingabe war, soll mir dann aber nicht sagen, wieviel Euro ich einwerfen soll, sondern der Benutzer soll das Programm noch mal angezeigt bekommen und dann eine neue Auswahl treffen. Außerdem soll bei Eingabe von x das Programm geschloss werden.
    Kann mir da jemand weiterhelfen? 😕

    Gruß chaos



  • Dazu benötigst du eine Schleife um die Eingabe:

    do
    {
      cout<<"Ihre Eingabe:";//inklusive des Menütextes
      cin>>m;
      switch(m)
      {
        //...
      case 'x':
        cout<<"Auf wiedersehen.\n";
        return 0;//beendet main() und damit das Programm
      default:
        preis=-1;//->Neustart der Schleife
        cout<<"falsche Eingabe\n";
        break;
      }
    }while(preis<0);
    


  • Okay, erscheint logisch, danke auch 🙂 ... Hab das auch ausprobiert. Nur mag mein Compiler wohl nicht das return 0, denn beim Erstellen der Datei kommt folgender Fehler: error C2562: 'main' : 'void'-Funktion gibt einen Wert zurueck
    Muss ich irgendeine bestimmte Header-Datei einbinden?

    Außerdem hab ich die do-while-Schleife jetzt das Problem, dass er mir einen Fehler in betrag=preis ausgibt.

    switch(m)
    		{
                      // ...
    		case 'x':
    			{
    				cout << "Auf Wiedersehen!";
    				return 0;
    			}
    		default:
    			{
    				cout << "	Falsche Eingabe" << endl;
    				preis=-1.00;
    				break;
    			}
    		}
    		while (preis<0);
    	}
    
    	betrag=preis;
    

    Beide sind als Variablen deklariert. 😕

    Gruß chaos



  • Ja, man deklariert main auch nicht als void - richtig ist "int main()".



  • Hallo

    Vielleicht bin ich ja auf dem Holzweg, aber es sieht so aus, als ob du die main-Funktion als void deklariert hast. Dann kannst du natürlich keinen Rückgabe zurückgeben. Also aus void mach int.

    chrische

    EDIT: Da war wohl jemand schneller



  • Danke, das Problem mit void main() ist jetzt gelöst, auch wenn ich meinem Lehrer nicht erklären könnte, wieso int anstatt main. Außer vielleicht, damit das return 0 funktioniert. 😃

    Jetzt hab ich aber immer noch das Problem, dass er mir die Reihe betrag=preis; als Fehler ankreidet. error C2061: Syntaxfehler : Bezeichner 'betrag' Das macht er aber erst, seit die do-while-Schleife umd das switch case ist. 😕

    ein sehr verwirrtes chaos



  • ganz einfach main ist auch nur eine Funktion, bevor man den Namen einer Funktion schreibt, wird bekanntlich angegeben, welcher Datentyp zurückgegeben wird, eventuell char oder eben int.
    Wenn du nun void benutzt gibst du an, dass deine Funktion keinen Rückgabewert hat, da void=nichts, jedenfalls im Falle von Funktionen. Also um eine Ganzzahl, also einen int Wert zurückzugeben musst du natürlich die Funktion auch als eine Funktion definieren, die int zurückgibt.
    also schreibst du:

    int main()
    

    und nicht:

    void main()
    

    soweit verständlich? sonst kann ich es ja nochmal probieren....



  • mann , ihr habt ja preise 🙂



  • chaos schrieb:

    Jetzt hab ich aber immer noch das Problem, dass er mir die Reihe betrag=preis; als Fehler ankreidet. error C2061: Syntaxfehler : Bezeichner 'betrag' Das macht er aber erst, seit die do-while-Schleife umd das switch case ist. 😕

    Das sieht nach Syntaxfehler aus.
    Wenn ich das richtig sehe, hast du

    do
    {
     switch
     {
       ...
     }
    
     while(...);
    }
    

    Das do-while-Konstrukt muß aber so aussehen:

    do
    {
     switch
     {
       ...
     }
    }
    while(...);
    


  • @Kevinus: Danke für die genaue Erklärung, ich hab es mir im Quellcode vermerkt. 🙂

    @fernsehass: Aus diesem Grund fahr ich Auto. 😃 Für 6 km zahl ich keine 2,50 €, ich fahr mit Diesel. 😃

    @GuybrushThreepwood: Danke! Jetzt läuft es soweit, wie ich es laufen soll und ich bin ein lebender Beweis, dass man den Wald vor lauter Bäumen nicht sieht. In einer anderen do-while-Schleife hatte ich den Syntax richtig. 🙄 Also danke für deine Hilfe. 🙂

    Gruß chaos



  • Noch mal ich... 🙄 Habe mein Programm fast fertig... Danke noch mal an diejenigen, die meine Probleme erkannt haben.
    Doch jetzt kommt mein persönlicher Grauen des Abends.

    Die Aufgabenstellung beinhaltet, dass es (sollte jemand zuviel bezahlen) Rückgeld gibt. Klappt. Aber er, also der Automat, soll das Rückgeld mit möglichst wenig Münzen zurückgeben. 🙄
    Außerdem soll bei Eingabe eines anderen Buchstaben außer j oder J, die Frage solange kommen, bis der Benutzer einen der zwei möglichen Buchstaben eingibt. Bei mir springt er nur zurück ins Programm wenn ich einen der Buchstaben eingebe. 🙄

    Könnte vielleicht noch mal jemand über meinen Quelltext blicken und mir eventuell meine Fehler schreiben? 😕

    #include <iostream.h>
    
    int main()
    {
    	char m, entnehm;
    	double zahl1=0, zahl2=0, rest=0, preis, betrag, rueckgabe;
    	double zwei=0,eins=0,fuenfzig=0,zwanzig=0,zehn=0;
    	int auszahl=200;
    
    	do
    	{
    		do
    		{
    		cout << "	*******************Menue********************" << endl;
    		cout << "	* FAHRKARTENAUTOMAT                        *" << endl;
    		cout << "	*                                          *" << endl;
    		cout << "	*                                          *" << endl;
    		cout << "	* Preisstufe       Betrag       Taste      *" << endl;
    		cout << "	* --------------------------               *" << endl;
    		cout << "	* Kurzstrecke      1.60 Euro    k          *" << endl;
    		cout << "	*                                          *" << endl;
    		cout << "	* 1 Tarifzone      2.50 Euro    1          *" << endl;
    		cout << "	* 2 Tarifzonen     4.80 Euro    2          *" << endl;
    		cout << "	* 3 Tarifzonen     7.20 Euro    3          *" << endl;
    		cout << "	* 4 Tarifzonen     9.00 Euro    4          *" << endl;
    		cout << "	*                                          *" << endl;
    		cout << "	*                                          *" << endl;
    		cout << "	* Unterbrechung                 x          *" << endl;
    		cout << "	* --------------------------               *" << endl;
    		cout << "	*                                          *" << endl;
    		cout << "	* Ihre Auswahl ================>           *" << endl;
    		cout << "	********************************************" << endl;
    		cout << endl << "	Eingabe: ";
    		cin >> m;
    
    		switch(m)
    		{
    		case 'k':
    			{
    				preis=1.60;
    				break;
    			}
    		case '1':
    			{
    				preis=2.50;
    				break;
    			}
    		case '2':
    			{
    				preis=4.80;
    				break;
    			}
    		case '3':
    			{
    				preis=7.20;
    				break;
    			}
    		case '4':
    			{
    				preis=9.00;
    				break;
    			}
    		case 'x':
    			{
    				return 0;
    			}
    		default:
    			{
    				cout << "	Falsche Eingabe" << endl;
    				preis=-1.00;
    				break;
    			}
    		}
    		}
    	while (preis<0);
    
        betrag=preis;
    	cout << "	Bitte den Betrag von: " << betrag << " Euro einwerfen." << endl;
    	cout << "	Nur mit Muenzen!" << endl;
    	cout << "	Erlaubt sind: 2.00 Euro, 1.00 Euro, 0.50 Euro, 0.20 Euro, 0.10 Euro" << endl;
    	betrag=betrag*100;
    	rest=betrag;
    
    	do
    	{
    		cout << "	Betrag: ";
    		cin >>	zahl1;
    		if (zahl1==2 || zahl1==1 || zahl1==0.50 || zahl1==0.20 || zahl1==0.10)
    		{
    		}
    		else
    		{
    			cout << "	Falsche Eingabe, es gibt keine " << zahl1 << "Muenze." << endl;
    			zahl1=0;
    		}
    		zahl1=zahl1*100; //evtl. in eine Funktions-Datei & Header-Datei
    		zahl2=zahl2+zahl1; //einbinden... Noch mal in Unterlagen nach
    		rest=rest-zahl1; //möglicher Lösung suchen!
    		if (rest > 0)
    		{
    			cout << "	Es muss noch " << (rest/100) << " Euro bezahlt werden." << endl;
    		}
    	}
    	while (betrag>zahl2);
    
    	zahl2=zahl2-betrag;
    	cout << "	Rueckgabe von "<<(zahl2/100)<<" Euro\n";
    
    	rueckgabe=(zahl2/100);
    
    	betrag=rueckgabe;
    	betrag=betrag*100;
    	while(betrag>0)
    	{		
    		if((betrag-auszahl)>=0)
    		{
    			switch(auszahl)
    			{
    			case 200:
    				zwei++;
    				break;
    			case 100:
    				eins++;
    				break;
    			case 50:
    				fuenfzig++;
    				break;
    			case 20:
    				zwanzig++;
    				break;
    			case 10:
    				zehn++;
    				break;
    			}
    			betrag=betrag-auszahl;
    		}
    		else
    		{
    			if(auszahl==50)
    			{
    				auszahl=20;
    			}
    			else
    			{
    				auszahl=auszahl/2;
    			}
    		}
    	}
    
    	cout << endl << "	Rueckgabe in folgenden Muenzen:";
    	cout << endl << "	-------------------------------";
    	cout << endl << "	" << zwei <<" x 2.00 Euro";
    	cout << endl << "	" << eins << " x 1.00 Euro";
    	cout << endl << "	" << fuenfzig << " x 0.50 Euro";
    	cout << endl << "	" << zwanzig << " x 0.20 Euro";
    	cout << endl << "	" << zehn <<" x 0.10 Euro";
    
    	cout << endl << endl << "Fahrkarte entnehmen!";
    	if (entnehm!='j' || entnehm!='J')
    	{
    	cout << endl << "Haben Sie die Fahrkarte entnommen? j/J=JA";
    	cin >> entnehm;
    	}
    
    	}
    	while (entnehm=='j' || entnehm=='J');
    
    }
    

    Gruß chaos



  • Hallo

    ich habe mir deinen Quellcode nicth genau angeschaut, wollte bloss sagen, dass du Funktionen schreiben solltest, weil es sonst echt unübersichtlich wird und du nicht mehr weisst, was am Anfang passiert.

    chrische



  • @chrische: Ich weiß und es ist auch eine Vorgabe vom Lehrer. Doch ich stehe mit Funktionen auf Kriegsfuß. 🙄 Wollte erst mal das Programm so weit lauffähig haben und mich dann an den Funktionen versuchen.

    chaos



  • Ich habe mir die Frechheit genommen, das Programm ein wenig in Funktionen zu gliedern (mit der Hoffnung, dass Du das Kriegsbeil begräbst 🙂 ) und kleinere Anpassungen vorzunehmen:

    #include <iostream>
    #include <iomanip>
    using namespace std;
    
    int tarifAuswahl()
    {
    	char tarif;
    
    	while(true)
    	{
    		cout << "\t\xC9\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCDMenue\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xBB\n";
    		cout << "\t\xBA FAHRKARTENAUTOMAT                        \xBA\n";
    		cout << "\t\xBA                                          \xBA\n";
    		cout << "\t\xBA                                          \xBA\n";
    		cout << "\t\xBA Preisstufe       Betrag       Taste      \xBA\n";
    		cout << "\t\xBA --------------------------               \xBA\n";
    		cout << "\t\xBA Kurzstrecke      1.60 Euro    k          \xBA\n";
    		cout << "\t\xBA                                          \xBA\n";
    		cout << "\t\xBA 1 Tarifzone      2.50 Euro    1          \xBA\n";
    		cout << "\t\xBA 2 Tarifzonen     4.80 Euro    2          \xBA\n";
    		cout << "\t\xBA 3 Tarifzonen     7.20 Euro    3          \xBA\n";
    		cout << "\t\xBA 4 Tarifzonen     9.00 Euro    4          \xBA\n";
    		cout << "\t\xBA                                          \xBA\n";
    		cout << "\t\xBA                                          \xBA\n";
    		cout << "\t\xBA Unterbrechung                 x          \xBA\n";
    		cout << "\t\xBA --------------------------               \xBA\n";
    		cout << "\t\xBA                                          \xBA\n";
    		cout << "\t\xBA Ihre Auswahl ================>           \xBA\n";
    		cout << "\t\xC8\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xBC\n\n";
    		cout << "\tEingabe: ";
    
    		cin >> tarif;
    
    		switch(tarif)
    		{
    		case 'k':
    			return 160;
    
    		case '1':
    			return 250;
    
    		case '2':
    			return 480;
    
    		case '3':
    			return 720;
    
    		case '4':
    			return 900;
    
    		case 'x':
    			exit(0);
    
    		default:
    			cout << "\tFalsche Eingabe" << endl;
    			break;
    		}
    	}
    }
    
    int muenzenAuswahl(int gefordertInCent)
    {
    	static int MUENZEN[] = {200, 100, 50, 20, 10};
    	int auswahl;
    	int gegeben = 0;
    
    	cout << "\tBitte den Betrag von: " << fixed << setprecision(2) << gefordertInCent/100.0f << " Euro einwerfen.\n";
    	cout << "\tNur mit Muenzen!\n";
    	cout << "\tErlaubt sind:\n\t(1) 2.00 Euro\n\t(2) 1.00 Euro\n\t(3) 0.50 Euro\n\t(4) 0.20 Euro\n\t(5) 0.10 Euro\n";
    
    	while (gefordertInCent > gegeben)
    	{
    		cout << "\tMuenze: ";
    		cin >> auswahl;
    		if (auswahl > 0 && auswahl < 6)
    			gegeben += MUENZEN[auswahl-1];
    		else
    			cout << "\tFalsche Eingabe, es gibt keine Muenze (" << auswahl << ")." << endl;
    
    		if (gefordertInCent > gegeben)
    			cout << "\tEs muss noch " << fixed << setprecision(2) << ((gefordertInCent-gegeben)/100.0f) << " Euro bezahlt werden." << endl;
    	}
    
    	return gegeben;
    }
    
    void rueckgabe(int gefordert, int gegeben)
    {
    	int zuviel = gegeben-gefordert;
    	int rueckgabe[] = {0, 0, 0, 0, 0};
    
    	cout << "\tRueckgabe von " << fixed << setprecision(2) << (zuviel/100.0f) <<" Euro\n";
    
    	while(zuviel >= 200)
    	{
    		++rueckgabe[0];
    		zuviel -= 200;
    	}
    
    	while(zuviel >= 100)
    	{
    		++rueckgabe[1];
    		zuviel -= 100;
    	}
    
    	while(zuviel >= 50)
    	{
    		++rueckgabe[2];
    		zuviel -= 50;
    	}
    
    	while(zuviel >= 20)
    	{
    		++rueckgabe[3];
    		zuviel -= 20;
    	}
    
    	while(zuviel >= 10)
    	{
    		++rueckgabe[4];
    		zuviel -= 10;
    	}
    
    	cout << endl << "\tRueckgabe in folgenden Muenzen:";
    	cout << endl << "\t-------------------------------";
    	cout << endl << "\t" << rueckgabe[0] << " x 2.00 Euro";
    	cout << endl << "\t" << rueckgabe[1] << " x 1.00 Euro";
    	cout << endl << "\t" << rueckgabe[2] << " x 0.50 Euro";
    	cout << endl << "\t" << rueckgabe[3] << " x 0.20 Euro";
    	cout << endl << "\t" << rueckgabe[4] << " x 0.10 Euro";
    }
    
    void automat()
    {
    	int preisInCent, gegeben;
    	char entnehm=0;
    
    	preisInCent = tarifAuswahl();
    	gegeben = muenzenAuswahl(preisInCent);
    	rueckgabe(preisInCent, gegeben);
    
    	cout << endl << endl << "Fahrkarte entnehmen!";
    	while(entnehm != 'j' && entnehm != 'J')
    	{
    		cout << endl << "Haben Sie die Fahrkarte entnommen? j/J=JA\n";
    		cin >> entnehm;
    	}
    }
    
    int main()
    {
    	automat();
    }
    


  • chaos schrieb:

    Danke, das Problem mit void main() ist jetzt gelöst, auch wenn ich meinem Lehrer nicht erklären könnte, wieso int anstatt main. Außer vielleicht, damit das return 0 funktioniert. 😃

    Ganz einfach - main() wird als int deklariert, weil das im C/C++ Standard so festgelegt ist (offiziell erlaubt sind nur "int main(void)", "int main(int,char**)" und "int main(int,char*[])" - die beiden letzten Varianten bieten dir Zugriff auf die Kommandozeilen-Parameter).



  • war die Frage nicht schon beantwortet aber egal, dass mit Funktionen zu machen solltest du auf keinen Fall missen, vorallem nicht wenn du das Programm noch weiter ausbauen möchtest, sonst kannst du dich dann erstma 2 Stunden in deinen Code einlesen, wenn du verstehst was ich meine. Außerdem noch den Rat von mir:
    Versuche zu dokumentieren wenn du weiter an deinem Programm arbeiten willst, vorallem bei größeren Projekten.



  • @result: Danke, aber irgendwie versteh ich den ganzen Aufbau nicht. 😞 Irgendwie hab ich Funktionen anders gelernt bzw. wollte mein Lehrer, dass wir sie lernen. Außerdem versteh ich den halben Quellcode nicht. 😞

    @Kevinus: Ja, die Frage war schon beantwortet, aber doppelt kann auch besser halten. 😃 Wegen den Funktionen werde ich mich mit einem Klassenkameraden zusammensetzen und der soll mir das noch mal alles erklären, bis auch ich es verstehe. 🙄

    Aber noch mal eine paar Fragen bezüglich dem Quellcode von result. Was bedeutet static int? Und das \t? Und C9, CD & BA vor dem x? 😕

    Gruß chaos



  • "static int MUENZEN[]={...};" bedeutet, daß der Wert dieses Arrays sich zwischen den einzelnen Funktionsaufrufen nicht ändert.

    '\t' steht für das Tabulator-Zeichen, '\xAB' und ähnliche stehen für das Zeichen mit dem ASCII-Code AB(hex) - die angegebenen Zeichen ergeben einen Rahmen um dein Auswahlmenü.



  • Die Codes für die Zeichen kann man bei WinXP übrigens in
    Start->Alle Programme->Zubehör->Systemprogramme->Zeichentabelle finden. Um die Tabelle für westeuropäische WinDOS Konsolenprogramme zu sehen muss man die erweiterte Ansicht einschalten und bei Zeichensatz "DOS: Westeuropa" auswählen. Im Internet gibt es diese Zeichentabelle zum Beispiel hier: http://de.wikipedia.org/wiki/Codepage_850. Was die Funktionen angeht, würde mich mal interessieren, was dein Lehrer darunter versteht. Hier übersichtshalber noch mal kleinere Funktionen mit Kommentaren:

    #include <iostream>
    #include <iomanip>
    using namespace std;
    
    //Funktion:
    //	Rückgabe : double
    //	Name	 : quadrat
    //	Parameter:
    //		Datentyp: double
    //		Name	: x
    double quadrat(double x)
    {
    	return x*x;
    }
    
    //Eine Funktion ohne Rückgabe nennt man auch Prozedur
    //	Rückgabe : void
    //	Name	 : zeigeQuadrat
    //	Parameter:
    //		Datentyp: double
    //		Name	: x
    //
    //		Datentyp: int
    //		Name	: nachKommaStellen
    void zeigeQuadrat(double x, int nachKommaStellen)
    {
    	//static in Funktion wird NUR beim ersten Aufruf initialisiert
    	static int wieOftAufgerufen = 0;
    
    	//mit dem Pre-Inkrement-Operator um 1 erhöhen (bei jedem Aufruf)
    	++wieOftAufgerufen;
    	cout << "Aufruf " << wieOftAufgerufen << ": " << fixed << setprecision(nachKommaStellen) << quadrat(x) << endl;
    }
    
    int main()
    {
    	zeigeQuadrat(5, 3);
    	zeigeQuadrat(5.3, 3);
    	zeigeQuadrat(7.1432, 3);
    
        cin.get();
    }
    

    Wenn die Parameter Eingangsgrößen sind, werden sie auch gerne Argumente genannt.



  • @result: Ich versuche das jetzt mal zu erklären, wie ich es von meinem Lehrer aufgenommen habe. Dabei hilft mir wohl am besten ein Quellcode.

    //Haupt.cpp
    #include <iostream.h>
    #include "add.h"
    
    void main()
    {
       int zahl1, zahl2, summe;
       cout << "Bitte Zahl1 eingeben: ";
       cin >> zahl1;
       cout << "Bitte Zahl2 eingeben: ";
       cin >> zahl2;
    
       summe=addidition(zahl1, zahl2);
    
       cout << summe;
    }
    

    So habe ich den Aufbau eines Programms gelernt. Die Headerdateien werden bzw. müssen bei meinem Lehrer mit .h versehen werden und using namespace std; benutzen wir gar nicht. Auch schreiben wir ständig void main() und andere Möglichkeiten hat er noch gar nicht erklärt.

    //add.h
    int addition (int x, int z);
    
    //Funktion.cpp
    #include "add.h" //Wobei ich mir hier gar nicht sicher bin, ob wir das überhaupt noch machen müssen.
    //In seinen letzten Programmen war das nämlich nicht der Fall.
    
    int addition (int x, int z),
    {
       int y;
       y=x+z;
       return y;
    }
    

    Du siehst, es ist alles recht einfach gestrickt und ich kann mit den meisten Begriffen kaum etwas anfangen. Und wenn ich meinem Lehrer so einen Quellcode (wie deinen Versuch, mich mit Funktionen zu versöhnen) abgeben würde, würde der denken, ich hab die Arbeit nicht selbst gemacht.

    Gruß chaos


Anmelden zum Antworten