Prgramm in ein Funktion packen.

Banni

Mitglied
Hallo Leute ich bins mal wieder der Banni ;),

Heute hab ich mal wieder eine kleine frag zur Programmierung, die ihr sicherlich mit leichtigkeit bewwältigen könnt.
Also:
Code:
   	cout <<"\nWas fuer ein Volumen hat der Tank ?:\t ";
   	cin >> volumen;
   	cout <<"\nAlter Kilometerstand:\t ";
   	cin >> altkmS;
   	cout <<"\nKilometerstand jetzt:\t ";
   	cin >> neukmS;
   	gefahren = neukmS - altkmS;
   	cout <<"\nBisher gefahren:\t " << gefahren;
   	cout <<"\n\nWie voll ist der Tank jetzt (%) ?:\t ";
   	cin >> tankinhalt;
   	ergti = tankinhaltjetzt(volumen, tankinhalt);
   	cout <<"\nDer Tank hat jetzt noch " << ergti; cout <<" Liter";
   	ergver = verbrauchS(volumen, ergti); 
   	cout <<"\nDas Auto hat " << ergver; cout <<" Liter bisher verbraucht";
   	ergkm = km(ergver, gefahren);
   	cout << std::setprecision(2) << std::fixed;
   	cout <<"\nDas Auto verbraucht " <<ergkm ; cout <<" Liter auf 100 km";
   	ergstr = strecke(ergti, ergkm);
   	cout <<"\nDas Auto kann noch " <<ergstr ; cout <<" km fahren";
   	cout <<"\n\nSoll das Programm wiederholt werden (J/N) ?:\t ";
   	cin >> wdh;

So, ich soll jetzt diesen Code in eine Fuktion packen, keine Klasse, sondern eine Funktion.
Im Hauptprogramm soll also dann nur noch der Aufruf der Funktion sein, und das Programm läuft sauber ab.
Habt ihr ne Ahnung wie dies umsetzbar ist ?

Ich bin für jede Hilfreiche Antwort sehr dankbar, euer Banni
 
lol?

Code:
int meine_funktion_die_alles_macht()
{
    /* Hier den ganzen Code rein */
}

int main()
{
    return meine_funktion_die_alles_macht();    
}
 
moin


Wäre der Funktionsaufruf nicht eher vor den return angebracht, besonders da die Funktion, wenn er alles nur reinkopiert ncihts zurück gibt.


mfg
umbrasaxum
 
lol

@Tobias K. ... Ich glaub aber du weißt was FireFlow gemeint hat. Und diese Variante ist später sicher lobenswerter (Windowsprogrammierung)!

Also wenn du Unterricht nimmst (was sich sehr danach anhört) würde ich einmal besser aufpassen oder einfach mal die Grundlagen lernen. Da gibts zu 100en wunderbare Files beim Google etc.

Eine Funktion besteht aus:
  • Prototyp (=Funktionskopf), als Inhaltverzeichnis. Bei FireFlows-Methode nicht nötig, da die Funktion schon oberhalb vom Funktionsaufruf geschrieben wurde.
  • Funktionsaufruf
  • Funktion an sich.
Das sollte man normalerweise in der 2ten Stunde lernen.

MfG Florian
 
moin


Ja, ich weiss was FireFlow meint, aber nicht ich hab das Problem sondern Banni!
Und spätestens wenn er ne 2. Funktin so aufruft, wird er merken das es nciht geht.


mfg
umbrasaxum
 
Ich glaube, hier geht's nicht drum, den kompletten Block in eine Funktion zu packen (wäre ja herzlich sinnlos), sondern den Code, der die Berechnung macht, in eine Funktion wegzupacken. Die Funktion bekommt die eingegebenen Parameter und stellt die Berechnung an.
 
moin


Das fürchte ich auch, wobei das natürlich sehr sinnlos wäre.
Aber wie es aussieht kann er Funktionen schreiben z.B. verbrauchS, km,...
Hmm.


mfg
umbrasaxum
 
So leute damit ihr euch weiter über mich lustig machen könnt, hier mein fertiges proramm *G*:

Code:
#include <iostream>
  using namespace std;
  #include <iomanip>
  
  float verbrauch (float l, float g)
  {
  float verb;
  verb = l*100/g;
  return verb;
  }
  float tankinhaltjetzt (float v, float t)
  {
  float tij;
  tij = v/100*t;
  return tij;
  }
  float verbrauchS (float x, float y)
  {
  float ver;
  ver = x-y;
  return ver;
  }
  float km (float e, float g)
  {
  float kms;
  kms = e / g * 100;
  return kms;
  }
  float strecke (float a, float b)
  {
  float str;
  str = a / b;
  return str;
  }
  int programmV()
  {	
  	// Verbrauch
  	float liter; 
  	float altkm; 
  	float neukm; 
  	float gefahren; 
  	float erg;
  
  		cout <<"\nWie viel Liter getankt ?\t ";
  		cin >> liter;
  		cout <<"\nAlter Kilometerstand:\t ";
  		cin >> altkm;
  		cout <<"\nKilometerstand jetzt:\t ";
  		cin >> neukm;
  		gefahren = neukm - altkm;
  		erg = verbrauch(liter, gefahren);
 		cout <<"\nDas Auto verbraucht " <<erg; cout <<" Liter auf 100 km";
  	return 0;
  }
  
  int programmS()
  {
  	//Strecke!
  	float altkmS;
  	float neukmS;
  	float gefahrenS;
  	float volumen;
  	float tankinhalt;
  	float ergti;
  	float ergver;
  	float ergkm;
  	float ergstr;
  
  		cout <<"\nWas fuer ein Volumen hat der Tank ?:\t ";
  		cin >> volumen;
  		cout <<"\nAlter Kilometerstand:\t ";
  		cin >> altkmS;
  		cout <<"\nKilometerstand jetzt:\t ";
  		cin >> neukmS;
  		gefahrenS = neukmS - altkmS;
  		cout <<"\nBisher gefahren:\t " << gefahrenS;
  		cout <<"\n\nWie voll ist der Tank jetzt (%) ?:\t ";
  		cin >> tankinhalt;
  		ergti = tankinhaltjetzt(volumen, tankinhalt);
 		cout <<"\nDer Tank hat jetzt noch " << ergti; cout <<" Liter";
  		ergver = verbrauchS(volumen, ergti); 
 		cout <<"\nDas Auto hat " << ergver; cout <<" Liter bisher verbraucht";
  		ergkm = km(ergver, gefahrenS);
  		cout << std::setprecision(2) << std::fixed;
 		cout <<"\nDas Auto verbraucht " <<ergkm ; cout <<" Liter auf 100 km";
  		ergstr = strecke(ergti, ergkm);
 		cout <<"\nDas Auto kann noch " <<ergstr ; cout <<" km fahren";
  	return 0;
  }
  
  int main()
  {
  	//Auswahl!
  	char zeichen; 
  	
  
  	
  
  	cout <<"\nDruecken Sie 'V', wenn Sie den Verbrauch ausrechnen moechten";
  	cout <<"\nDruecken Sie 'S', wenn Sie ausrechnen moechten wie weit das Auto noch kommt";
  	cout <<"\n\nWas moechten Sie ausfuehren ?:\t ";
  	cin >> zeichen;
  	switch(zeichen)
  		{
  	case 'V':
  	case 'v':
  	
  	return programmV();
  	
  	case 'S':
  	case 's':
  
  	return programmS();
  
  		
  	
  	}
  
  
  }
 
moin


Lass mal vor dem Aufruf von programmV(); und programmS(); das return weg.
Setz dafür nach den beiden Funktionsaufrufen ein break;
und ein return 0; am Ende von main.


mfg
umbrasaxum
 
Zurück