WinFuture-Forum.de: C++ Programm Abbrechen - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

C++ Programm Abbrechen bzw. zurück zu einer bestimmten Stelle springen


#1 Mitglied ist offline   smite 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.199
  • Beigetreten: 08. Januar 07
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:127.0.0.1

geschrieben 18. November 2007 - 17:47

Hallo Helfer,
ich hoffe ich nerve nicht mit meinen Anfängerfragen in c++^^.
Ich habe zum Üben ein kleines Programm geschrieben, bei welchem Eingaben gemacht werden. 1=Ja und 2=Nein.
Um die Eingaben zu überprüfen habe ich eine if/else Bedingung erstellt welche den Text "Falsche Eingaben, bitte Programm erneut ausführen" ausgibt, wenn die Eingaben weder 1 noch 2 sind.

Nun zu meinem Problem, Wenn dies der Fall ist, hätte ich es gerne so, dass das Programm abbricht und nicht weiterläuft, bzw. wenn das Programm zu einer bestimmten Stelle zurückspringt.
Sprich: Bedingung ist wahr, dann breche Programm ab.
bzw.: Bedingung ist wahr, dann springe zurück zu Zeile xy.

Ich hoffe ich habe mich verständlich ausgedrückt. Es reicht mir auch aus, wenn ihr mir sagt, über welche Befehle ich mich erkundigen muss um dieses Problem zu lösen.
Wenn es hilft, kann ich den Code auch noch posten.

Vielen Dank schon einmal im vorraus für eure Antworten.
Viele Grüße smite
Eingefügtes BildEingefügtes Bild
0

Anzeige



#2 Mitglied ist offline   gl4di4t0r 

  • Gruppe: aktive Mitglieder
  • Beiträge: 419
  • Beigetreten: 03. Oktober 04
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Bärlin

geschrieben 18. November 2007 - 19:22

am besten geht das ganze eig mit:

int main()
{
char zeichen;
do
{
cout << "Bitte zeichen eingeben";
cin >> zeichen;
}
while(zeichen != '1' || zeichen != '2');
cout << "Beende programm";
return 0;
}

(keine garantie auf funktion)
Denn Zu zeilen im code spirngen verursacht spaghetti-code und dieses konzept ist schon lange veraltet (basic-zeiten)

Eingefügtes Bild
Eingefügtes Bild
CCNA - Cisco Certified Network Associate
DropBox Online Sync-Speicher
0

#3 Mitglied ist offline   smite 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.199
  • Beigetreten: 08. Januar 07
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:127.0.0.1

geschrieben 18. November 2007 - 19:34

Danke für die Antwort. Genauso möchte ich es auch machen. Jedoch wie lautet der Befehl "Beende programm"? Damit nachfolgende Ausgaben nicht mehr angezeigt werden?
Ist dafür return 0; da? Dann hätte ich mehrmals den Befehl return 0; in meinem c++ Programm?
Viele Grüße smite

Dieser Beitrag wurde von smite bearbeitet: 18. November 2007 - 19:35

Eingefügtes BildEingefügtes Bild
0

#4 Mitglied ist offline   gl4di4t0r 

  • Gruppe: aktive Mitglieder
  • Beiträge: 419
  • Beigetreten: 03. Oktober 04
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Bärlin

geschrieben 18. November 2007 - 19:55

Ich glaube du solltest die Grundlagen ersteinmal lernen. Eine Funktion (hier main) die als Rückgabedatentyp int hat, muss auch einen int-Wert zurückgeben. Dafür ist das return zuständig.

Eingefügtes Bild
Eingefügtes Bild
CCNA - Cisco Certified Network Associate
DropBox Online Sync-Speicher
0

#5 Mitglied ist offline   smite 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.199
  • Beigetreten: 08. Januar 07
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:127.0.0.1

geschrieben 19. November 2007 - 08:36

Mit dem Grundlagen lernen hast du wohl recht, das weiß ich auch :D. I
ch beschäftige mich erst seit kurzem mit c++ und zum lernen habe ich ein paar kleinere Programme geschrieben. Eingaben-->Bedingung-->Ausgaben.
Immer wenn ich eine Idee habe wie ich etwas besser machen könnte, versuche ich den passenden Befehl mit google zu finden. Jedoch ist dies oft gar nicht so einfach, wenn man kaum Grundlagen zu diesem Thema hat.
Daher versuche ich wenn eine Frage auftaucht diese zu lösen um einfach mehr zu diesem Thema zu lernen. Falls das jetzt so rüberkommen soll, dass ich dich irgendwie anmeckern will, das ist nicht der Fall. Ich wollte das einfach nur mal so geschrieben haben, nicht dass mein Thread so aussieht, als ob ich hier eine Musterlösung präsentiert haben will bzw. alles fertg vorgesetzt bekommen möchte.
Viele Grüße
smite
Eingefügtes BildEingefügtes Bild
0

#6 Mitglied ist offline   skelle 

  • Gruppe: aktive Mitglieder
  • Beiträge: 793
  • Beigetreten: 15. Juli 04
  • Reputation: 0

geschrieben 19. November 2007 - 15:55

mit switch arbeiten oder wie schon gezeigt mit einer schleife arbeiten

das sind die dinge die du wohl zur auswahl hast ^_^
0

#7 Mitglied ist offline   smite 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.199
  • Beigetreten: 08. Januar 07
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:127.0.0.1

geschrieben 19. November 2007 - 17:22

Danke für die Antworten.
Ein Frage noch. Verstehe ich das jetzt richtig, dass es keinen Befehl gibt, ein Programm abzubrechen?
z. B. bei dem Befehl "system ("pause")" läuft das Programm erst bei einem Tastendruck weiter. Gibt es nicht einen Befehl der das Programm beendet? z. B. "system ("stop") oder so?
Viele Grüße smite
Eingefügtes BildEingefügtes Bild
0

#8 Mitglied ist offline   Witi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.942
  • Beigetreten: 13. Dezember 04
  • Reputation: 43
  • Geschlecht:Männlich
  • Wohnort:Kingsvillage
  • Interessen:Frickeln

geschrieben 19. November 2007 - 20:21

Zitat

system ("pause")

Würde ich nicht nehmen, dadurch machst du die Plattformunabhängigkeit kaputt. "pause" funktioniert nur unter Windows.
In System kannst du alle Befehle eingeben, die auch auf der normalen Konsole laufen, quasi Batchscripting.
0

#9 Mitglied ist offline   smite 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.199
  • Beigetreten: 08. Januar 07
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:127.0.0.1

geschrieben 19. November 2007 - 20:35

Beitrag anzeigenZitat (Witi: 19.11.2007, 20:21)

Würde ich nicht nehmen, dadurch machst du die Plattformunabhängigkeit kaputt. "pause" funktioniert nur unter Windows.
In System kannst du alle Befehle eingeben, die auch auf der normalen Konsole laufen, quasi Batchscripting.

Achso, Danke ;(. Das wusste ich nicht.
Gibt es einen anderen Befehl, der den gleichen Effekt wie system ("pause") hat? Sprich, dass das Fenster des Programms nicht sofort wieder zugeht?
Viele Grüße smite
Eingefügtes BildEingefügtes Bild
0

#10 Mitglied ist offline   skelle 

  • Gruppe: aktive Mitglieder
  • Beiträge: 793
  • Beigetreten: 15. Juli 04
  • Reputation: 0

geschrieben 19. November 2007 - 22:35

cin.get()
wartet z.B. solange bis du ne taste drückst

oder du bindest die passende bibliothek ein das dir threading optionen uzr verfügung stehen und verwendest die sleep methode

oder die veraltete conio.h einbinden und getch() benutzen -> gleiche funktionalität wie cin.get()

hoffe das war das was du meintest

greetz skelle
0

#11 Mitglied ist offline   smite 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.199
  • Beigetreten: 08. Januar 07
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:127.0.0.1

geschrieben 19. November 2007 - 23:07

Beitrag anzeigenZitat (Witi: 19.11.2007, 20:21)

In System kannst du alle Befehle eingeben, die auch auf der normalen Konsole laufen, quasi Batchscripting.

Sryyyyyyyy wenn ich mich hier blöd anstelle, aber naja, iwie bin ich in c++ ein totaler Anfänger.
Jetzt habe ich mir schön überlegt, dass der Befehl zum schließen des Fensters eigentlich
system ("exit"); lauten müsste, oder?
Denn Witi schriebt, dass alle Befehle aus der cmd zu verwenden sind?
Aber wenn ich in die cmd help eintrage kommt als Beschreibung für den Befehl exit:
Exit: Beendet das Programm CMD.EXE (Befehlsinterpreter).
Also schließe ich daraus, das der Befehl exit nicht zu verfügung steht, oder? Mein Compiler wirft keine Fehlermeldung beim kompilieren aus, tut er jedoch auch nicht wenn ich system ("xy"); in mein Programm einbaue.

Ich hoffe anhand des Code-Beispiels wird verständlicher was ich eigentlich möchte.
Vielen Dank für eure Mühen die ihr euch macht.
Viele Grüße
smite

#include "stdafx.h"
#include <iostream>

using namespace std;

int main()
{
	
	int zahleins;

	cout<<"Bitte eine Eins eingeben"<<endl;
	cin>>zahleins;
	
		if (zahleins!=1) 
		{
		cout<<"Bitte starten sie das Programm erneut"<<endl;
		
		//Hier soll das Programm abbrechen, wenn nicht die Zahl 1 eingegeben
		//wurde, daher dachte ich mir das folgendermaßen: 
		//Mit dem system pause und dann dem exit wollte ich bezwecken, dass
		//das Fenster bei einem Tastendruck zugeht

		system ("pause");
		system ("exit");
		} 
		else 
		{
		cout<<"Sie haben erfolgreich die Zahl Eins eingegeben"<<endl;
		}
	
		//Der Text Programm Ende soll nur angezeigt werden, wenn die Zahl 1 eingegeben wurde.
		//Ansonsten soll das Programm schon vorher abgebrochen sein. 
		cout<<"Programm Ende"<<endl;


	system ("pause");
	return 0;
}

Dieser Beitrag wurde von smite bearbeitet: 19. November 2007 - 23:09

Eingefügtes BildEingefügtes Bild
0

#12 Mitglied ist offline   Witi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.942
  • Beigetreten: 13. Dezember 04
  • Reputation: 43
  • Geschlecht:Männlich
  • Wohnort:Kingsvillage
  • Interessen:Frickeln

geschrieben 20. November 2007 - 08:21

Zitat

Sryyyyyyyy wenn ich mich hier blöd anstelle, aber naja, iwie bin ich in c++ ein totaler Anfänger.
Jetzt habe ich mir schön überlegt, dass der Befehl zum schließen des Fensters eigentlich

Macht doch nichts, dafür sind wir ja da. ;(

system

Am besten du vergisst diesen Befehl ganz schnell wieder. Hier mehr: http://www.c-plusplu...t-is-39453.html

system ("pause");
system ("exit");

Das kannst du z.B. durch sowas ersetzen:
std::cout << "Fehler, weiter mit return..." << std::endl;
std::cin.ignore();
return 1;

0

#13 Mitglied ist offline   smite 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.199
  • Beigetreten: 08. Januar 07
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:127.0.0.1

geschrieben 20. November 2007 - 20:02

Danke für deine Hilfe, genauso wollte ich das machen.
Nur noch ein paar Fragen:
1) was macht dieser std?
2) was bedeuted cin.ignore()?
und 3. was macht der return Befehl? Return 1 und Return 0 am Ende von meinem Programm.

Ich habe bereits bei google geguckt, jedoch ist es schwer etwas zu verstehen wenn man sich mit dem Thema sogut wie garnicht auskennt.
Auch wenn ich die Musterlösung jetzt habe, wüsste ich gerne wieso das so ist. Es geht mir nicht um das Ergebnis sondern um den Weg, damit ich nächstes mal selbst auf die Lösung komme.
Sry wenn ich euch nerve, ich bin halt noch ein totaler Anfänger in c++.
Viele Grüße smite
Eingefügtes BildEingefügtes Bild
0

#14 Mitglied ist offline   Witi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.942
  • Beigetreten: 13. Dezember 04
  • Reputation: 43
  • Geschlecht:Männlich
  • Wohnort:Kingsvillage
  • Interessen:Frickeln

geschrieben 20. November 2007 - 21:17

Zitat

1) was macht dieser std?

using namespace std;


std ist einfach nur der Namensraum (eine Art Bibliothek), in dem sich Klassen wie cout oder cin befinden.

Entweder du bindest mit using den Namensraum global in deine Anwendung ein oder wenn du es nicht machen möchtest (es kann bspw andere Namensräume geben die auch die Klasse cin haben), musst du vor die entsprechenden Klassen den Namen des Namensraums schreiben.

Zitat

2) was bedeuted cin.ignore()?

Da verweise ich mal auf die Referenz und die entsprechende Beschreibung der Methode ignore.

Zitat

Sry wenn ich euch nerve, ich bin halt noch ein totaler Anfänger in c++.

Du wirst lachen...aber ich bin noch nicht mal ein C++ Programmierer. ;)
0

#15 Mitglied ist offline   gl4di4t0r 

  • Gruppe: aktive Mitglieder
  • Beiträge: 419
  • Beigetreten: 03. Oktober 04
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Bärlin

geschrieben 23. November 2007 - 07:14

Beitrag anzeigenZitat (smite: 19.11.2007, 17:22)

Ein Frage noch. Verstehe ich das jetzt richtig, dass es keinen Befehl gibt, ein Programm abzubrechen?

Noe, es hängt immer vom Programm bzw der Programmiersprache ab, aber wenn du in der int main() ein return 0 aufrufst wird das Programm beendet, da die Hauptfunktion zu ende ist.

Eingefügtes Bild
Eingefügtes Bild
CCNA - Cisco Certified Network Associate
DropBox Online Sync-Speicher
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0