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

Losowe wybieranie z funkcji string

Ostatnio zmodyfikowano 2015-03-06 09:02
Autor Wiadomość
eryqs
Temat założony przez niniejszego użytkownika
Losowe wybieranie z funkcji string
» 2015-03-05 15:17:53
Witam serdecznie,
przybywam do was z prośbą o pomoc.
Chcę stworzyć program ( bardzo prosty) quiz w którym trzeba wybrać odpowiednią stolicę danego Państwa.
Moja tablica składa się z 40 argumentów ( "Ktore z wymienionych miast jest stolica .......?\n 1) Rejkiawik,\n 2) Oslo,\n 3) Sztokholm,\n Odpowiedz: " )x40.
Chciałbym, żeby program generował 10 nie powtarzających się losowych pytań z tej puli 40, jednak za nic w świecie nie mogę sobie z tym poradzić. znalazłem taką podpowiedź


(string tab[] = { "tekst1", "tekst2", "tekst3",...};
int los = rand()%rozmiarTablicy;
cout << tab[los];) - jednak nie wiem gdzie i jak to wpisać.

Mój program wygląda tak:

using namespace std;
int main()
{
    cout << "Sprawdz swoja wiedze, czy wiesz jaka to stolica ?\n\n" ;
    const int ilosc_pytan = 41;

    string pytania[ilosc_pytan] = {
        "Ktore z wymienionych miast jest stolica Islandii?\n 1) Rejkiawik,\n 2) Oslo,\n 3) Sztokholm,\n Odpowiedz: ",
        "Ktore z wymienionych miast jest stolica Norwegii?\n 1) Berlin,\n 2) Oslo,\n 3) Bukareszt,\n Odpowiedz: ",
        "Ktore z wymienionych miast jest stolica Szwecji?\n 1) Madryt,\n 2) Kopenhaga,\n 3) Sztokholm,\n Odpowiedz: ",
           ...........
};
int odpowiedzi[ilosc_pytan]={1,2,3};
int wynik = 0;
    int odpowiedz;
    for(int i=0;i<ilosc_pytan;i++)
    {
        cout << pytania ;
        cin >> odpowiedz;
        if(odpowiedz == odpowiedzi)
        {
            wynik++;
            cout << "\n\nBrawo ! Prawidlowa odpowiedz! Otrzymujesz +1 pkt,\n";
        }
        else
        {
            wynik--;
            cout << "\n\nNiestety, nie udalo ci sie otrzymujesz -1 pkt,\n";
        }
        cout<<" teraz masz: " << wynik << " punktow\n"<<endl;
    }
    cout<<"Na koniec masz "<<wynik<<" punktow"<<endl;

    return 0;
    getch();
}

Jeżeli znajdzie ktoś czas, to prosiłbym o poprawienie kodu.

P-127744
aksen
» 2015-03-05 15:53:00
stwórz strukturę i wypełnij ją:
(nie na sensu wpisywać do struktury całej treści pytania,
błędne odpowiedzi należy losować, a nie wpisywać na sztywno)
Możesz wtedy podawać stolicę i pytać jakiego kraju jest stolicą (czyli odwrócić pytania)

C/C++
struct Quiz
{
    string Kraj;
    string Stolica;
};

Quiz quiz[ 41 ] =
{
    { "Polska", "Warszwa" },
    { "Wegry", "Budapeszt" },
    // itd
   
};


tu masz funkcję losującą liczby od "a" do "b"
(musisz wylosować jeszcze raz kiedy liczba się powtórzy)

C/C++
inline int losuj( int a, int b )
{
    return a + rand() %( b - a + 1 );
}
P-127745
Brunon3
» 2015-03-05 16:01:19
I daj kod w [.cpp] [./cpp] (bez kropek).
P-127746
eryqs
Temat założony przez niniejszego użytkownika
» 2015-03-05 16:49:54
C/C++
using namespace std;
int main()
{
    cout << "Sprawdz swoja wiedze, czy wiesz jaka to stolica ?\n\n";
    const int ilosc_pytan = 41;
   
    string pytania[ ilosc_pytan ] = {
        "Ktore z wymienionych miast jest stolica Islandii?\n 1) Rejkiawik,\n 2) Oslo,\n 3) Sztokholm,\n Odpowiedz: ",
        "Ktore z wymienionych miast jest stolica Norwegii?\n 1) Berlin,\n 2) Oslo,\n 3) Bukareszt,\n Odpowiedz: ",
        "Ktore z wymienionych miast jest stolica Szwecji?\n 1) Madryt,\n 2) Kopenhaga,\n 3) Sztokholm,\n Odpowiedz: ",
        ...........
    };
    int odpowiedzi[ ilosc_pytan ] = { 1, 2, 3 };
    int wynik = 0;
    int odpowiedz;
    for( int i = 0; i < ilosc_pytan; i++ )
    {
        cout << pytania;
        cin >> odpowiedz;
        if( odpowiedz == odpowiedzi )
        {
            wynik++;
            cout << "\n\nBrawo ! Prawidlowa odpowiedz! Otrzymujesz +1 pkt,\n";
        }
        else
        {
            wynik--;
            cout << "\n\nNiestety, nie udalo ci sie otrzymujesz -1 pkt,\n";
        }
        cout << " teraz masz: " << wynik << " punktow\n" << endl;
    }
    cout << "Na koniec masz " << wynik << " punktow" << endl;
   
    return 0;
    getch();
}

Dziękuje za odpowiedź, jednak muszę przyznać, że dopiero raczkuję jeżeli chodzi o programowanie, nie bardzo wiem jak to dalej połączyć, chodzi o strukturę jaką podpowiedział mi aksent.

Czyli to co już napisałem jest nic nie warte ? Czy opierając się o to co już napisałem można zmodyfikować tylko tak, żeby się losowało 10 argumentów ze stringu ?
rozumiem, że jak dodam strukturę to będzie lepiej wyglądało i działało, jednak nie chciałbym wyskakiwać do przodu i chciałbym dopiąć do końca to co już zacząłem :)
P-127749
aksen
» 2015-03-05 17:05:40
Struktury nie są niczym trudnym. W tym przypadku ułatwią ci życie.

http://cpp0x.pl/kursy/Kurs-C++​/Struktury-danych/303

P-127751
eryqs
Temat założony przez niniejszego użytkownika
» 2015-03-05 17:16:58
Czyli z mojego kodu nic się już nie wyciśnie ?
Dziękuję za pomoc :)
P-127752
aksen
» 2015-03-05 17:17:54
Jeśli koniecznie chcesz pisać program w ten sposób to podaj cały kod.
Z fragmentów kodu nikt ci programu nie będzie tworzył.
P-127753
eryqs
Temat założony przez niniejszego użytkownika
» 2015-03-05 17:25:57
C/C++
#include <iostream>
#include <string>
#include <conio.h>
#include <cstdlib>
#include <time.h>
using namespace std;
int main()
{
    cout << "Sprawdz swoja wiedze, czy wiesz jaka to stolica ?\n\n";
    const int ilosc_pytan = 41;
   
    string pytania[ ilosc_pytan ] = {
        "Ktore z wymienionych miast jest stolica Islandii?\n 1) Rejkiawik,\n 2) Oslo,\n 3) Sztokholm,\n Odpowiedz: ",
        "Ktore z wymienionych miast jest stolica Norwegii?\n 1) Berlin,\n 2) Oslo,\n 3) Bukareszt,\n Odpowiedz: ",
        "Ktore z wymienionych miast jest stolica Szwecji?\n 1) Madryt,\n 2) Kopenhaga,\n 3) Sztokholm,\n Odpowiedz: ",
        "Ktore z wymienionych miast jest stolica Finlandii?\n 1) Helsinki,\n 2) Rzym,\n 3) Dublin,\n Odpowiedz: ",
        "Ktore z wymienionych miast jest stolica Danii?\n 1) Bruksela,\n 2) Luksemburg,\n 3) Kopenhaga,\n Odpowiedz: ",
        "Ktore z wymienionych miast jest stolica Belgii?\n 1) Bruksela,\n 2) Skopie,\n 3) Tirana,\n Odpowiedz: ",
        "Ktore z wymienionych miast jest stolica Niemiec?\n 1) Praga,\n 2) Bratyslawa,\n 3) Berlin,\n Odpowiedz: ",
        "Ktore z wymienionych miast jest stolica Luksemburgu?\n 1) Londyn,\n 2) Luksemburg,\n 3) Oslo,\n Odpowiedz: ",
        "Ktore z wymienionych miast jest stolica Francji?\n 1) Berno,\n 2) Paryż,\n 3) Kiszyniow,\n Odpowiedz: ",
        "Ktore z wymienionych miast jest stolica W.Brytanii?\n 1) Mancherster,\n 2) Oslo,\n 3) Londyn,\n Odpowiedz: ",
        "Ktore z wymienionych miast jest stolica Irladnii?\n 1) Liverpool,\n 2) Dublin,\n 3) Sztokholm,\n Odpowiedz: ",
        "Ktore z wymienionych miast jest stolica Portugalii?\n 1) Lizbona,\n 2) Oslo,\n 3) Andora,\n Odpowiedz: ",
        "Ktore z wymienionych miast jest stolica Hiszpanii?\n 1) Rejkiawik,\n 2) Madryt,\n 3) Zagrzeb,\n Odpowiedz: ",
        "Ktore z wymienionych miast jest stolica Monako?\n 1) Sarajewo,\n 2) Skopie,\n 3) Monako,\n Odpowiedz: ",
        "Ktore z wymienionych miast jest stolica Wloch?\n 1) Madryt,\n 2) Rzym,\n 3) Andora,\n Odpowiedz: ",
        "Ktore z wymienionych miast jest stolica San Marino?\n 1) San Marino,\n 2) Oslo,\n 3) Ateny,\n Odpowiedz: ",
        "Ktore z wymienionych miast jest stolica Malty?\n 1) Moskwa,\n 2) Ryga,\n 3) Valletta,\n Odpowiedz: ",
        "Ktore z wymienionych miast jest stolica Slowenii?\n 1) Helsinki,\n 2) Lublana,\n 3) Slowacja,\n Odpowiedz: ",
        "Ktore z wymienionych miast jest stolica Chorwacj?\n 1) Lizbona,\n 2) Zagrzeb,\n 3) Albena,\n Odpowiedz: ",
        "Ktore z wymienionych miast jest stolica Bosni i Hercegowiny?\n 1) Amsterdam,\n 2) Sarajewo,\n 3) Ankara,\n Odpowiedz: ",
        "Ktore z wymienionych miast jest stolica Andory?\n 1) Biel,\n 2) Berno,\n 3) Andora,\n Odpowiedz: ",
        "Ktore z wymienionych miast jest stolica Serbii?\n 1) Belgrad,\n 2) Bilbao,\n 3) Bielce,\n Odpowiedz: ",
        "Ktore z wymienionych miast jest stolica Czarnogory?\n 1) Evora,\n 2) Galacz,\n 3) Podgorica,\n Odpowiedz: ",
        "Ktore z wymienionych miast jest stolica Albanii?\n 1) Tirana,\n 2) Erd,\n 3) Ferrara,\n Odpowiedz: ",
        "Ktore z wymienionych miast jest stolica Grecji?\n 1) Foggia,\n 2) Ateny,\n 3) Jassy,\n Odpowiedz: ",
        "Ktore z wymienionych miast jest stolica Poski?\n 1) Warszawa,\n 2) Krakwó,\n 3) Szczecin,\n Odpowiedz: ",
        "Ktore z wymienionych miast jest stolica Czech?\n 1) Logrono,\n 2) Oslo,\n 3) Praga,\n Odpowiedz: ",
        "Ktore z wymienionych miast jest stolica Słowacji?\n 1) Bratyslawa,\n 2) Decin,\n 3) Dermstadt,\n Odpowiedz: ",
        "Ktore z wymienionych miast jest stolica Wegier?\n 1) Baku,\n 2) Czadca,\n 3) Budapeszt,\n Odpowiedz: ",
        "Ktore z wymienionych miast jest stolica Rumunii?\n 1) Barreiro,\n 2) Bari,\n 3) Bukareszt,\n Odpowiedz: ",
        "Ktore z wymienionych miast jest stolica Bulgarii?\n 1) Sofia,\n 2) Braga,\n 3) Breda,\n Odpowiedz: ",
        "Ktore z wymienionych miast jest stolica Rosji?\n 1) Kijow,\n 2) Moskwa,\n 3) Krym,\n Odpowiedz: ",
        "Ktore z wymienionych miast jest stolica Litwy?\n 1) Wilno,\n 2) Bled,\n 3) Bovec,\n Odpowiedz: ",
        "Ktore z wymienionych miast jest stolica Lotwy?\n 1) Dubrownik,\n 2) Ryga,\n 3) Divaca,\n Odpowiedz: ",
        "Ktore z wymienionych miast jest stolica Estonii?\n 1) Drammen,\n 2) Dover,\n 3) Tallin,\n Odpowiedz: ",
        "Ktore z wymienionych miast jest stolica Bialorusi?\n 1) Edynburg,\n 2) Minsk,\n 3) Elbsan,\n Odpowiedz: ",
        "Ktore z wymienionych miast jest stolica Ukrainy?\n 1) Kijow,\n 2) Guarda,\n 3) Gori,\n Odpowiedz: ",
        "Ktore z wymienionych miast jest stolica Moldawii?\n 1) Rejkiawik,\n 2) Gliwice,\n 3) Kiszyniow,\n Odpowiedz: ",
        "Ktore z wymienionych miast jest stolica Szwajcarii?\n 1) Kolonia,\n 2) Berno,\n 3) Komrat,\n Odpowiedz: ",
        "Ktore z wymienionych miast jest stolica Austrii?\n 1) Wieden,\n 2) Leira,\n 3) Liberec,\n Odpowiedz: ",
        "Ktore z wymienionych miast jest stolica Lichtensteinu?\n 1) Veduz,\n 2) Oslo,\n 3) Lichtenstein,\n Odpowiedz: ",
       
       
    };
   
    int odpowiedzi[ ilosc_pytan ] = { 1, 2, 3, 1, 3, 1, 3, 2, 2, 3, 2, 1, 2, 3, 2, 1, 2, 2, 2, 2, 3, 1, 3, 1, 2, 1, 3, 1, 3, 3, 1, 2, 1, 2, 3, 2, 1, 3, 2, 1, 1 };
    int wynik = 0;
    int odpowiedz;
    for( int i = 0; i < ilosc_pytan; i++ )
    {
        cout << pytania[ i ];
        cin >> odpowiedz;
        if( odpowiedz == odpowiedzi[ i ] )
        {
            wynik++;
            cout << "\n\nBrawo ! Prawidlowa odpowiedz! Otrzymujesz +1 pkt,\n";
        }
        else
        {
            wynik--;
            cout << "\n\nNiestety, nie udalo ci sie otrzymujesz -1 pkt,\n";
        }
        cout << " teraz masz: " << wynik << " punktow\n" << endl;
    }
    cout << "Na koniec masz " << wynik << " punktow" << endl;
   
    return 0;
    getch();
}

Tak to wygląda
P-127754
« 1 » 2
  Strona 1 z 2 Następna strona