• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

funkcje podstawy małe pytanko c++

0 głosów
610 wizyt
pytanie zadane 17 kwietnia 2025 w C i C++ przez emce1996 Nowicjusz (190 p.)

cześć otóż ostatnio mnie natchnęło i zacząłem bawić się w c++ kiedyś mnie to bawiło i bawi dalej ale szybko porzucam jeszcze teraz z pracą na głowie ojej, mianowicie:

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

int wylosuj(int start, int stop)
{
    int wylosowana = rand() % stop + start;

   return wylosowana;
}
int sprawdz(int a, int b)
{
    int wynik=0;
    for(int i=a; i<b; i++)
    {
        wynik++;
    }
    return wynik;

}


int main()
{
    srand(time(NULL));

    cout << "podaj przedzial liczb do wylosowania (od do)\n";
    int a,b;
    cout << "od: ";
    cin >> a;
    cout << "do: ";
    cin >> b;
    b += 1; //czemu nie dziala to po dodaniu 1 w funkcji
    b = sprawdz(a, b);
    cout << "tu: " << b << endl;// test
    for(int i = 0; i<20; i++){
    int wylosowana;
    wylosowana= wylosuj(a,b);
    cout << wylosowana << endl;
    }

    return 0;
}

tak jak w kodzie czemu nie działa b += 1 w funkcji ? 

komentarz 18 kwietnia 2025 przez Oscar Nałogowiec (29,420 p.)
Tak ogólnie to twaja funkcja nie generuje liczb od start do stop (przedział otwarty) tylko od start do start+stop.
komentarz 20 kwietnia 2025 przez emce1996 Nowicjusz (190 p.)
jak przecież działa normalnie najpierw użytkownik podaje od jakiej do jakiej mają być losowane liczby potem nastepna funkcja sprawdza ile jest liczb między a i b i podmienia b

1 odpowiedź

+1 głos
odpowiedź 17 kwietnia 2025 przez wizarddos Nałogowiec (28,110 p.)
Ponieważ w linii 34 ustawiasz b na wylosowaną liczbę - tym samym nadpisując to +1

Dodaj cout z 35 linii ponad wywołanie funkcji "sprawdz" i zobacz, że wszystko działa prawidłowo
komentarz 17 kwietnia 2025 przez emce1996 Nowicjusz (190 p.)
nie o to mi chodziło b+1 jest do losowania pierwszy raz jak to robiłem to napisałem to w funkcji i nie dawało to oczekiwanych efektów dopiero jak to zrobiłęm poza funkcją to działa prawidłowo i chodzi o funkcję wylosuj()
komentarz 17 kwietnia 2025 przez wizarddos Nałogowiec (28,110 p.)
To tak z polskiego na nasze:

Dodałeś b+1 do funkcji i nie działało, a gdy wyrzuciłeś je do main'a to już działa?
komentarz 17 kwietnia 2025 przez emce1996 Nowicjusz (190 p.)
no właśnie tak i nie rozumie tego :d
komentarz 17 kwietnia 2025 przez emce1996 Nowicjusz (190 p.)
ej dobra bo teraz zrobiłem po staremu i działa lol, chyba coś spieprzyłem wcześniej
komentarz 17 kwietnia 2025 przez wizarddos Nałogowiec (28,110 p.)
Ogólnie to zmienna b jest zadeklarowana jedynie w funkcji "main" - co znaczy że tylko instrukcje w main ją "widzą"

Aby to zadziałało w "wylosuj" musiałbyś inkrementować zmienną stop (zalecane), albo zadeklarować zmienną globalną a.ka poza funkcją (niezalecane)

W tym temacie p[oczytaj sobie o zasięgu zmiennych i różnicy między zmiennymi globalnymi, a lokalnymi
1
komentarz 17 kwietnia 2025 przez emce1996 Nowicjusz (190 p.)

dobra dzięki za odpowiedź ale mam teraz pranie mózgu wcześniej miałem taki problem że jak ikrementowałem zmienną b w funkcji wylosuj() to jak chciałem np losować ood 0 do 10 to 10 nie losowało dopiero to działało jak to zrobiłęm w funkcji "main" ale teraz działa to albo ja się pomyliłem i zrobiłem jakiś błąd którego nie zauważyłem albo kompilator coś spieprzył w co wątpie indecision

Podobne pytania

0 głosów
2 odpowiedzi 619 wizyt
pytanie zadane 11 listopada 2015 w C i C++ przez Memories Obywatel (1,410 p.)
+1 głos
3 odpowiedzi 387 wizyt
pytanie zadane 14 marca 2019 w Matematyka, fizyka, logika przez NoName36738 Początkujący (340 p.)
0 głosów
1 odpowiedź 222 wizyt
pytanie zadane 30 marca 2019 w Java przez gorgonkowa Obywatel (1,810 p.)

93,753 zapytań

142,713 odpowiedzi

323,356 komentarzy

63,347 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...