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

[C++]Przekazywanie tablic jednowymiarowych do funkcji

Ostatnio zmodyfikowano 2014-01-26 10:50
Autor Wiadomość
Arkhangelsk
Temat założony przez niniejszego użytkownika
[C++]Przekazywanie tablic jednowymiarowych do funkcji
» 2014-01-25 19:45:53
Witam, mam pytanie co do zadania 19.
Oto treść.

Napisz program, który wylosuje 999 liczb całkowitych z zakresu od 4 do 10 włącznie, wypisze te wartości na ekran, po czym zsumuje je i wynik wypisze na ekran. Wszelkie operacje mają zostać zrealizowane w oparciu o funkcje. Tablica ma być zadeklarowana w funkcji main. Oczekiwane funkcje:

    Wypełnienie tablicy o podanym rozmiarze losowymi liczbami z przedziału podawanego przez argumenty funkcji.
    Sumowanie określonej ilości liczb znajdujących się w tablicy i zwrot wyniku.
    Wypisywanie zawartości tablicy.

Przykładowa implementacja funkcji main:
C/C++
int main()
{
    int tablica[ 999 ];
    wylosujLiczby( tablica, 999, 4, 10 );
    wypiszLiczby( tablica, 999 );
    int iSuma = obliczSume( tablica, 999 );
    std::cout << "Suma liczb wynosi: " << iSuma << std::endl;
    return 0;
}

A oto mój program
C/C++
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;

void wylosujLiczby( int t[], int i, int start, int stop )
{
    srand( time( NULL ) );
    cout << "Program wylosuje teraz " << i << " liczb" << " z przedzialu " << start << " - " << stop << endl;
    i = 0;
    do
    {
        t[ i ] =( rand() %( stop - start ) + 1 ) + start;
        i++;
    } while( i < 999 );
   
}

void wypiszLiczby( int t[], int i )
{
    cout << "Teraz wypisze liczby, ktore udalo mi sie zaladowac" << endl;
    i = 0;
    do
    {
        cout << t[ i ] << ", ";
        i++;
    } while( i < 999 );
   
    cout << "." << endl;
}

int obliczSume( int t[], int i ) //w zwiazku z moim problemem bylem zmuszony zastapic void intem
{
    cout << endl << "Ostatni krok, teraz zsumuje wszystkie wylosowane liczby \n\n";
    i = 0;
    int suma = 0;
    do
    {
        suma = suma + t[ i ];
        i++;
    } while( i < 999 );
   
    return suma; //return uzyte na sile, chyba nie powinno go tu byc
}

int main()
{
    int tablica[ 999 ];
    wylosujLiczby( tablica, 999, 4, 10 );
    wypiszLiczby( tablica, 999 );
    int iSuma = obliczSume( tablica, 999 );
    cout << "Suma liczb wynosi: " << iSuma << endl;
    return 0;
}
Program działa, to do czego mam zastrzeżenia zaznaczyłem w kodzie, moje pytanie brzmi: czy da się to rozwiązać z użyciem funkcji void? Jeśli tak to jak. Bo trochę źle się z tym czuje, nie wiem czy w zamyśle twórcy kursu było, aby tak to rozwiązać.
P-103184
stryku
» 2014-01-25 22:57:18
Można. Możesz przekazać w parametrze funkcji wskaźnik na sumę i zapisać tam wartość po prostu
P-103202
Monika90
» 2014-01-26 00:55:27

C/C++
return suma; //return uzyte na sile, chyba nie powinno go tu byc
To nie jest na siłę - to jest najbardziej naturalny sposób napisania takiej funkcji.
P-103208
Arkhangelsk
Temat założony przez niniejszego użytkownika
» 2014-01-26 10:50:05
Z tym na siłę miałem bardziej na myśli, że wcześniej w kursie nie było to omówione, jednak wydało mi się logiczne, że trzeba tam tego użyć.
@stryku
Rzeczywiście, zrobiłem jak mówisz i działa :D Chyba za długo nad tym siedziałem, że najprostsze rozwiązanie nie przyszło mi do głowy. Dzięki, temat można uznać za zamknięty.
P-103216
« 1 »
  Strona 1 z 1