Cichyy7 Temat założony przez niniejszego użytkownika |
Przesyłanie wyniku losowania 999 elementow tablicy do funkcji main. » 2016-01-09 22:53:25 Witam. Napisałem program, który ma wylosować 999 liczb z przedziału wpisanego przez użytkownika i wypisać je na ekran. Problem w tym, że program wypisuje tylko jedną wylosowaną liczbę, a nie 999 jak wskazuje zakres tablicy. Proszę o pomoc z programem. Wklejam kod źródłowy. #include <iostream> #include <cstdlib> #include <cstdio> #include <ctime>
using namespace std;
int wylosuj( int start, int stop, int tablica[] ) { int i = 0; do { srand( time( NULL ) ); tablica[ i ] =( rand() %( stop - start ) + 1 ) + start; return tablica[ i ]; i++; } while( i < 999 ); }
int main() { int a, b; int tablica[ 999 ]; cout << "Zostanie wylosowanych 999 liczb. Podaj ich zakres: " << endl; cout << "Od: "; cin >> a; cout << "Do: "; cin >> b; cout << wylosuj( a, b, tablica ); return 0; }
|
|
1aam2am1 |
» 2016-01-09 23:12:16 cout << wylosuj( a, b, tablica ); // Funkcja losuje 999 liczb z przedzialu a i b.
To jest wyświetlanie wyniku funkcji wylosuj, nie tablicy |
|
carlosmay |
» 2016-01-09 23:16:04 int wylosuj( int start, int stop, int tablica[] ) { int i = 0; do { srand( time( NULL ) ); tablica[ i ] =( rand() %( stop - start ) + 1 ) + start; return tablica[ i ]; i++; } while( i < 999 ); }
|
tablicy nie można tak zwrócić z funkcji (nie da się przypisać tablic do siebie). Poza tym przekazana jest tablica do funkcji, więc wystarczy ją nadpisać wartościami losowanymi i gotowe. Wtedy funkcja nie powinna niczego zwracać. |
|
Cichyy7 Temat założony przez niniejszego użytkownika |
» 2016-01-09 23:57:19 Umiem napisać program by to zadziałało. Wygląda to tak. #include <iostream> #include <cstdlib> #include <cstdio> #include <ctime>
using namespace std;
int wylosuj( int start, int stop, int tablica[] ) { int i = 0; srand( time( NULL ) ); do { tablica[ i ] =( rand() %(( stop + 1 ) - start ) ) + start; cout << "Liczba: " << i + 1 << " = " << tablica[ i ] << endl; i++; } while( i < 999 ); }
int main() { int a, b; int tablica[ 999 ]; cout << "Zostanie wylosowanych 999 liczb. Podaj ich zakres: " << endl; cout << "Od: "; cin >> a; cout << "Do: "; cin >> b; wylosuj( a, b, tablica ); return 0; }
Mój problem jest taki, że nie wiem jak przesłać wyniki z funkcji: wylosuj() do funkcji main(). Koniecznie chcę aby operacja która wypisuje te liczby była w funkcji main(). Wersja z return tablica nie działa. Napisaliście że cout który umieściłem w funkcji main() wypisuje jedną wartość. Chodzi o to: cout << wylosuj( a, b, tablica ); Chce by ten cout wypisał cała tablicę, czyli 999 liczb. Podsumowując chce w funkcji wylosuj() zamieścić takiego returna (lub coś innego niż return), który pozwoli operatorowi cout(lub innej operacji do tego stworzonej) w fuckcji main() wyświetlić wszystkie 999 liczb z ustalonego przedziału. Przepraszam że tak mieszam. |
|
carlosmay |
» 2016-01-10 01:10:14 chce w funkcji wylosuj() zamieścić takiego returna (lub coś innego niż return), |
Nie ma takiej potrzeby. Funkcja powinna być typu void . Przekazaną tablicę wypełniasz i to wszystko. Po powrocie do main() dane w tablicy będą. który pozwoli operatorowi cout(lub innej operacji do tego stworzonej) w fuckcji main() wyświetlić wszystkie 999 liczb |
Taką operację wykonać możesz w pętli. Jak zapis do tablicy wylosowanych wartości. Przydatny link: Przekazywanie tablic do funkcji |
|
Cichyy7 Temat założony przez niniejszego użytkownika |
» 2016-01-10 02:02:41 Ok, udało się. Faktycznie nie trzeba stosować polecenia return. Bardzo dziękuje za pomoc! :) Dla zainteresowanych wklejam cały kod źródłowy działającego programu. #include <iostream> #include <cstdlib> #include <cstdio> #include <ctime>
using namespace std;
void wylosuj( int start, int stop, int losowana[] ) { srand( time( NULL ) ); int i = 0; do {; losowana[ i ] =( rand() %(( stop + 1 ) - start ) ) + start; i++; } while( i < 999 ); }
int main() { int a, b; int tablica[ 999 ]; int i = 0; cout << "Zostanie wylosowanych 999 liczb. Podaj ich zakres: " << endl; cout << "Od: "; cin >> a; cout << "Do: "; cin >> b; wylosuj( a, b, tablica ); do { cout << "Liczba: " << i << " = " << tablica[ i ] << endl; i++; } while( i < 999 ); return 0; }
Pozdrawiam, Przemek |
|
« 1 » |