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

Lekcja 2.19

Ostatnio zmodyfikowano 2016-08-11 11:09
Autor Wiadomość
CCbolt
Temat założony przez niniejszego użytkownika
Lekcja 2.19
» 2016-07-26 19:12:06
Mam problem z wyświetleniem losowej liczby za każdym razem gdy próbuje nazwać jakoś ( rand() % b ) + a; 2 kod działa ale  kiedy w pierwszym mam zawsze 999 pozycji jednej liczby.
ps. Polecicie coś gdzie są materiały z funkcjami, tablicami tak aby można było przerobić rozwiązane zadania i sprawdzić co i jak działa od podszewki, po samych lekcjach ciężko jest mi cokolwiek samemu wymyślić, muszę przewertować kilka różnych zadań zanim mnie oświeci i to nie zawsze.



C/C++
int wylosujLiczby( int tablica[], int rozmiar, int a, int b ) //int a argumenty dla wylosujLiczby( tablica, 999, 4, 10 );
{
    int l = 0;
    do
    {
        int liczba =( rand() %( b - a + 1 ) ) + a;
        tablica[ l ] = liczba;
        l++;
    } while( l < rozmiar );
   
}

int wypiszLiczby( int tablica[], int rozmiar )
{
    int liczba;
    int l = 0;
    do
    {
        cout << "Pozycja nr: " << l + 1 << " Liczba losowana:  " << liczba << endl;
        l++;
       
    } while( l < rozmiar );
   





C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

int wylosujLiczby( int tablica[], int rozmiar, int a, int b ) //int a argumenty dla wylosujLiczby( tablica, 999, 4, 10 );
{
    int l = 0;
    do
    {
        tablica[ l ] =( rand() %( b - a + 1 ) ) + a;
       
        l++;
    } while( l < rozmiar );
   
}

int wypiszLiczby( int tablica[], int rozmiar )
{
    int l = 0;
    do
    {
        cout << "Pozycja nr: " << l + 1 << " Liczba losowana:  " << tablica[ l ] << endl;
        l++;
       
    } while( l < rozmiar );
   
}
int obliczSume( int tablica[], int rozmiar )

{
    int l = 0;
    int suma = 0;
    do
    {
        suma += tablica[ l ];
        l++;
    } while( l < rozmiar );
   
    return suma;
}


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

[ cpp ]
P-150274
kistel66
» 2016-07-26 19:16:40
Funkcja wylosuj nie zwraca żadnej wartości (bez słówka return). Zrób z niej albo voida, albo każ coś zwrócić.
Funkcja wypiszliczby powinna być typu void, a nie int, bo tu nie ma co zwracać. Popraw to i myślę, że będzie działało
P-150275
CCbolt
Temat założony przez niniejszego użytkownika
» 2016-07-26 19:28:05
Jezu no tak, dzięki.
ps.jednak dalej mam losową "stałą" liczbę przez 999 razy w zakresie od 4 do 10 ale wynik wychodzi śmieszczny
"Pozycja nr: 998 Liczba losowana:  5
Pozycja nr: 999 Liczba losowana:  5
Suma liczb wynosi: 7029 "
P-150276
Szymon2727
» 2016-07-26 20:37:58
Jak losowa? Jak już to pseudolosowa, a pseudolosowanie ma to do siebie w przeciwności do losu, że jest określona i możesz mieć cały czas te same liczby. Tutaj to nie wiem czego się czepiasz, jaka stała? Dwa razy wylosowałeś 5 i już stała. Czasami mogłeś mieć 4, czasami 10 i to suma sumarum dało 7029. Z czego widzę to program losuje 999 liczb z zakresu od 4-10 i je do siebie dodaje, więc ta liczba jest jak najbardziej na miejscu.
P-150278
CCbolt
Temat założony przez niniejszego użytkownika
» 2016-07-26 21:24:15
@Szymon2727 Napisałem w pierwszym poście, w pierwszym zdaniu że występuje tylko jedna liczba w 999 pozycjach tylko i wyłącznie gdy próbuję randa jakoś nazwać i tej nazwy używać zamiast np.tabela[l]. Wrzuć mój drugi kod podmień początek z pierwszymi funkcjami na samym początku jakie podałem i zrozumiesz o co mi chodzi.
A czepiam się w zasadzie wszystkiego, takie czepianie o niuanse dzięki kilku osobom z forum pozwoliło mi zrozumieć lepiej niektóre zjawiska.
P-150282
carlosmay
» 2016-07-26 21:32:16
Jeśli to Ci poprawi humor to kompilowałem twój pierwszy kod po poprawkach typów funkcji, i program losował różne liczby.

występuje tylko jedna liczba w 999 pozycjach tylko i wyłącznie gdy próbuję randa jakoś nazwać i tej nazwy używać zamiast np.tabela[l].
Wrzuć ten konkretny kod z komentarzami, gdzie i co jest nie po twojej myśli.
P-150284
CCbolt
Temat założony przez niniejszego użytkownika
» 2016-07-26 22:11:51
Mam nadzieje że jakiś głupi błąd popełniłem i cała moja filozofia jest dobra.
C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

void wylosujLiczby( int tablica[], int rozmiar, int a, int b ) //int a argumenty dla wylosujLiczby( tablica, 999, 4, 10 );
{
    int l = 0;
    do
    {
        int liczba =( rand() %( b - a + 1 ) ) + a; // pseudo losowanie z zakresu 4 -10.
        tablica[ l ] = liczba; // Tu coś mi nie pasuje, nadanie nazwy miało na celu wywołanie losowej liczby dla każdej pozycji w tabeli                                    
        l++;
    } while( l < rozmiar );
   
}

void wypiszLiczby( int tablica[], int rozmiar )
{
    int liczba;
    int l = 0;
    do
    {
        cout << "Pozycja nr: " << l + 1 << " Liczba losowana:  " << liczba << endl; //"liczba" wprowadza pseudo losowe liczby(nie działa)
       
    }
    int obliczSume( int tablica[], int rozmiar )
   
    {
        int l = 0;
        int suma = 0;
        do
        {
            suma += tablica[ l ];
            l++;
        } while( l < rozmiar );
       
        return suma;
    }
   
   
    int main()
    {
        srand( time( NULL ) );
        int tablica[ 999 ];
        wylosujLiczby( tablica, 999, 4, 10 );
        wypiszLiczby( tablica, 999 );
        int iSuma = obliczSume( tablica, 999 );
        std::cout << "Suma liczb wynosi: " << iSuma << std::endl;
        return 0;
    }


C/C++
...
Pozycja nr: 965 Liczba losowana: 4
Pozycja nr: 966 Liczba losowana: 4
Pozycja nr: 967 Liczba losowana: 4
Pozycja nr: 968 Liczba losowana: 4
Pozycja nr: 969 Liczba losowana: 4
Pozycja nr: 970 Liczba losowana: 4
Pozycja nr: 971 Liczba losowana: 4
Pozycja nr: 972 Liczba losowana: 4
Pozycja nr: 973 Liczba losowana: 4
Pozycja nr: 974 Liczba losowana: 4
Pozycja nr: 975 Liczba losowana: 4
Pozycja nr: 976 Liczba losowana: 4
Pozycja nr: 977 Liczba losowana: 4
Pozycja nr: 978 Liczba losowana: 4
Pozycja nr: 979 Liczba losowana: 4
Pozycja nr: 980 Liczba losowana: 4
Pozycja nr: 981 Liczba losowana: 4
Pozycja nr: 982 Liczba losowana: 4
Pozycja nr: 983 Liczba losowana: 4
Pozycja nr: 984 Liczba losowana: 4
Pozycja nr: 985 Liczba losowana: 4
Pozycja nr: 986 Liczba losowana: 4
Pozycja nr: 987 Liczba losowana: 4
Pozycja nr: 988 Liczba losowana: 4
Pozycja nr: 989 Liczba losowana: 4
Pozycja nr: 990 Liczba losowana: 4
Pozycja nr: 991 Liczba losowana: 4
Pozycja nr: 992 Liczba losowana: 4
Pozycja nr: 993 Liczba losowana: 4
Pozycja nr: 994 Liczba losowana: 4
Pozycja nr: 995 Liczba losowana: 4
Pozycja nr: 996 Liczba losowana: 4
Pozycja nr: 997 Liczba losowana: 4
Pozycja nr: 998 Liczba losowana: 4
Pozycja nr: 999 Liczba losowana: 4
Suma liczb wynosi: 6956

Process returned 0( 0x0 ) execution time
    : 1.842 s Press any key to continue.
P-150288
carlosmay
» 2016-07-26 22:32:54
W tym co wkleiłeś brakuje fragmentu kodu.
C/C++
int liczba; // zmienna nie ma wartości początkowej
int l = 0;
do
{
    cout << "Pozycja nr: " << l + 1 << " Liczba losowana:  " << liczba << endl; // wartość 4 to przypadek
   
} // warunek nieznany, brak kodu
To co chcesz zrobić nie ma sensu. Używaj tablicy. Sensownie nazywaj zmienne.

C/C++
int liczba =( rand() %( b - a + 1 ) ) + a; // pseudo losowanie z zakresu 4 -10.
tablica[ l ] = liczba; // Tu coś mi nie pasuje, nadanie nazwy miało na celu wywołanie losowej liczby dla każdej pozycji w tabeli                                    
l++;
 mnie też
C/C++
tablica[ l++ ] = rand() %( koniecZakresu - poczatekZakresu + 1 ) + poczatekZakresu;
// i do tego nie potrzebne są komentarze, bo wiadomo co jest co
P-150289
« 1 » 2
  Strona 1 z 2 Następna strona