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

12.08.2007, 16:19

Wörter mit Datenbank generieren

Dieses Programm soll aus einer Datenbank(Die das komplette ABC enthält) ein Wort generieren, wo jeder zweiter Buchstabe ein Vokal ist. Bei mir haben die Konstonanten komische Zeichen, und die Vokale sind auch nicht mehr Vokale :?

die datenbank:

konfig.txt

Quellcode

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
a
e
i
o
u
b
c
d
f
g
h
j
k
l
m
n
p
q
r
s
t
v
w
x
y
z



Das Programm:

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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
#include <iostream>
#include <string>
#include <ctime>
#include <cstdlib>
#include <cstdio>
#include <fstream>

using namespace std;

void generator ()
{

foobar:
    
    string dateiname=("konfig.txt");
    ifstream dat_ein;

    dat_ein.open(dateiname.c_str(), ios_base::in);

    if(!dat_ein)                                          //Hier sollte sich das Proggam nach Tastendruck schliessen,

                                                          //Wenn die Datenbank nicht existiert

                                                          //Wie geht das aber??

    {
        system ("cls");

        cout << "Fehler beim Aufruf von 'konfig.txt.'! \a " <<endl;

        fflush (stdin);
        getchar();

    
    }

    char V[6];
    char K[6];

    int datensatz;
    int loop;

    for (int i = 1; i <= 6; ++i)               //Generator für die Vokale

    {
        srand( (unsigned) time (NULL) );
        datensatz = rand()%5+1;

        loop = datensatz;

        while(loop>=1)
        {

            dat_ein>>V[i];

            -- loop;

        }
    }



    for ( i = 7; i <= 12; ++i)                     //Generator für die Konsonanten

    {
        srand( (unsigned) time (NULL) );
        datensatz = rand()%26+6;

        loop = datensatz;

        while(loop>=1)
        {

            dat_ein>>K[i];

            -- loop;

        }
    }


    cout<<endl<<endl<<"Erstelltes Passwort: ";
    cout<<K[1]<<V[1]<<K[2]<<V[2]<<K[3]<<V[3]<<K[4]<<V[4]<<K[5]<<V[5]<<K[6]<<V[6];


loop:

    cout<<endl<<endl<<"(N)eues Passwort generieren"<<endl;
    cout<<"(B)eenden"<<endl;

    char c;
    
    cin>>c;

    if ( c=='N' || c=='n' )
    {
        goto foobar;
    }

    if ( c=='B' || c=='b' )
    {
        cout<<"ENDE"<<endl;             //Hier weiss ich nicht, wie ich das Programm aus der Funktion, beenden kann...

    }
    
    if( c!='B' || c!='b' || c!='N' || c!='n' )
    {
        goto loop;
    }

}

int main ()
{

foobar:

    system ("cls");

    cout<<"Willkommen bei Passgen! Der Passwortgenerator des Jahrhunderts!"<<endl;
    cout<<" Made by Alexander Stepanov!"<<endl;
    cout<<"_______________________________________________________________"<<endl;
    cout<<endl<<endl<<endl<<endl<<endl<<endl;


    cout<<"(P)asswort generieren"<<endl;
    cout<<"(A)nleitung"<<endl;

    char a;

    cin>>a;

    if ( a=='a' || a=='A' )
    {

loop:
        char w;

        cout<<endl<<endl<<endl;
        cout<<"Anleitung: "<<endl;
        cout<<" Dieses Programm generiert Passwörter die "<<endl;
        cout<<" 12 Zeichen lang sind. Die Passwörter kann "<<endl;
        cout<<" man sich sehr leicht merken. "<<endl;
        cout<<" Um ein Passwort zugenerieren druecken Sie "<<endl;
        cout<<" auf 'P' beim Menue, danach wird das "<<endl;
        cout<<" Passwort generiert."<<endl;
        cout<<endl<<endl<<"(Z)urueck"<<endl;

        cin>>w;

        if ( w!='Z' || w!='z' )
            
            goto foobar;

        else

            goto loop;
    }


    else if ( a=='P' || a=='p' )
    {
        generator();
    }


    else if ( a=='B' || a=='b' )
    {
        return -1;
    }


    else
    {
        goto foobar;
    }


    return 0;
}



Danke im voraus und viel spass beim Korrigieren :P

ChrisJ

Alter Hase

Beiträge: 487

Wohnort: Schweich

Beruf: Schüler

  • Private Nachricht senden

2

12.08.2007, 16:26

yeah, endlich mal jemand der sich traut goto zu benutzen :)

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

3

12.08.2007, 16:32

David_pb ist schuld: https://www.spieleprogrammierer.de/phpBB2/viewtopic.php?t=8085 :D

4

12.08.2007, 17:12

goto ist genial man!!!

was ist jetzt eig. mit meinem prob. das ich so komische zeichen generiert bekomme??

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

5

12.08.2007, 17:31

goto hell man 8)

und Prog von irgendwo aus schließen: exit(int exitcode);

6

12.08.2007, 20:32

und was ist jetzt mit meine Konsonante?? da kommt immer sowas raus

sieht nicht ganz so aus aber fast: |}i|}b|}f|}j|}m|}q

es hätten aber 12 Buchstaben sein sollen.. keine komischen zeichen....

so ziemlicher müll und was die konsonanten in der vokal gruppe machen weiss ich auch nicht :(

und exit(int exitcode); geht nicht... irgendeine klammer vor int fehlt oder so :? (sagt er compiler auf alle fälle)

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

7

12.08.2007, 21:03

ich hab dir auch nicht die Verwendung von exit sondern eine mögliche Funktionsdeklaration gezeigt - das int solltest du lieber weglassen bei der Nutzung der Funktion :roll:

Zu deinen anderen Problemen:
ich WILL mich einfach NICHT in einen Code reindenken, der goto verwendet - also tu dir selbst einen Gefallen und komm ohne den Scheiß aus!

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

8

13.08.2007, 09:55

Was hab ich da nur wieder angerichtet! :badgrin: Es ist tatsächlich kein besonders schöner Stil goto zu verwenden! :) Und es gibt immer eine schönere Alternative!
@D13_Dreinig

9

13.08.2007, 14:35

Jo liegt daran das AEIOU nicht gleich 1, 2, 3, 4, 5 sind ;) Muss den ASCII-Wert davon nehmen ;)
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

10

13.08.2007, 14:39

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void generate_password(const std::string& config_file, std::size_t len, std::string& pass)
{
    pass = "";
    std::ifstream file_stream(config_file.c_str(), std::ios::in);
    if (!file_stream)
        throw std::runtime_error(std::string("File does not exist! => ") + config_file);

    std::vector<char> static_values;
    char val = 0;
    while ((file_stream >> val))
        static_values.push_back(val);

    for (std::size_t i = 0; i < len; ++i)
        pass[i] = (i % 2 ? static_values[i % static_values.size()] : std::rand() % 25 + 65 /* 65 - 90 == Großbuchstaben! */);
}
... sieht doch schon VIEL besser aus!
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

Werbeanzeige