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

[Lekcja 18] Losowanie tych samych liczb.

Ostatnio zmodyfikowano 2014-10-25 14:52
Autor Wiadomość
lukhol
Temat założony przez niniejszego użytkownika
[Lekcja 18] Losowanie tych samych liczb.
» 2014-10-24 00:17:57
witam, mam problem z zadaniu domowym z lekcji 18. Program, który napisałem losuje zawsze ta samą liczbę i nie wiem czym jest to spowodowane ponieważ w kodzie wpisane mam
srand( time( NULL ) );

C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>
#include<windows.h>
//... tu Twój kod
using namespace std;

int wylosujLiczby( int * tablicaa, int wypelnienie, int a, int b )
{
    int pp, dlugoscPrzedzialu, y;
    dlugoscPrzedzialu =( b - a ) + 1;
    y =( b - dlugoscPrzedzialu + 1 );
    pp = rand() % dlugoscPrzedzialu + y;
   
    for( int i = 0; i < wypelnienie; i++ )
    {
        tablicaa[ i ] = pp;
    }
   
    return 0;
}
int obliczSume( int * tabliczka, int wypelnienie )
{
    int sumka = 0;
    for( int i = 0; i < wypelnienie; i++ )
    {
        sumka = sumka + tabliczka[ i ];
    }
   
    return sumka;
}

int wypiszLiczby( int * tablica, int wypelnienie )
{
    for( int i = 0; i < wypelnienie; i++ )
    {
        cout << i + 1 << ". " << tablica[ i ] << endl;
    }
    return 0;
}
int main()
{
    srand( time( NULL ) );
   
    int tablica[ 999 ];
    wylosujLiczby( tablica, 999, 4, 10 );
    wypiszLiczby( tablica, 999 );
    int iSuma = obliczSume( tablica, 999 );
    cout << "Suma liczb wynosi: " << iSuma << endl;
    return 0;
   
}

}
P-119279
Rashmistrz
» 2014-10-24 07:21:32
pp = rand() % dlugoscPrzedzialu + y;

Przypisałeś do "pp" wylosowaną liczbę,
a potem przypisujesz ciągle tą samą.
tablicaa[ i ] = pp;


//A całość tej funkcji da
//się zmieścić w 3 liniach.
//Trochę przesadziłem. :P
//Ale i tak się da mocno
//skrócić...
P-119282
Memento96
» 2014-10-24 08:25:02
Losowanie liczb wg. mnie powinno się odbywać w pętli for, wtedy wszystko działa :)
P-119286
lukhol
Temat założony przez niniejszego użytkownika
» 2014-10-24 11:15:31
Dobra widzę błąd. A co do skrócenia funkcji, niestety narazie mam problem z pisaniem krótkich kodów :D
P-119290
Rashmistrz
» 2014-10-24 16:22:31
A co do skrócenia funkcji, niestety na razie
mam problem z pisaniem krótkich kodów :D
Nic nie szkodzi. Mi głównie chodzi o
"składanie" kodu by był bardziej "kompaktowy".

P-119305
wirusomaniak
» 2014-10-25 12:36:32
ja tę funkcję zrobiłem tak
C/C++
int wylosujLiczby( int t[], int iRozmiar, int b, int c )
{
   
    int i = 0;
    do
    {
        t[ i ] =( rand() %( c - b + 1 ) ) + b;
        i++;
    } while( i < iRozmiar );
   
    return 0;
}
P-119361
Rashmistrz
» 2014-10-25 14:52:36
:F Skoro znasz
for
:
C/C++
int wylosujLiczby( int t[], int iRozmiar, int b, int c ) {
    for( int i = 0; i < iRozmiar; )
         t[ i++ ] =( rand() %( c - b + 1 ) ) + b;
   
    return 0;
}

Ale się już nie rozdrabniajmy.
Program działa? Działa!
A zabiegi kosmetyczne jak
zabiegi kosmetyczne, nie
trzeba ich wcale robić. :D

P-119379
« 1 »
  Strona 1 z 1