[C++] Losowanie określonych liczb


(Puczi19021998) #1

Witajcie, uczę się programowania z kursu: http://cpp0x.pl/kursy/Kurs-C++/1 i mam problem, ponieważ albo jestem ślepy (prawdopodobnie), albo w tym kursie nie napisano na jakiej zasadzie mam wykonać część zadania z tego kursu, którą jest wylosowanie liczb podanych przez użytkownika. Co mam zrobić?


(Drobok) #2

Pobierasz liczby do tablicy a potem losujesz jej elementy. 


(Puczi19021998) #3

Mógłbyś jakoś rozpisać? Bo jestem zaciemniony i nie do końca łapię.


(kostek135) #4
  1. Pytasz ile liczb wprowadzić (n)

(Puczi19021998) #5

Zrobiłem coś, źle i nie wiem jak to naprawić:

#include iostream
#include cstdlib
#include ctime
using namespace std;

int tablica()
{
int n[3];
cout "Podaj trzy liczby do losowania:" endl;
cin n[0];
cout endl;
cin n[1];
cout endl;
cin n[2];
cout endl;
return n[3];
}

int main()
{
    cout "Witaj w Maszynie losujacej v0.04!";
    cout "Wylosowane liczby to:";
    int a;
    int b;
    cout a = tablica[rand() % 3] ", ";
    cout b = tablica[rand() % 3] endl;
    return 0;
}

Błędy:

 

||In function 'int main()':expressionless:


(kostek135) #6

U ciebie tablica jest funkcją, u mnie była tablicą, więc stosowanie nawiasów kwadratowych w twoim przypadku jest niezasadne. Przerób tablicę na tablicę. Zmienne wczytuj w mainie (daruj sobie na razie funkcje, bo widać, że ich nie rozumiesz).


(enedil) #7

Poza tym zwracasz tablicę intów, a funkcja jest typu int.


(M Kuczewski) #8

kostek miał raczej na myśli taką konstrukcję:

int main()
{
pytasz o ilosc liczb - n

int* tablica = new int[n];

uzytkownik uzupelnia tablice

losowaLiczba = tablica[rand()%n];

dalsza czesc programu

delete [] tablica;
return 0; }

Co do twojego kodu:

Poćwicz proste funkcje aby zrozumieć ich działanie. Musisz poza tym zapamiętać elementarną prawdę - w C++ tablice indeksujemy od 0 do N-1 !!

 

int tab[3] tworzy tablicę trójelementową - czyli patrząc na powyższe masz - tab[0] tab[1] tab[2] - koniec. A co zwracasz jako wynik funkcji?

return tab[3] - w tym momencie zwróciłeś jakiś wycinek pamięci nie należący do twojego programu :slight_smile: