Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

06.08.2007, 15:10

if - schleifen und return -xy

ich will ein menü erstellen, das aus 2 optionene besteht. 1. option P und 2. Anleitung . Wenn ich a drück komm ich zu anleitung. dann muss ich auf w drücken um wieder zu den ersten 2 optionen zu kommen. leider klappt es da bei mir noch nicht richtig... ich hab return -1 und return -2 in meinen schleifen verwendet. da ist auch der fehler nur, weiss ich nicht was ich da anstatt return -xy reinhauen soll...
hier der code:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include<iostream>
#include<fstream>
#include<string>
#include<ctime>
#include<cstdlib>

using namespace std;



int main()
{

    cout << " Willkommen bei xy! Der yx der Jahrhunderst!" << endl;
    cout << " By xy" <<endl;
    cout <<" _________________________________________________________________\a"<<endl;
    cout << endl << endl << endl;
    
    cout << " (P)      (A)leitung"<< endl;
    
    char a;
    
    cin >> a;
    
    if( a == 'a')
    {
        cout<<endl<<endl;
        cout<< " Anleitung: " << endl;
        cout<< " Um **************** druecken Sie am Anfang 'P'," << endl;
        cout<< " danach werden Sie aufgefordert," << endl;
        cout<< " die Laenge des ************ einzugeben." << endl;
        cout<< " Sie koennen zwischen 5 bis 10 Zeichen auswaehlen." << endl;
        cout<<endl<<" (W)eiter "<< endl;
        
        char w;
        
        cin>>w;
        if( w != w )
        {
            return -1;
        }
        
        if( w == w )
        {
            return -2;
        }
    }
    
    if( a == 'p' )
    {
        cout << "In  bearbeitung"<<endl;
    }
    
    return 0;
}

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

06.08.2007, 15:22

Re: if - schleifen und return -xy

Zitat von »"DEATH"«

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
        if( w != w )
        {
            return -1;
        }
        
        if( w == w )
        {
            return -2;
        }

Aua, das tut ja weh!
Und was ist eine if-Schleife?

3

06.08.2007, 15:25

Und die Rechtschreibung:

Zitat

cout << " Willkommen bei xy! Der yx der Jahrhunderst!" << endl;
...

Dein Programm hat 0 sens ...
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

4

06.08.2007, 15:40

rechtschreibung: scheiss drauf!!!!

sinn: ich will erstallmals das menü richtig haben.. das eigentliche programm will ich nicht verraten deshalb überall xy und **** !!!!

was soll ich anstatt return -1 und co. damit das programm nach der anleitung, d.h. wenn ich auch w gedrückt habe, wieder 1. schritt zurück springt?? also das wieder da steht (P) (A)nleitung ???

@david

die schleife sollte man so verstehen:
wenn char w nicht gleich w ist soll man 1 schritt zurück gehen( also wieder zur option anleitung wo man auf (W)eiter drücken soll)
wenn char w gleich w ist soll er 2 schritte zurück gehen, d.h. es soll wieder dass menü kommen wo man zwischen p und anleitung wählen kann...

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

5

06.08.2007, 15:51

Wie soll denn w ungleich w sein?
Und was eine if-Schleife sein soll, verstehe ich immer noch nicht.

Wenn du verrätst, was für ein cooles Programm das werden soll, dann sage ich dir, was an deinem Code falsch ist. Allerdings kann es dann sein, dass ich die Idee klaue. Überleg es dir ...

Black-Panther

Alter Hase

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

6

06.08.2007, 15:54

lern bitte erst den Unterschied zwischen einer Variable und einen Wert kennen!
Ich glaub so wärs richtiger:

C-/C++-Quelltext

1
if(w != 'w') return -1; else return -2;


(Anmerkung: Nur auf deine If-Bedingung bezogen, nicht auf das Programm! Ob das dann damit funktioniert, will ich nicht behaupten (habs mir nicht nähers angeschaut!))

EDIT:
Außerdem frage ich mich wie dein Programm weiterlaufen soll, wenn du es mit return x; in der main verlässt??
Lern bitte erst anständig Programmieren! Dann ersparst du dir sehr viel Ärger und Scherereien!
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

Faule Socke

Community-Fossil

Beiträge: 1 915

Wohnort: Schreibtischstuhl

  • Private Nachricht senden

7

06.08.2007, 15:58

ich weiss, ich mache mich unbeliebt, wenn ich es dir vorcode, aber ich tus trotzdem(ich hab damals auch dumme fragen gestellt, die keinen sinn haben):

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
int main()
{
// Vars

char c;
bool b = true;

// Hauptschleife... hier wird das menu dargestellt.....

while(b)
{
// Als erstes dem bildschirm leeren... system sollte man aber eig. nicht verwenden...

system("cls");

// Menu...

cout << "(B)eenden\n";
cout << "(A)nleitung\n";
cin >> c;

// If ist nicht zu empfehlen, nehme hier besser ein switch

switch(c)
{
case 'b':
case 'B':
// Beenden...

return 0;
break;

case 'a':
case 'A':
// Anleitung...

// Hier die anleitung ausgeben... dannach auf tastendruch warten...

//...


while(true)
{
cin >> c;
if(c == 'w')
break;
}
break;

default:
// Ungültige eingabe.....

break;
}
}

// usw... den rest solltest du schon selber können....



Das erste und das letzte break kannst du rein theoretisch weglassen, ich machs aber trotzdem.

Eine Version mit if-Anweisungen(Es sind KEINE "if-Schleifen", das wort alleine klingt schon lächerlich) hab ich absichtlich nicht gecodet, da du selber ja auch noch was dabei lernen musst.

Falls du noch kein (gescheites) c++ buch hast, schau mal hier im forum, es wird ja auch unter anderem c++ in 21 tagen empfohlen, welches auch gratis ist. ich habs mal angelesen, und ich finde es gut. allerdings ist es eigentlich unmöglich es in 21 tagen durchzulesen und auch noch alles zu verstehen.

Wenn du den obigen quellcode vervollständigt hast, sollte er sich auch kompilieren lassen.

Socke

PS: Nicht depri sein, wenn nicht immer gleich alles so klappt, wie du willst.
Meine mutter hat immer gesagt, "übung macht dem meister" und ich muss sagen, sie hatte recht.

So genug philosophiert.

EDIT
Hatte angefangen das zu posten, bevor david und plack-panther gepostet haben.

Socke

8

06.08.2007, 16:07

ok der quelltext ist so ziemlich verstänlich :)

und für die anderen die es immer noch nit geschnallt haben hier der originale quellcode (hab da noch paar probs. mit funktion und co. aber damit ihr mein prob besser verstehen könnt):

beim kompilieren funktioniert das ganze nicht weil ich noch keine datenbank und co habe.... das hier ist nur die jetztige baustelle!!

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#include<iostream>
#include<fstream>
#include<string>
#include<ctime>
#include<csrdlib>

using namespace std;

void generator();

int main()
{
    ifstream dat_ein;
    
    string dateiname = ("daten.txt");
    
    dat_ein.open(dateiname.c_str(), ios_base::in);
    
    if(!dat_ein)
    {
        cout << "Fehler bei Ausfuehren der Datei!" << endl;
        
        return -1;
    }
    
    cout << " Willkommen bei Passgen! Der Passwortgenerator der Jahrhunderts!" << endl;
    cout << " ®© by Alexander Stepanov" <<endl;
    cout <<" _________________________________________________________________\a"<<endl;
    cout << endl << endl << endl;
    
    cout << " (P)asswort generieren      (A)leitung"<< endl;
    
    char a;
    
    cin >> a;
    
    if( a == 'a')
    {
        cout<<endl<<endl;
        cout<< " Anleitung: " << endl;
        cout<< " Um ein Passwort generieren drьcken Sie am Anfang 'P'," << endl;
        cout<< " danach werden Sie aufgefordert," << endl;
        cout<< " die Laenge des gewuenschten Passworts einzugeben." << endl;
        cout<< " Sie koennen zwischen 5 bis 10 Zeichen auswaehlen." << endl;
        cout<<endl<<" (W)eiter "<< enld;
        
        char w;
        
        cin>>w;
        if( w != w )                                         //!!!!!!!!!!!!!!!

        {
            return -1;
        }
        
        if( w == w )                                        //!!!!!!!!!!!!!!!

        {
            return -2;
        }
    }
    
    if( a == 'p' )
    {
        generator ();
    }
    
    return 0;
}

void generator ()
{
    cout << " In BEARBEITUNG  xDDDDD" ;
    return 0;
}

Faule Socke

Community-Fossil

Beiträge: 1 915

Wohnort: Schreibtischstuhl

  • Private Nachricht senden

9

06.08.2007, 16:20

wenn du es net verstehen willst, dann kann ich auch nix dranne ändern.

Und wenn du denkst, dass du mit der prüfung w != w was erreichen kannst, dann überleg doch mal logisch, wie das in der realität ist. (Nimm dir den satzt mit den werten und variablen genau vor).


PS: Sorry david, dass ich dir jetzt sozusagen vermasselt hab, ihm sein programm zu klauen, aber ich glaube, daran hast du sowieso keine interesse.


Socke

10

06.08.2007, 19:51

x_X

ich glaub ich weiss wo unser missverständniss liegt.... ich bin wirklich ein noob :cry:

es sollte nicht

C-/C++-Quelltext

1
2
3
4
5
 if( w != w )     // <--- so heisst es wenn char w nicht gleich char w ist dann ist .......

{                 // dann ist es ja auch völliger schwachsinn x_X

      cout << " wrong input" <<endl;
      return -1;
}


sondern

C-/C++-Quelltext

1
2
3
4
5
if( w != 'w' )     // wenn der char w nicht den wert 'w' hat dann...

{                 // falls sich der user vertippt haben sollte, soll die eingabe nochmals abgefragt werden...

       cout <<" wrong input" <<endl;
       return -1;
}


ich hab den fehler bei return -1; und co. gesucht nicht bei 'w' x_X

@Faule Socke:

was zum Teufel heisst 'den bildschirm leeren?? (siehe deinen quellcode unter while(b) der befehl system("cls"); ) Das Anwendungsfenster ist bei mir bei jedem programm immer schwarz... ausser ich hab was mit cout reingeschrieben... oder ist mit bildschirm leeren was völlig anderes gemeint???? :?:

Werbeanzeige