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

zadanie z poradnika

Ostatnio zmodyfikowano 2013-06-15 17:00
Autor Wiadomość
obi2exe
Temat założony przez niniejszego użytkownika
zadanie z poradnika
» 2013-06-14 21:54:10
Witam. Piszę program, który ma wylosować liczbę z przedziału wybranego przez użytkownika. Ma to wyglądać tak:
Użytkownik podaje liczbę, od której zaczynamy losowanie, następnie ma podać liczbę, która jest przedziałem tego losowania. Dlaczego to nie działa? Jak to naprawić?

C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
float losowanie( int zacznij, int skoncz )
{
    srand( time( NULL ) );
    int losowanie;
    losowanie =( rand() % zacznij ) + skoncz;
    cout << losowanie;
   
}
int main()
{
    int zacznij, skoncz;
    cout << "Podaj liczbe od ktorej zaczynamy losowanie: ";
    cin >> zacznij;
    cout << "Podaj ilosc przedzial na ktorym mozna losowac: ";
    cin >> skoncz;
    cout << "Wynik losowania to" << losowanie( zacznij, skoncz );
    return 0;
}
P-85601
MrPoxipol
» 2013-06-14 22:03:08
rand() służy do losowania liczb całkowitych, więc funkcja musi zwracać liczbę całkowitą, a nie float
w funkcji do losowania, nic nie zwracasz.
Losowanie powinno wyglądać tak:
rand() % ile_liczb + pierwsza_liczba


@down
Szybszy :P


 
P-85603
m4tx
» 2013-06-14 22:04:38
A dlaczego nie napisałeś co nie działa? :)

Zadeklarowałeś, że funkcja
losowanie()
 zwróci floata - problem w tym, że nie zwraca nic. Dodatkowo robisz takiego podwójnego couta, bo próbujesz wypisać wynik funkcji
losowanie()
, chociaż funkcja nic w praktyce nie zwraca, za to próbuje wypisać ten wynik na standardowe wyjście.
Dodatkowo wydaje mi się, że ta linijka:
losowanie =( rand() % zacznij ) + skoncz;
 powinna wyglądać tak:
losowanie = rand() % skoncz + zacznij;
, lub też
losowanie = rand() %( skoncz - zacznij ) + zacznij;
 - generalnie ciężko się domyśleć o co Ci tutaj chodziło.
P-85604
obi2exe
Temat założony przez niniejszego użytkownika
» 2013-06-14 22:12:57
Jak to funkcja nic nie zwraca? Przecież losuje i wypisuje co wylosowała. Czym się różni funkcja, która zwraca i nie zwraca? Kompletnie tego nie rozumiem, ale i w poradniku nie jest to opisane. Jak by ktoś mógł przystępnym sposobem wytłumaczyć bardzo by mi to pomógł :)
P-85607
m4tx
» 2013-06-14 22:18:52
Tu masz wszystko opisane: » Kurs C++ » Poziom 2Funkcje, a słowo kluczowe return lekcja :)
P-85608
obi2exe
Temat założony przez niniejszego użytkownika
» 2013-06-14 22:22:55
Ok. Zapoznam się z lekturą i w razie problemów jutro napiszę.
P-85609
obi2exe
Temat założony przez niniejszego użytkownika
» 2013-06-14 22:33:34
Ani słowa o tym czym funkcja zwracająca wartość jest. Brak przykładów, nic nie widać. Jeżeli ktoś potrafi łopatologicznie i dobitnie wytłumaczyć bardzo proszę :)
P-85611
pekfos
» 2013-06-15 00:14:51
Funkcja zwracająca wartość to funkcja, która zwraca wartość:
C/C++
int /* zwraca int */ f()
{
    return 5; // zwraca wartość (5)
}
Wywołanie funkcji daje wartość, jaką ta funkcja zwróciła:
C/C++
int x = f();
// f() zwraca 5, więc
//int x = 5;
P-85621
« 1 » 2
  Strona 1 z 2 Następna strona