Funkcje Problem z wywoływanymi argumentami funkcji.
Ostatnio zmodyfikowano 2014-06-12 19:17
pepe450 Temat założony przez niniejszego użytkownika |
Funkcje Problem z wywoływanymi argumentami funkcji. » 2014-06-11 12:48:41 Witam mam problem ponieważ w moim wywoływaniu funkcji. Argumenty które są wywołane za pierwszym razem pozostają takie same do końca działania programu. Jak powinienem zmienić program żeby za każdą iteracją funkcje przyjmowały nowe dane. Prosił bym żeby nie usuwać. Tylko pomóc. ;/ #include<iostream> #include<string> #include<iomanip> #include<cstdlib> #include<ctime> using namespace std; string losujCiag(); int zamiana( string slowo ); void hashowanieLiniowe( string dane[], string slowo, int rozmiar, int wynik ); int main() { const int rozmiar = 10; string dane[ rozmiar ]; for( int i = 0; i < rozmiar * 0.75; i++ ) { hashowanieLiniowe( dane, losujCiag(), rozmiar, zamiana( losujCiag() ) ); } hashowanieLiniowe( dane, losujCiag(), rozmiar, zamiana( losujCiag() ) ); return 0; } string losujCiag() { srand( time( NULL ) ); string slowo; for( int i = 0; i < rand() % 10 + 1; i++ ) slowo += rand() % 61 + 65; return slowo; } int zamiana( string slowo ) { int dlugosc = slowo.size(); int wynik = 0; for( int i = 0; i < dlugosc; i++ ) wynik += slowo[ i ]; return wynik; } void hashowanieLiniowe( string dane[], string slowo, int rozmiar, int wynik ) { int index = wynik % rozmiar; int kolizje = 0; bool wolne_miejsce = true; while( wolne_miejsce ) { if( zamiana( dane[ index ] ) == 0 ) { dane[ index ] = slowo; wolne_miejsce = false; cout << "Index " << index << endl; cout << "Kolizje " << kolizje << endl; cout << "Slowo " << slowo << endl; cout << "Wynik " << wynik << endl; } else { kolizje++; index =( index + kolizje ) % rozmiar; if( kolizje == rozmiar ) break; } } }
|
|
maly |
» 2014-06-11 12:55:47 srand przerzuć do main-a. |
|
pepe450 Temat założony przez niniejszego użytkownika |
» 2014-06-11 13:20:40 W końcu. ;) Wielkie dzięki a mógłby mi ktoś wytłumaczyć dla czego srand(time(NULL)); działa właśnie tak.
|
|
maly |
» 2014-06-11 13:50:00 time zmienia się co sekundę więc przez ten czas srand dostaje tą samą wartość więc rand generuje te same liczby. |
|
pepe450 Temat założony przez niniejszego użytkownika |
» 2014-06-12 19:17:48 Dzięki za wyjaśnienia. :) |
|
« 1 » |