ERLEDIGT
NEIN
NEIN
ANTWORTEN
9
9
ZUGRIFFE
533
533
EMPFEHLEN
-
05.10.05 15:04 #1
- Registriert seit
- Sep 2005
- Beiträge
- 37
also ich bin noch Schüler.
naja aufjedenfall wollte ich mir ein Programm zum Vokabeln abfragen programmieren.
aber da kommen ein paar Fehler.
ich benutze dev c++
da kommen golgende fehler.Code :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
#include <iostream.h> #include <time.h> #include <stdlib.h> /* Zufallszahl zwischen min und max generieren */ int irand( int min, int max) { double r = max - min + 1; return min + (int)(r * rand()/(RAND_MAX+1.0)); } //------------------MAIN:------------------------------------- int main() { srand( (unsigned)time( NULL ) ); int zufallszahl,a,b,c; for(int f=0;f<10;) { cout << "geben sie die vokabel ein" << endl; f++; char vokabel[20,30]; cin >> vokabel[f]; cout << "und noch bitte die dt.bedeutung" << endl; f++; cin >> vokabel[f]; } for(int j=0;j<10;) { a = irand(1,10); b = irand(1,10); c = irand(1,10); zufallszahl = irand(1,10); c = c*2; j++; char deutsch[50]; cout << "sagen sie die dt. bedeutung von" << vokabel[c] << ":" << endl; cin >> deutsch; c++; if (deutsch == vokabel[c]) cout << "das ist richtig" << endl; else cout << " das ist falsch " << endl; } cout << " ende.... ©DerSensenmann " << endl; system("pause"); return 0; }
25 C:\Dev-Cpp\vokabel.cpp expected primary-expression before "char"
25 C:\Dev-Cpp\vokabel.cpp expected `;' before "char"
26 C:\Dev-Cpp\vokabel.cpp `vokabel' undeclared (first use this function)
-
05.10.05 15:45 #2
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
Hi.
Erstmal verwendest du keine Vektoren (C++ Header <vector>) sondern ganz normale Arrays.
Eine solche Syntax gibt es nicht. Ein mehrdimensionales Array definiert man folgendermaßen:
Zitat von DerSensenmann
D.h. du hast dann ein Array von 20 Elementen von C-Strings mit 30 Zeichen (wobei du natürlich aber nur 29 speichern kannst, denn normalerweise kommt ja noch die terminierende \0 dazu).Code :1
char vokabel[20][30];
Außerdem darfst du das vokabel Array nicht innerhalb der for-Schleife definieren wenn du es auch außerhalb der for-Schleife benutzen willst - so wie es jetzt ist, gibt es das Array auch wirklich nur innerhalb der ersten for-Schleife; außerhalb ist es nicht zugreifbar.
Code :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
[b]#include <iostream>[/b] // Standard C++ Header haben keine .h Endung #include <ctime> // Standard Header von C sind in C++ verfügbar mit #include <cstdlib> // Präfix "c" und ohne .h Endung. #include <cstring> using namespace std; // Objekte und Funktionen der Standard C++ Bibliothek // (string, cout, endl etc.) sind im Namensraum "std" definiert. /* Zufallszahl zwischen min und max generieren */ int irand( int min, int max) { double r = max - min + 1; return min + (int)(r * rand()/(RAND_MAX+1.0)); } //------------------MAIN:------------------------------------- int main() { srand( (unsigned)time( NULL ) ); int zufallszahl,a,b,c; char vokabel[20][30]; for(int f=0;f<10;++f) { cout << "geben sie die vokabel ein" << endl; cin >> vokabel[f]; cout << "und noch bitte die dt.bedeutung" << endl; cin >> vokabel[f+10]; } for(int j=0;j<10;++j) { a = irand(1,10); b = irand(1,10); c = irand(1,10); zufallszahl = irand(1,10); char deutsch[50]; cout << "sagen sie die dt. bedeutung von " << vokabel[c] << ":" << endl; cin >> deutsch; if (strcmp (deutsch, vokabel[c+10]) == 0) cout << "das ist richtig" << endl; else cout << " das ist falsch " << endl; } cout << " ende.... ©DerSensenmann " << endl; system("pause"); return 0; }
/edit: hab mal gleich noch die Sache mit den Strings berichtigt, da hat eViLiSSiMo natürlich vollkommen Recht. Ist mir gar nicht aufgefallen
Geändert von deepthroat (05.10.05 um 16:20 Uhr)
If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
05.10.05 15:50 #3
- Registriert seit
- Sep 2004
- Beiträge
- 4
sollte wohl besser:Code :1
return min + (int)(r * rand()/(RAND_MAX+1.0));
seinCode :1
return min + rand() % ((max - min) + 1)
Hier vergleichst du 2 Adressen und keine 2 Strings
sovergleicht man stringsCode :1
if (deutsch == vokabel[c+10])
oder du benutzt gleich std::string das ist eine Klasse die sich um alles kümmert und sicherer istCode :1
if (strcmp(deutsch,vokabel[c+10]) == 0)
Die kann man dann auch per == vergleichen
-
05.10.05 16:03 #4
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
Hi.
Nein, sollte es nicht! Aus dem einfachen Grund das bei der 2ten Methode niederwertige Bits benutzt werden und da keine wirklich zufällig erscheinenden Zahlen generiert werden.
Zitat von eViLiSSiMo
/edit: siehe http://cplus.kompf.de/artikel/random.htmlGeändert von deepthroat (05.10.05 um 16:13 Uhr)
If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
05.10.05 17:27 #5
- Registriert seit
- Sep 2005
- Beiträge
- 37
die funktion wie man zufallszahlen generiert hab ich von hier.
weil so wie es in nem buchsteht.
durch time.h und stdlib.h
randomize()
und rand()
ging es nicht.
naja vielen dank.
kann geclosed werden
-
05.10.05 17:36 #6
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
Die Funktion ist ja auch gut so.
Zitat von DerSensenmann
Das mußt du schon selber machen. Einfach das Thema als erledigt markieren.
Zitat von DerSensenmann
Und bitte achte etwas auf die Groß- und Kleinschreibung.If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
05.10.05 18:00 #7
- Registriert seit
- Sep 2005
- Beiträge
- 37
ohh
sollte wohl besser doch net geclosed werden.
mit Groß- und Kleinschriebnug werd ich drauf achten.
also bei dem Code wirde die Vokabel falsch herum abgefragt.
also zB.
geben sie die Vokabel ein
laudare
die dt. Bedeutung
loben.
...
und dann
geben sie die dt Bedeutung von loben an......
nunja ich weis nicht woran das liegt.
weil eigentlich sollte ja in der Schleife ab 1 angefangen werden und nicht ab 11.
wäre net wenn ihr dazu eine Lösung schreiben könntet.
achja des mit dem erledigt makieren wusste ich net( bin ja neu hier )
MFG
-
05.10.05 22:24 #8
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
Also bei mir funktioniert's. Schau dir doch nochmal meinen Code an, da hast du irgendwo was falsch (evtl. das c = c*2 noch drin?).
/edit: Hab's grad nochmal getestet. Es funktioniert doch nicht (immer), da du ja auch Zufallszahlen zwischen 1 und 10 generierst wo du doch Zahlen von 0 bis 9 benötigst.
PS: Warum generierst du eigentlich soviele Zufallszahlen in der Schleife?Geändert von deepthroat (05.10.05 um 22:41 Uhr)
If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
06.10.05 17:07 #9
- Registriert seit
- Sep 2005
- Beiträge
- 37
das hat damit zu tun, dass die erste Zahl immer die Gleiche ist.
und dann hab ich mir überlegt , dass die Dritte oder Vierte an zufälligsten ist....
-
06.10.05 17:16 #10
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
Also die erste generierte Zufallszahl dürfte nicht immer die gleiche sein da du ja den Random Seed abhängig von der Zeit verstellt hast. Es ist nur so das wenn du ein Programm kurz hintereinander (wenn noch keine ganze Sekunde vergangen ist) startest, das dann die (Pseudo-)Zufallszahlen exakt die gleichen sind.
Dennoch brauchst natürlich aber auch nicht soviele Variablen. Du könntest einmal eine Variable mehrfach benutzen oder du benutzt den Rückgabewert der Funktion irand() einfach nicht.Code :1
irand(0,9); irand(0,9); c = irand (0,9); c = irand (0,9);
Aber sonst ist der Zufallswert (wenn du srand so benutzt) wirklich jedesmal verschieden (außer du übergibts der srand Funktion jedesmal den gleichen Wert was aber nur in einem Zeitintervall von max. 1 Sekunde der Fall sein kann).If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
Ähnliche Themen
-
Welche Programmiersprache kann mit SVG-Dateien umgehen?
Von Alice im Forum Coders TalkAntworten: 31Letzter Beitrag: 31.12.10, 18:40 -
"Die Seite kann nicht angezeigt werden" umgehen?
Von deb_ugger im Forum Hosting & WebserverAntworten: 0Letzter Beitrag: 30.03.05, 15:54 -
Wie kann ich mit der Kamera umgehen
Von anime im Forum 3D Studio MaxAntworten: 13Letzter Beitrag: 10.08.04, 18:50 -
wie kann man OnChangeEdit() umgehen
Von Reticent im Forum VisualStudio & MFCAntworten: 1Letzter Beitrag: 02.04.04, 14:45 -
Suche jemand der mit 3DSM & Co. umgehen kann
Von soul710 im Forum 3D Studio MaxAntworten: 15Letzter Beitrag: 09.02.02, 14:42





Zitieren
Login






