Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Przesyłanie wyniku losowania 999 elementow tablicy do funkcji main.

Ostatnio zmodyfikowano 2016-01-10 02:02
Autor Wiadomość
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.
C/C++
#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 ); // Funkcja losuje 999 liczb z przedzialu a i b.
    return 0;
}
P-143233
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
P-143236
carlosmay
» 2016-01-09 23:16:04
C/C++
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 ]; // wyjscie z funkcji z wartoscia tablica[i] w pierwszym przebiegu petli
        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ć.
P-143238
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.
C/C++
#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 ); // Funkcja losuje 999 liczb z przedzialu a i b.
    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.
P-143242
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
P-143247
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.
C/C++
#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 ); // Funkcja losuje 999 liczb z przedzialu a i b.
    do
    {
        cout << "Liczba: " << i << " = " << tablica[ i ] << endl;
        i++;
    } while( i < 999 );
   
    return 0;
}
Pozdrawiam,
Przemek
P-143249
« 1 »
  Strona 1 z 1