[C++] losowanie pytań bez powtórzeń
Ostatnio zmodyfikowano 2014-11-26 16:52
kwyl Temat założony przez niniejszego użytkownika |
[C++] losowanie pytań bez powtórzeń » 2014-11-26 16:36:14 Witam, Męczę się z programem, który "powinien" (taki był zamiar) losować pytania z puli switch case bez powtórzeń. Niestety, aktualnie to wygląda tak, że wylosowane pytanie powtarza się 10 razy, nie zmieniając się na inne. Mielibyście pomysł, jak to poprawić? #include <cstdlib> #include <iostream> #include <conio.h> #include <stdlib.h> #include <windows.h> #include <fstream> #include <time.h>
using namespace std;
string NAZWA; int menu, suma, pytania; char odp1, odp2, odp3, odp4, odp5, odp6, odp7, odp8, odp9, odp10, ilebylo = 9, ile_pytan = 9; bool czybylo; int * wylosowane = new int[ ile_pytan + 1 ];
int main() { cout << "Witaj w QUIZIE. Prosze podac swoje nazwisko: "; char NAZWA[ 20 ]; cin.getline( NAZWA, 20 ); system( "cls" ); cout << "Witaj " << NAZWA << ", kliknij dowolny przycisk, aby rozpoczac." << endl; cout << "Punktacja: 4 pkt - 2, 6 pkt - 3, 8 pkt - 4, 10 pkt - 5" << endl; getch(); system( "cls" ); srand( time( NULL ) ); for( int i = 1; i <= ile_pytan; i++ ) { do { pytania = rand() % ile_pytan + 1; czybylo = true; for( int j = 1; j <= ilebylo; j++ ) { if( pytania == wylosowane[ j ] ) czybylo = false; } if( czybylo == true ) { ilebylo++; wylosowane[ ilebylo ] = pytania; } } while( czybylo != true ); } for( int i = 1; i <= ile_pytan; i++ ) { switch( pytania ) { case 1: { cout << "Pytanie 1:" << endl; cout << "a) " << endl; cout << "b) " << endl; cout << "c) " << endl; cout << "Wpisz litere odpowiedzi:"; odp1 = getch(); if( odp1 == 'a' || odp1 == 'A' ) { suma =+ 1; system( "cls" ); break; } else system( "cls" ); } break; case 2: { cout << "Pytanie 2:" << endl; cout << "a) " << endl; cout << "b) " << endl; cout << "c) " << endl; cout << "Wpisz litere odpowiedzi:"; odp2 = getch(); if( odp2 == 'a' || odp2 == 'A' ) { suma =+ 1; break; system( "cls" ); } else system( "cls" ); } break; case 3: { cout << "Pytanie 3:" << endl; cout << "a) " << endl; cout << "b) " << endl; cout << "c) " << endl; cout << "Wpisz litere odpowiedzi:"; odp3 = getch(); if( odp3 == 'a' || odp3 == 'A' ) { suma =+ 1; system( "cls" ); break; } else system( "cls" ); } break; system( "cls" ); case 4: { cout << "Pytanie 4:" << endl; cout << "a) " << endl; cout << "b) " << endl; cout << "c) " << endl; cout << "Wpisz litere odpowiedzi:"; odp4 = getch(); if( odp4 == 'a' || odp4 == 'A' ) { suma =+ 1; system( "cls" ); break; } else system( "cls" ); } break; case 5: { cout << "Pytanie 5:" << endl; cout << "a) " << endl; cout << "b) " << endl; cout << "c) " << endl; cout << "Wpisz litere odpowiedzi:"; odp5 = getch(); if( odp5 == 'a' || odp5 == 'A' ) { suma =+ 1; system( "cls" ); break; } else system( "cls" ); } break; case 6: { cout << "Pytanie 6:" << endl; cout << "a) " << endl; cout << "b) " << endl; cout << "c) " << endl; cout << "Wpisz litere odpowiedzi:"; odp6 = getch(); if( odp6 == 'a' || odp6 == 'A' ) { suma =+ 1; system( "cls" ); break; } else system( "cls" ); } break; case 7: { cout << "Pytanie 7:" << endl; cout << "a) " << endl; cout << "b) " << endl; cout << "c) " << endl; cout << "Wpisz litere odpowiedzi:"; odp7 = getch(); if( odp7 == 'a' || odp7 == 'A' ) { suma =+ 1; system( "cls" ); break; } else system( "cls" ); } break; case 8: { cout << "Pytanie 8:" << endl; cout << "a) " << endl; cout << "b) " << endl; cout << "c) " << endl; cout << "Wpisz litere odpowiedzi:"; getch(); odp8 = getch(); if( odp8 == 'a' || odp8 == 'A' ) { suma =+ 1; system( "cls" ); break; } else system( "cls" ); } break; case 9: { cout << "Pytanie 9:" << endl; cout << "a) " << endl; cout << "b) " << endl; cout << "c) " << endl; cout << "Wpisz litere odpowiedzi:"; odp9 = getch(); if( odp9 == 'a' || odp9 == 'A' ) { suma =+ 1; system( "cls" ); break; } else system( "cls" ); } break; case 10: { cout << "Pytanie 10:" << endl; cout << "a) " << endl; cout << "b) " << endl; cout << "c) " << endl; cout << "Wpisz litere odpowiedzi:"; odp10 = getch(); if( odp10 == 'a' || odp10 == 'A' ) { suma =+ 1; system( "cls" ); break; } else system( "cls" ); } break; } } getch(); return 0; }
|
|
Rashmistrz |
» 2014-11-26 16:52:51 Tą pierwszą pętlę którą masz w main'ie przenieś do wnętrza drugiej (tej w której są pytania) na sam jej początek.
Polecam Ci zrobienie tablicy z pytaniami i funkcję wyświetlającą pytanie, bo aktualny sposób ze switch'em jest mało efektywny i przy nim trzeba dużo kodu "nastukać"... |
|
« 1 » |