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

Automatyczne losowanie wśród wyrazów

Ostatnio zmodyfikowano 2014-05-25 11:40
Autor Wiadomość
Feleur
Temat założony przez niniejszego użytkownika
Automatyczne losowanie wśród wyrazów
» 2014-05-24 12:39:19
Cześć, witam Was.
Jestem tutaj nowy, choć z C++ stykam się już pewien czas. Problem mój związany jest z programem, który będzie losował parę wyrazów (przykładowo pięć lub dziesięć) spośród bazy obejmującej przykładowo 200 wyrazów.
Niestety nie robiłem tego typu programów i tutaj utknąłem.
W skrócie mówiąc proszę o pomoc w programie, który:
1. Posiada bazę wyrazów.
2. Z owej bazy wybiera przykładowo 10 wyrazów.
3. Następnie po skończeniu danych 10ciu wyrazów (przykładowo) losuje kolejne 10 aczkolwiek już bez 10 poprzednich.
Bardzo prosiłbym o pomoc, potrzebuje tego pilnie.
Z góry dziękuję za pomoc.
P-110770
Nitr0Skay
» 2014-05-24 13:46:21
1)  Bazę dwustu wyrazów można utworzyć np. jako tablicę tych wyrazów:

C/C++
string wyraz[ 200 ];

I wystarczy wcześniej utworzyć funkcję, która zainicjuje te wyrazy:

C/C++
void baza( string wyraz[] )
{
    wyraz[ 0 ] = "Wyraz1";
    wyraz[ 1 ] = "Wyraz2";
    wyraz[ 2 ] = "Wyraz3";
    wyraz[ 3 ] = "Wyraz4";
    wyraz[ 4 ] = "Wyraz5";
    ...
}

Funkcje operują na oryginalnych tablicach, więc rozwiązanie to, choć czaso i pracochłonne to jednak bardzo skuteczne.

2) 

C/C++
srand( time( NULL ) );
string wybranyWyraz =( rand() % 199 );

Zależy jeszcze, czy to mają być 2 wyrazy (para), pięć czy dziesięć takich wyrazów. Wówczas zamiast powyższego tworzy Pan Tablicę z wybranymi wyrazami:

C/C++
srand( time( NULL ) );
string wybranyWyraz[ length ]; // gdzie length odpowiada liczbie wyrazów, tzn ile ich ma być

for( int i = 0; i < length; i++ )
{
    wybranyWyraz[ i ] =( rand() % 199 );
}

Coś w ten deseń.

3) Co do losowania bez powtórzeń, to:
http://cpp0x.pl/kursy/Kurs-C++/Poziom-2/Losowanie-bez-powtorzen/293


Jeżeli będzie Pan miał z czymś problem, lub jakieś konkretne pytania to proszę je tutaj zadać. Jeżeli nie ja, to na pewno znajdzie się ktoś doświadczony, który Panu pomoże :)
Powodzenia
P-110778
Feleur
Temat założony przez niniejszego użytkownika
» 2014-05-24 13:52:57
Dziękuję za pomoc! Zaraz sprawdzę wszystko.
P-110779
Nitr0Skay
» 2014-05-24 13:57:39
To co Pan przed chwilą otrzymał, to Adres pamięci pierwszego Elementu tablicy o podanej nazwie. Nic groźnego, ale chyba nie o taki wynik działania programu Panu chodziło ;)
P-110780
Feleur
Temat założony przez niniejszego użytkownika
» 2014-05-24 15:32:18
Mam problem taki, iż kiedy wpisuję
string wybranyWyraz =( rand() % 199 );
to my wywala błąd o nazwie:
[Error] invalid coversion from 'int' to 'const char*' [-fpermissive].

Co w tej sytuacji?
P-110785
Monika90
» 2014-05-24 16:21:56
możesz użyć std::shuffle z <algorithm> + mt19937 z <random>
P-110791
pekfos
» 2014-05-24 16:28:51
Feleur: ten kod jest niepoprawny, nie możesz do tekstu przypisać liczby.

C/C++
std::string wybrany = baza_wyrazow[ rand() % N ];
P-110792
Feleur
Temat założony przez niniejszego użytkownika
» 2014-05-24 20:46:50
To w takim razie jak miałbym to zaimplementować?
P-110800
« 1 » 2
  Strona 1 z 2 Następna strona