Programmteile wiederholt ausführen

Hab das getchar mal in den Anweisungsblock geschrieben, beendet dann aber auch nicht wenn er soll.
Code:
do
{
FrageEinfuegen("Bitte machen Sie Ihre Eingabe [s]:");

cout << "# ";
cin >> x;

Umrechnen(x);

FrageEinfuegen("Fortfahren mit [j], zum beenden beliebige Taste druecken");
cin >> j;

}
while (j == 'j');

getchar();
return 0;
}


Es funktioniert ja auch alles prächtig. Auf "j" wird die Schleife von vorne durchlaufen und das beliebig oft. Nur wenn ich eine andere Taste drücke beendet das Programm eben nicht wie es soll. Gibt es denn keine "Exit" Funktion in c++?
 
Die letzte Zeile Code lautet doch return 0;

Wieso beendet er dann nicht?
Liegts vielleicht in Verbdindung mit dem getchar?

Allerdings, wenn ich das weglasse ändert sich auch nix
 
So, wie Du die Funktion geschrieben hast, mußt Du zum Beenden des Programms nach dem Beenden der Schleife nochmal eine Taste drücken. Wenn Du das getchar wegläßt, dann sollte sich das Programm gleich nach der Schleife beenden.
 
moin


Nochmal:
Was willst du eigentlich machen?

Soll das Programm wiederholt werden wenn j gedrückt wird, und soll es beendet werden wenn etwas anderes gedrückt wird?

Dann lass das getchar(); weg und wenn j eingegeben wird, qird das Programm beendet.


mfg
umbrasaxum
 
Hallo,

richtig. Es soll wiederholt werden wenn "j" gedrückt wird und beendet werden bei jeder anderen Tastatureingabe. Das getchar hab ich weggelassen aber wider Erwarten beendet das Programm dann nicht wenn ich z.B. Enter drücke. Auch nach mehrmaligem drücken nicht. Habe schon versucht die Main() Funktion innerhalb der Funktion selbst aufzurufen, aber das scheint nicht erlaubt zu sein. Ich arbeite mit Borland 5.
 
moin


Ja bei Enter geht das so auch nciht:

dann müsstest du statt
Code:
cin >> j;

}
while (j == 'j');
das hier schreiben:
Code:
char taste = getch();

}
while (taste == 'j');


mfg
umbrasaxum
 
also ich machs meist ähnlich wie Endurion, allerdings nur mit while...
schaut dann so aus:

Code:
 bool bEnde = false;
  
while(!bEnde)
 {
   ....//Dein Code
    ............
    ..................
    bEnde = wannaQuit();	 //eigene Funktion für Abfrage obs weitergehen soll..
 }
  
//und dann noch die Funktion für die Abfrage:
  bool wannaQuit()
  {
  	char c;
  
  	while(true) //so lange fragen bis korrekte Eingabe erfolgt...
  	{
  		printf("Wollen Sie weitere Zahlen berechnen?(J/N)\r\n\r\n");
  		scanf("%s", &c);
  		if(c == 'J' || c == 'j')
  		{
  			return false;
  		}
  		else if(c == 'N' || c == 'n')
  		{
  			return true;
  		}
  	}
  }
 
Also diese Funktion ist getestet, wenn du jetzt j eingibst und dann enter drückst wird sie wiederhohlt, wenn du was anderes eingibst wird sie abgebrochen und das Programm beendet.


Code:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
#include <iostream.h>

//---------------------------------------------------------------------------

#pragma argsused
void main()
{
 char j='0';

 do
   {
    cout << "Zum wiederhohlen j druecken!" << endl;
    cin >> j;
   }
 while(j=='j');


}
//---------------------------------------------------------------------------
 
Zurück