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

Funkcje Problem z wywoływanymi argumentami funkcji.

Ostatnio zmodyfikowano 2014-06-12 19:17
Autor Wiadomość
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. ;/

C/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;
           
        }
    }
}
P-111915
maly
» 2014-06-11 12:55:47
srand przerzuć do main-a.
P-111916
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.
P-111917
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.
P-111918
pepe450
Temat założony przez niniejszego użytkownika
» 2014-06-12 19:17:48
Dzięki za wyjaśnienia. :)
P-111998
« 1 »
  Strona 1 z 1