losowanie liczb z przedziału

0

Cześć. Mam do napisania na zajęcia następującą rzecz.

Napisać funkcję który losuje N liczb całkowitych z przedziału <a, b> i oblicza średnią liczb
nieparzystych z podanego przedziału. Funkcja zwraca obliczoną wartość.
Do funkcji należy przekazać N, a, b.
W funkcji main() wypisać obliczoną średnią

Utknąłem jednak już na pierwszej części tego zadania. Chciałem zrobić tak, żeby wypisać sobie na ekran losowane liczby, żeby sprawdzić poprawność tego co napisałem, jednak zupełnie mi to nie wychodzi. Nie wiem co i jak zrobić żeby ruszyć z tym zadaniem. Poniżej wrzucam to co wyczarowałem, mam nadzieję że mnie nie zlinczujecie za błędy jakie tam są bo pewnie są to podstawowe rzeczy i bardzo łatwe jednak dopiero zaczynam przygodę z progamowaniem.

#include <iostream>
#include <cstdlib>
using namespace std;

int losowanie (int N, int a, int b)
{
int x,i;

    for (i=1; i<=N; i++)
    {
        x=(rand()%((b-a)+1))+a;
    }
 return x;
}

int main()
{
    int a,b,N,liczba;
    cout << "podaj:a " << endl;
    cin>>a;
    cout << "podaj:b " << endl;
    cin>>b;
    cout << "podaj:N " << endl;
    cin>>N;
    liczba=losowanie(a,b,N);
    cout<<liczba<<endl;
    return 0;
1

Piszesz, że chciałeś wypisać na ekranie te liczby, które losujesz - jednak nic takiego nie robisz.
Losowania dokonujesz w funkcji losowanie, gdzie nie ma żadnego wypisywania na ekran.

Sugerowałbym podejść do tematu powoli - najpierw napisz funkcję int rand_range(int from, int to), która będzie zwracać pseudolosową liczbę z zakresu <from, to>.

0

Czyli ta moja funkcja losowanie nie jest poprawnie zapisana? Tam nie zajdzie losowanie liczb z przedziału?
To wypisanie liczb na ekran miało zajść w mainie i tam miało zostać wypisane

0

Zachodzi tam jakieś losowanie liczb, lecz chcę Ci pokazać, jak podejść do tego sensowniej, czytelniej oraz prościej ;-)

0

Rozumiem, jednak wymagają od nas korzystania jedynie z tego co było przedstawione na wykładach. A tam mieliśmy losowanie liczb w takiej formie jaką ja przedstawiłem.

0

Rozumiesz, że nie każę Ci zmieniać samego algorytmu losowania, tylko proponuję - dla czytelności - wydzielić to do odrębnej funkcji?

Tak czy siak - bazując na tym, co masz, jest tam parę błędów:

  • nie widzę żadnego sumowania,
  • nie widzę żadnego sprawdzania parzystości.

Na czym konkretnie się zatrzymałeś?

0

Twoja funkcja nie działa poprawnie ponieważ zwraca tylko jedną wartość, a ma ich zwróć N. Aby zrobić to w jednej funkcji musisz stworzyć wewnątrz tablice N-elementową i do niej wpisać wszystkie wyniki x, które wyliczasz. Na koniec przypisujesz funkcje do tablicy w metodzie main i wpisujesz wyniki w pętli for. Spróbuj sam ogarnąć to na podstawie tego co Ci napisałem to więcej zapamiętasz i zrozumiesz.

0

Patryk27- zatrzymałem się na samym losowaniu drugiej części jeszcze nie ruszałem. Chciałem teraz zrobić tak że losuje N liczb i w mainie je wypisuje, chciałem to zrobić tylko dla siebie żeby sprawdzic czy liczby dobrze się losują.
Vens- nie miałem jeszcze tablic. Zaczne je dopiero na następnych zajęciach.

0

Bez wykorzystania tablic możesz najwyżej te liczby wypisywać z poziomu funkcji losowanie (dopisz cout << x << endl; do pętli).

0

Okej to w takim razie porzuce ten pomysł z wypisaniem bo w sumie i tak jest to nie potrzebne. Spróbuję dopisać do tej funkcji od razu sprawdzenie przystości mojego x i liczenie średniej.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0