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

Probem z losowaniem liczb w funkcji

Object Storage Arubacloud
0 głosów
139 wizyt
pytanie zadane 18 kwietnia 2017 w C i C++ przez Tomatek Początkujący (260 p.)
Witam, mam taki problem. Napisałem program, który losuje liczby bez powtórzeń, przedział liczb i krańce przedziału są określone przez użytkownika, ten program działa i jest wszystko okey. Problem się zaczyna wtedy gdy chce losowanie zawrzeć w funkcji losuj i wywołać ją w main razem z rezorwowaniem i zwalnianiem pamięci. NIestety wywala mi błąd, próbowałem go jakoś rozwiązać, lecz bez skutku. Poniżej wklejam kod:

https://pastebin.com/Kw5scXzx
komentarz 18 kwietnia 2017 przez Satpol Początkujący (310 p.)
W funkcji tylko wylosuj liczbę, po co całą tablicę tworzyć jeszcze raz?? Do funkcji wyślij tylko zakres losowania i zwróc wylosowaną liczbę.

4 odpowiedzi

0 głosów
odpowiedź 18 kwietnia 2017 przez 10kw10 Pasjonat (22,880 p.)

W main:

tab[i] = losuj(int ilosc, poczatek, int koniec);

Co to jest i ? Chcesz przekazac zmienna, a nie deklarowac nowa - bez slowka int.

W funkcji losuj poza forem masz:

return tab[i];

tak samo nie wie skad sie wzielo i.

0 głosów
odpowiedź 18 kwietnia 2017 przez MararOn Bywalec (2,620 p.)
Do funkcji rand i srand potrzebujesz biblioteki cstdlib.
0 głosów
odpowiedź 18 kwietnia 2017 przez Satpol Początkujący (310 p.)
#include <iostream>
#include <time.h>
#include <windows.h>

using namespace std;
 
int losuj(int poczatek, int koniec)
{
   int liczba = rand()% (poczatek-koniec)+poczatek;
   return liczba;
}
 
int main()
{
  int ilosc, poczatek, koniec;
  
    cout << "Czesc, podaj ile liczb wyloscowac:"<< endl;
    cin>>ilosc;
	
	int *tab = new int[ilosc];

    cout<< "Podaj poczatek przedzialu: "<<endl;
    cin>>poczatek;
 
    cout<< "Podaj koniec przedzialu: "<<endl;
    cin>>koniec;
    cout<<"\n";
 
	srand(time(NULL));

	for(int i = 0; i < ilosc; i++)
		tab[i]=losuj(poczatek, koniec);
	
	for(int y = 0; y < ilosc; y++)
		cout<<tab[y]<<" ";

	system("pause");
    delete [] tab;
return 0;
}

 

0 głosów
odpowiedź 18 kwietnia 2017 przez Tomatek Początkujący (260 p.)
Dziękuje wszystkim za podpowiedzi, program udało mi sie poprawić. Pozdrawiam

Podobne pytania

0 głosów
4 odpowiedzi 723 wizyt
pytanie zadane 20 grudnia 2015 w C i C++ przez Munvik Dyskutant (9,350 p.)
+1 głos
1 odpowiedź 323 wizyt
pytanie zadane 4 lutego 2021 w C i C++ przez NukaNuka56 Obywatel (1,080 p.)
0 głosów
1 odpowiedź 647 wizyt

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...