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

[Lekcja 18] Zadanie domowe - problem z rand()

Ostatnio zmodyfikowano 2012-03-01 20:50
Autor Wiadomość
V0ldek
Temat założony przez niniejszego użytkownika
[Lekcja 18] Zadanie domowe - problem z rand()
» 2012-03-01 17:27:36
C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>

int wypelnij()
{
    int tablicaWypelnij[ 999 ];
    int licznik = 0;
   
   
    do
    {
        int wylosnik =(( rand() % 7 ) + 4 );
        tablicaWypelnij[ licznik ] = wylosnik;
        licznik++;
    } while( licznik != 999 );
   
    return tablicaWypelnij[ 999 ];
}

int licz()
{
    int tablicaLicz[ 999 ];
    tablicaLicz[ 999 ] = wypelnij();
    int licznik = 0;
    int wylicznik = 0;
    int wynik = 0;
   
    do
    {
       
        wylicznik = wylicznik + tablicaLicz[ licznik ];
        wynik = wynik + wylicznik;
        licznik++;
    } while( licznik != 999 );
   
    return wynik;
}

int wypiszLiczby()
{
    int tablicaWypiszLiczby[ 999 ];
    tablicaWypiszLiczby[ 999 ] = wypelnij();
    int licznik = 0;
   
    do
    {
        int wypisznik =( licznik ) + 1;
        std::cout << wypisznik << ". ==> " << tablicaWypiszLiczby[ licznik ] << "\n";
        licznik++;
    } while( licznik != 999 );
   
}

int wypiszWynik()
{
    int wynik = licz();
   
    std::cout << "Suma to: " << wynik;
}

int wykonaj()
{
    wypiszLiczby();
    wypiszWynik();
}

int main()
{
    srand( time( NULL ) );
    wykonaj();
    return 0;
}

Po wywołaniu powyższego kodu, wylosowane liczby nie są z danego zakresu, tylko poprostu tak jakby z du*y wzięte... Gdzie popełniłem błąd? Jestem przekonany, że w funkcji wylosuj() ale nie jestem pewien...
P-51676
SeaMonster131
» 2012-03-01 17:48:29
tablicaWypiszLiczby[ 999 ] = wypelnij();
 w funkcji wypiszLiczby(), musisz tutaj dla każdego elementu losować liczbę, a nie dla pierwszego. Poza tym w funkcji losującej nie potrzebnie dałeś tablicę, jak zwracasz jej ostatni element (albo nawet wychodzisz poza jej zakres).
P-51679
pekfos
» 2012-03-01 17:48:49
tablicaWypiszLiczby[ 999 ] = wypelnij();

Zastanów się, co to robi..
P-51680
V0ldek
Temat założony przez niniejszego użytkownika
» 2012-03-01 17:54:58
W takim razie, jak mam przesłać tablicę z wylosuj() do wypiszLiczby()? Czy muszę połączyć te funkcje?
P-51684
V0ldek
Temat założony przez niniejszego użytkownika
» 2012-03-01 20:50:15
Dobra, zacząłem pisać od początku i sprawdziłem czy można przekazywać tablice przez argumenty funkcji. Opracowałem taki kod:
C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>

void fill( int tableFill[], int tableSizeFill )
{
    int i = 0;
   
    do
    {
        tableFill[ i ] =( rand() % 7 ) + 4;
        i++;
    } while( i < tableSizeFill );
   
}

int add( int tableAdd[], int tableSizeAdd )
{
    int i = 0;
    int sum = 0;
   
    do
    {
        sum = sum + tableAdd[ i ];
        i++;
    } while( i < tableSizeAdd );
   
    return sum;
}

void printTable( int tablePrintTable[], int tableSizePrintTable )
{
    int i = 0;
   
    do
    {
        int num = i;
        num++;
        std::cout << num << ".    ==>  " << tablePrintTable[ i ] << "\n";
        i++;
    } while( i < tableSizePrintTable );
   
}

void printSum( int sum )
{
    std::cout << "Suma tych liczb to: " << sum;
}

int main()
{
    srand( time( NULL ) );
    int tableSizeMain = 999;
    int tableMain[ 999 ];
    int sum = 0;
   
    fill( tableMain, tableSizeMain );
   
    std::cout << "Liczby to: \n";
    printTable( tableMain, tableSizeMain );
   
    sum = add( tableMain, tableSizeMain );
   
    printSum( sum );
   
    return 0;
   
}
I działa!
EDIT:
Jakie było moje zaskoczenie gdy następna lekcja była właśnie o tym ;D. Tej lekcji nie zapomnę, popełniłem wszystkie możliwe błędy... Dzięki wam, zamykam temat.
P-51720
« 1 »
  Strona 1 z 1