Quiz
-
Danke für die schnelle antwort
Was ist denn besser als
system("cls")
habe sonst nichts gefunden?
mfg
-
Schmoecki schrieb:
Danke für die schnelle antwort
Was ist denn besser als
system("cls")
habe sonst nichts gefunden?
mfg
Also imho am besten und Standard sind die Escape-Sequenzen.
cout << "\033[2J"; // Löscht den Bildschirm
Leider unterstützt win2k und xp diese nicht.
Ansonsten würde ich glaube ich zu clrscr() aus der conio.h greifen (kein Standard)
Caipi
-
beim schnell rübergucken ganz übersehen... globals sind unschön und rand()%9 liefert eine zahl von 0-8 und nicht von 0-9
und srand (time(NULL)); "darf" (sollte) nur einmal bei programmstart aufgerufen werden an sonsten initialisiert du ständig neu... ich glaub der nimmt minuten was dann vermutlich zur folge hat das dein programm ne minute immer die gleiche frage stellt und das nächste mal ne minute lang ne andere...
-
#include <iostream> #include <vector> #include <algorithm> using namespace std; //geeignete datenstrukturen sind was tolles. char const* fragen[][4]={{ "Wie hoch ist der Mount Everest?", "6355 m.ü.M", "8848 m.ü.M", "8743 m.ü.M", },{ "Wie heisst die Hauptstadt von Finnland?", "Turku", "Kuopio", "Helsinki", },{ "In welcher Einheit misst man die Schnelligkeit des Prozessors?", "Newton", "Kilometer pro Stunde", "Megahertz", },{ "Aus wieviel Prozent Stickstoff besteht die Luft?", "aus ca. 75 Prozent", "aus ca. 25 Prozent", "aus ca. 4 Prozent", },{ "Welches dieser Lieder schrieben nicht die Beatles?", "Let it be", "We will rock you", "Lucy in the sky with diamonds", },{ "Wie heisst die Hauptstadt des Kantons Appenzell Inerroden?", "Gais", "Appenzell", "Stans", },{ "Wann begann die Franzoesische Revolution?", "1789", "1798", "1768", },{ "Welches ist der hoechste Berg der Schweiz, der ganz in der Schweiz liegt?", "Gurten", "Matterhorn", "Dom", },{ "Welches ist der groesste See, der ganz in der Schweiz liegt?", "Vierwaldstaettersee", "Neuenburgersee", "Bodensee", }}; int main(){ srand(time(0));//statt NULL, ist moderner int const anzahlDerFragen=sizeof(fragen)/sizeof(fragen[0]);//damit man nur an einer stelle //fragen ändert int richtig=0; vector<int> plan;//plan, wann welche frage for(int i=0;i<anzahlDerFragen;++i) plan.push_back(i);//simpler plan: 1 2 3 4 random_shuffle(plan.begin(),plan.end());//nu isser durcheiander for(int i=0;i<anzahlDerFragen;++i){//den ganzen plan abarbeiten char const* (&frage)[4]=fragen[plan[i]];//natürlich gehts auch einfacher, aber heute nicht char const* antworten[]={frage[1],frage[2],frage[3]};//aua char const* richtigeAntwort=frage[1];//wird sich rächen random_shuffle(antworten,antworten+3);//war den preis nicht wert cout<<frage[0]<<'\n'; for(int j=0;j<3;++j) cout<<'['<<j<<']'<<' '<<antworten[j]<<'\n'; int eingabe; cin>>eingabe;//hier die rache. muss auf 0<=eingabe<3 testen //muss auch auf zahl testen if(antworten[i]==richtigeAntwort) ++richtig; } cout<<anzahlDerFragen-richtig<<" Fehler!"<<'\n'; }
-
@Volkard: Ich lese dich jetzt erst seit kurzem, aber ich wage zu behaupten: "Na Typisch!"
@All: Und das _wirklich_ erschreckende daran ist, daß er dafür wahrscheinlich 2½ Minuten gebraucht hat...
-
@volkard
warum ärgerst du dich eigentlich mit den char*'s rum statt std::string zu verwenden da es ja spätenstens nach std::random_shuffle ja c++ lastig wird?
aus langweile oder hat das einen guten grund den ich nicht sehe...
-
Ich hätts wohl eher so angefangen:
#include <algorithm> #include <iostream> static char const *const fragen[] = { "Wie hoch ist der Mount Everest?", "Wie heisst die Hauptstadt von Finnland?", "In welcher Einheit misst man die Schnelligkeit des Prozessors?", "Aus wieviel Prozent Stickstoff besteht die Luft?", "Welches dieser Lieder schrieben nicht die Beatles?", "Wie heisst die Hauptstadt des Kantons Appenzell Inerroden?", "Wann begann die Franzoesische Revolution?", "Welches ist der hoechste Berg der Schweiz, der ganz in der Schweiz liegt?", "Welches ist der groesste See, der ganz in der Schweiz liegt?" }; static char const *const antworten[][3] = { { "6355 m.ü.M", "8848 m.ü.M", "8743 m.ü.M", },{ "Turku", "Kuopio", "Helsinki", },{ "Newton", "Kilometer pro Stunde", "Megahertz", },{ "aus ca. 75 Prozent", "aus ca. 25 Prozent", "aus ca. 4 Prozent", },{ "Let it be", "We will rock you", "Lucy in the sky with diamonds", },{ "Gais", "Appenzell", "Stans", },{ "1789", "1798", "1768", },{ "Gurten", "Matterhorn", "Dom", },{ "Vierwaldstaettersee", "Neuenburgersee", "Bodensee", } }; static int const richtige_antworten[] = { 2, 3, 3, 1, 2, 2, 1, 3, 2 }; int main() { int arr[9] = { 0, 1, 2, 3, 4, 5, 6, 7, 8 }; int x, richtig = 0, falsch = 0; std::random_shuffle(arr, arr + 9); for(int i = 0; i < 9; ++i) { std::cout << fragen[arr[i]] << std::endl; for(int j = 0; j < 3; ++j) std::cout << j + 1 << ") " << antworten[arr[i]][j] << std::endl; std::cin >> x; if(x == richtige_antworten[arr[i]]) ++richtig; else ++falsch; } std::cout << "Richtig: " << richtig << std::endl << "Falsch: " << falsch << std::endl; }
-
Windalf schrieb:
@volkard
warum ärgerst du dich eigentlich mit den char*'s rum statt std::string zu verwenden da es ja spätenstens nach std::random_shuffle ja c++ lastig wird?
aus langweile oder hat das einen guten grund den ich nicht sehe...siehst du ein strlen, strcat, strcmp, einen op== auf strings oder irgendwas? soll ich statt cout<<"hello world"; leiber cout<<string("hello world"); machen?
ich hab mich nicht mit char* geärgert. ich hab nur char* benutzt, weil string absolut keinen vorteil hätte.
-
siehst du ein strlen, strcat, strcmp, einen op== auf strings oder irgendwas?
hey das war kein angriff nur ne Frage
schliesslich bin ich ja nicht der Informatikersoll ich statt cout<<"hello world"; leiber cout<<string("hello world"); machen?
äh nein ich dachte da eher ein an eine lookuptable von std::strings... (bzw von einer eigenen klasse Frage) ein Konstuktoraufruf an der stelle wäre ja nicht mehr nötig...
ich hab mich nicht mit char* geärgert. ich hab nur char* benutzt, weil string absolut keinen vorteil hätte
ich hatte da schon aus erweiterungsgründung an sowas gedacht wie ne menüverwaltung in der z.b. auch fragen hinzugefügt, abgepeichert geladen usw... werden können und dann deshalb eher an einen stl container aus std::strings gedacht...
-
Windalf schrieb:
ich hatte da schon aus erweiterungsgründung an sowas gedacht wie ne menüverwaltung in der z.b. auch fragen hinzugefügt, abgepeichert geladen usw... werden können und dann deshalb eher an einen stl container aus std::strings gedacht...
das ist ein guter grund. die zeilen hätte ich auch lieber in einer text-datei. hab nicht dran gedacht. da ist dann string viel besser als char*.
-
Danke für die vielen guten Tipps. Haben mir alle sehr geholfen
mfg Schmoecki