Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] losowanie pytań bez powtórzeń

Ostatnio zmodyfikowano 2014-11-26 16:52
Autor Wiadomość
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ć?

C/C++
#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; //losowanie w C++
            czybylo = true;
           
            for( int j = 1; j <= ilebylo; j++ )
            {
                //czy liczba nie zostala juz wczesniej wylosowana?
                if( pytania == wylosowane[ j ] ) czybylo = false;
               
            }
           
            if( czybylo == true )
            {
                //mamy unikatowa liczbe, zapiszmy ja do tablicy
                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;
}
P-121440
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ć"...
P-121442
« 1 »
  Strona 1 z 1