C++ - Zeilensprung und vorzitiges beenden?

Rolf-Hanka.ITD

Neuling
Thread Starter
Mitglied seit
08.11.2006
Beiträge
410
Ort
zu Hause
Hi Leute,
ich hab mal ne Frage wie kann ich in C++ sagen das das Programm in eine Belibige Zeile springen soll wenn etwas nicht erfüllt ist?? Und wie kann ich auch sowas ohne Sprung vorzeitig beenden (erst soll er noch was anzeigen dann nach Drücken der Enter Taste soll er beenden und nicht weiter die nächsten Punkte abarbeiten??)????


(z.B.

printf("Enter zum beenden"); //jetzt soll er entweder auf die
letzte Zeile springen oder nach
betätigung der Enter Taste
beenden!


Bitte helft mir

MfG
Rolf
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Ich sags dir heute abend^^.

Momentan komm ich nicht an meinen PC.

Meinst du, wenn eine Abfrage beendet ist, drückst du die Enter-Taste und es beendet einfach?
z. B.

Wie alt bist du?
Wie groß bist du?
willst du weiter machen? J/N

sowas in der art?
 
Ja genau sowas mein ich also ich freu mich schon auf heute Abend und hoff etwas zu lernen also bis dann meld dich!!
 
hier hab mal eins geschrieben zur Berechnung von Urlaubstagen in versch. Abhängigkeiten da kannste dir sicher einige nützliche Sachen rauskopieren:

// Urlaubstage.cpp : Definiert den Einsprungpunkt für die Konsolenanwendung.
//

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

using namespace std;

void main()
{

cout << "Programm zur Berechnung der Urlaubstage!" << endl;

int SummeUT=0, Alter;
char WeitereMA, APgef;

do
{
cout << "Sollen noch weitere Mitarbeiter erfasst werden? (jn):";
cin >> WeitereMA;

if (WeitereMA=='j')

{

cout << " Ist der Arbeitsplatz gefährlich ?" << endl;
cin >> APgef;
cout << endl;

if (APgef=='j') SummeUT+=2;

cout << " Bitte geben Sie das Alter des Mitarbeiters ein " << endl;
cin >> Alter;
cout << endl;

if (Alter<18) SummeUT +=21;
if ((Alter>=18) && (Alter<=30)) SummeUT +=18;
if ((Alter>30) && (Alter<=40)) SummeUT +=27;
if (Alter>40) SummeUT +=30;



}




} while (WeitereMA=='j');

cout << endl << "Die Summe der Urlaubstage betraegt:" << SummeUT << endl;



}






BTW. einen Zeilenspurng gibts mit " endl; " oder mit '\n'

p.s. schonmal '\a' kennengelernt? :lol:
 
Zuletzt bearbeitet:
Ja danke. Nur wie ist der Befehl das man von einer in die andere Zeile springt gemäß der Syntax in C++??
 
Ja danke. Nur wie ist der Befehl das man von einer in die andere Zeile springt gemäß der Syntax in C++??

Hm meinst du etwa:

cout << "Jetzt kommt ein Zeilensprung" << endl;

je nachdem wieviele Zeilen du freilassen willst, soviele endl schreibst du am schluss hin:

für eine Leerzeile machst du dann halt zwei endl: << endl, endl;
 
Du hast mich missverstanden. (beim urschleim brauchen wir nicht anfangen) Ihc meinte nicht eine Zeile weiter gehen, sondern von einer beliebigen Zeile in ein ander SPRINGEN.

z.B.
//Bedingung
printf("Enter zum beenden");
//jetzt kommt die nächste bedingung, wenn die erste aber nicht erfüllt ist soll er das vollgende (Die nächste Bedingung) ÜBERSRINGEN)

Also verstechst du mich???
 
hm also eine normale schleife meinst du?
ehrlichgesagt kommt es jetzt an MEINE Grenzen. Mach C++ ja erst sein September nur zwei mal in der Woche.

Aber es müsste doch so gehen:

// DATOK.cpp : Definiert den Einsprungpunkt für die Konsolenanwendung.
//

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

using namespace std;

void main()
{
cout << "Das Programm zur Ueberpruefung von Datumangaben loppt!" << endl;

int Tag, Monat, Jahr, Maxtag, Datok;

cout << "Gib mal nen Tag ein: ";
cin >> Tag;
cout << endl << endl;

cout << "So und nu nen Monat plz!: ";
cin >> Monat;
cout << endl << endl;

cout << "Her mit dem Jahr!: ";
cin >> Jahr;
cout << endl << endl;


Datok=0;

if (Jahr>=0) {
if ((Monat>=1) && (Monat<=12)) {
if (Tag>=1) {
Maxtag=31;
if ( (Monat==4) || (Monat==6) || (Monat==9) || (Monat==11) )
Maxtag=30;
else {
if (Monat==2) {
if ((Jahr%4)==0) Maxtag=29; //Schaltjahr?
else Maxtag=28;
}

}
if (Tag<=Maxtag) ; //leere Anweisung
else Datok=1;
}
else Datok=1;
}
else Datok=1;
}
else Datok=1;



if (Datok==0) cout << "Geil es passt!" << endl;
else cout << "NeNe ueberleg nochmal was du da eingegeben hast! Selbstzerstörung eingeleitet........." << endl;
}




Diese if/else Schleifen willst du doch oder? Sonst weis ich nicht weiter sry

Verdammt die Formatierungen und einrückungen funktionieren hier nicht. Wenn du willst, lade ich dir das Projekt nochmal hoch.
 
Zuletzt bearbeitet:
Du hast mich missverstanden. (beim urschleim brauchen wir nicht anfangen) Ihc meinte nicht eine Zeile weiter gehen, sondern von einer beliebigen Zeile in ein ander SPRINGEN.

z.B.
//Bedingung
printf("Enter zum beenden");
//jetzt kommt die nächste bedingung, wenn die erste aber nicht erfüllt ist soll er das vollgende (Die nächste Bedingung) ÜBERSRINGEN)

Also verstechst du mich???

//erste bedingung
if()
{
if()
}
else
{}

einfach ineinander legen, somit macht er die zweite gar nicth wenn die erste erfüllt ist..

oder hab ich dich falsch verstanden?

mfg
laessig

edit: wobei ich übersehen hab dass lks das selbe in seinem prog eingebaut hat
 
Zuletzt bearbeitet:
Ja das wäre nett, aber mit if und else ist das schon mal nicht schlecht. So sagen wir:

if(Kontonummer == 5)
{
printf("Richtig");
}
else
{
printf("noe") \\ so jetzt soll er zur letzten Zeile von keine 5 eingetipt wurde
}

else if(Jetzt die nächste Bedingung.....
..............
...........usw.







Edit: ja das is soweit schon richtig nur sagen wir mal die erste bedingung ist NICHT erfüllt, dann soll er das Programm beenden und nicht die zweite Bedingung bearbeitet. Und wenn die erste Bedingung richtig beantwortet wurde soll er mit der Zweiten Abfrage (Bedingung) weiter machen.
 
Zuletzt bearbeitet:
Ja das wäre nett, aber mit if und else ist das schon mal nicht schlecht. So sagen wir:

if(Kontonummer == 5)
{
printf("Richtig");
}
else
{
printf("noe") \\ so jetzt soll er zur letzten Zeile von keine 5 eingetipt wurde
}

else if(Jetzt die nächste Bedingung.....
..............
...........usw.

braucht du auch nicht, du kannst das anders lösen

if(Kontonummer == 5)
{
printf("Richtig");
}
else
{
printf("noe") \\ so jetzt soll er zur letzten Zeile von keine 5 eingetipt wurde

if(Jetzt die nächste Bedingung.....
..............
...........usw.
}

siehst du... dein else kann das ganze restliche programm beinhalten und so kannst du den gesamten ablauf steuern... der braucht da nicht springen

wenn unbedingt springen willst gibts immer noch goto, nur das MIT GROSSER VORSICHT ZU GENIESSEN, denn man verliert leicht den überblick. ich programmier schon über 9 jahre und habe noch nie ein goto gebraucht, weils immer anders geht.
 
Ja nurwenn ich das nur mit else belege macht er wenn ich enter drücke mit der zweiten bedingung weiter also ist es jacke wie hose was ich für z.b. eine Kontonummer eingebe ich komm immer zur zweiten Bedingung als hätte ich die richtige nummer eingegeben.
 
Poste mal deinen ganzen Code bitte - ich kann mir darunter noch nichts wirkliches vorstellen. Aja eine bitte hab ich noch: "Springen" ist fast der falsche ausdruck - es gibt zwar einen goto Befehl in C (bei c++ bin ich mir nicht sicher), aber sinnvoll ist der nicht wirklich.
 
Das prob is ich bin nichtan meinem PC ich könnte den höstens heute abend oder morgen posten. Nur es gibt doch etwas allgemeines (einen Befehl der auslöst das das Programm beendet werden soll)???
 
Ja nurwenn ich das nur mit else belege macht er wenn ich enter drücke mit der zweiten bedingung weiter also ist es jacke wie hose was ich für z.b. eine Kontonummer eingebe ich komm immer zur zweiten Bedingung als hätte ich die richtige nummer eingegeben.

das stimmt doch gar nicht, schau mal genauer hin... du kommst nicht zur zweiten bedingung weil die im else ist und ins else kommst du nicth rein wenn die erste bedingung true (also in deinem fall kontonummer falsch) war.

außerdem wenn du dir sicher sein willst, dass das programm beendet wird kannst ja nach der ersten bedingung die ja alles entscheiden, nach dem cout oder prinft ein exit(0) machen und damit hats sich.

du mußt bedenken es ist ein unterschied zw.

edit:
if ()
{}
else if()
{}

und

if ()
else
{
if()
}
 
Zuletzt bearbeitet:
Jo hab ich soweit verstanden. Und das man von eine Zeile eine andere springt is nih so doll ja?? Naja also: exit(0);
OK danke. ich hab aber noch was und zwar wie kann ich das ganze wieder von vorne anfangen lassen (Das er wenn am ende eine auswahl kommt z.B. 1drücken zum Neustarten und 2 zum beenden, wiekann ihc es schreiben wenn jemand die 1 drückt das er wieder sagen iwr mal bi der abfrage der Kontonummer steht!???)


Edit: Achso meint ihr das ich kann also immer mit if dann else arbeiten und das else beinhaltet den (Negativen) rest teil.
 
Zuletzt bearbeitet:
Du könntest dein Programm auch in Funktionen aufteilen, dann wird das etwas übersichtlicher, zu dem Problem mit der Eingabe: du könntest das ganze in einer Schleife ablaufen lassen und als Abbruchbedingung nimmst du dann Eingabe != 1;
 
#include <stdio.h>
#include <conio.h>


main()
{
//Deklaration lokaler Variablen (Speicherplatz-Reservirung)

float fVerheiratet = 1, fLedig = 2;
int nZugCode, nAnzKinder;
float fSparBetrag, fPraemie, fFamStand;

//Eingabe des Zugangscodes
printf("Zugangscode: ");
scanf("%d", &nZugCode);
flushall();
if(nZugCode == 12345) //Zuweisungen werden mit "==" bestimmt
{
printf("Zugangscode richtig!\n\n");
}
else
{
printf("Zugangscode falsch! Geb auf du Hacker!"); //Zugangscode eingabe abgeschlossen
getchar();
exit(0);
}

//Eingabe Familienstand
printf("Druecke 1 fuer verheiratet und die 2 fuer den ledigen Familienstand\n\n");
printf("Familienstand: ");
scanf("%f", &fVerheiratet);
scanf("%f", &fLedig);
flushall();

if(fFamStand == 1)
{
printf("Verheiratet");
}
else if(fFamStand == 2)
{
printf("Ledig");
}






printf("Wenn nötig neustarten! Einfach 8 zum neustarten und die 9 zum beenden"
scanf("%d", &nNeu);
scanf("%d", &nEnde);
flushall();

if("%d" == 8)
{
printf("Neustart");
}
else if("%d" == 9)
{
printf("Ende");
}


getchar();
clrscr();
}



Also das ist nicht die Finale version den rest hab ich nicht hier aber ich hoffe das du weißt was ich will
 
öhm hast du den Quelltext da mal compiliert?
Hinzugefügter Post:
#include <stdio.h>
#include <conio.h>


main()
{
//Deklaration lokaler Variablen (Speicherplatz-Reservirung)

float fVerheiratet = 1, fLedig = 2;
int nZugCode, nAnzKinder,nEingabe=8;
float fSparBetrag, fPraemie, fFamStand;

//Eingabe des Zugangscodes
printf("Zugangscode: ");
scanf("%d", &nZugCode);
flushall();
if(nZugCode == 12345) //Zuweisungen werden mit "==" bestimmt
{
printf("Zugangscode richtig!\n\n");
}
else
{
printf("Zugangscode falsch! Geb auf du Hacker!"); //Zugangscode eingabe abgeschlossen
getchar();
exit(0);
}
while(nEingabe==8)
{
//Eingabe Familienstand
printf("Druecke 1 fuer verheiratet und die 2 fuer den ledigen Familienstand\n\n");
printf("Familienstand: ");
scanf("%f", &fFamStand);
flushall();

if(fFamStand == 1)
{
printf("Verheiratet");
}

else if(fFamStand == 2)
{
printf("Ledig");
}





printf("Wenn nötig neustarten! Einfach 8 zum neustarten und die 9 zum beenden"
scanf("%i", &nEingabe);
flushall();

if(nEingabe == 8)
{
printf("Neustart");
}

else if(nEingabe == 9)
{
printf("Ende");
}
}

getchar();
clrscr();
}

müsste so funktionieren
 
Zuletzt bearbeitet:
Denn jetzt nicht ich glaub so wie der da ist geht der auch nicht ich meine ja nur um dir das mal zu zeigen (Den vollständigen Quellcode hab ich nich zur hand). Also kannst du nun was damit anfangen??



edit:


Was bedeutet : while(); und wo hast du jetzt geschrieben das er z.b. als die letzte auswahl kommt neustartet?? (zum anfang springt)???
 
Zuletzt bearbeitet:
Seihe über dir, ich habe einfach eine While Schleife eingefügt, solange die Eingabe 8 ist wird die Schleife wiederholt
 
Also eine while Schleife ist wie der Name schon sagt eine Schleife, dies Schleife wird solange durchlaufen bis das Ergebnis in while(Ergebnis==1) nicht mehr zutrifft,
zb:
while(eingabe==1)
{
scanf("%i",eingabe)
}

solange ich jetzt die 1 eingebe wird die schleife immer wieder neugestartet

Lernst du C++ in der Schule oder versuchst du dir das selber bei zu bringen?
 
Zuletzt bearbeitet:
Beides aber mein Lerer is nich wirklich ne Leuchte. Wieso hast du noch weitere tipps für mich???
 
Was heißt Tipps ;) ich Programmier seit 5 Jahren C und C++ wenn du was wissen willst kannste mich ruhig fragen auch wenn ich zugeben muss dass ich seit gut nem 3/4 Jahr nix mehr in C gemacht hab, weil wir jetzt java benutzen :wall:
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh