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

[Lekcja 19] Tablica, a funckje.

Ostatnio zmodyfikowano 2013-06-04 18:24
Autor Wiadomość
oskarkxyz
Temat założony przez niniejszego użytkownika
[Lekcja 19] Tablica, a funckje.
» 2013-06-04 16:55:45
Witam.

Jestem na lekcji 19 i za nic nie mogę sobie poradzić z przesyłaniem danych z jednej funkcji do funkcji main. Byłbym naprawdę wdzięczny gdyby ktoś rzucił okiem na ten kod i powiedział mi co jest w nim nie tak. Po kompilacji program uruchamia się po czym wyskakuje błąd i program się zamyka.

@@edit.
Tak samo jeżeli używam jednego "licznika" w funkcji to jak go "przesłać" do drugiej funkcji? Próbowałem przenieść licznik "i" z funkcji wylosujLiczby do wypiszLiczby, ale coś mi nie wyszło. Wdzięczny będę za pomoc :)

C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>

int wylosujLiczby( int tablica[], int a, int b, int c )
{
    int i;
    tablica[ i ] =(( rand() %( b - c ) ) + c );
    i = 0;
    do
    {
        tablica[ i ] =(( rand() %( b - c ) ) + c );
        i++;
    } while( i < a );
   
}

int wypiszLiczby( int tablica[], int z )
{
    std::cout << "Wylosowane liczby:";
    int i;
    i = 0;
    do
    {
        std::cout << tablica[ i ] << ", ";
        i++;
    } while( i < z );
   
}

int obliczSume( int tablica[], int h )
{
    int i;
    i = 0;
    int iSuma;
    iSuma = 0;
    do
    {
        iSuma += tablica[ i ];
        i++;
    } while( i < h );
   
}

int main()
{
    srand( time( NULL ) );
    int tablica[ 10 ];
    wylosujLiczby( tablica, 10, 4, 10 );
    wypiszLiczby( tablica, 10 );
    int iSuma = obliczSume( tablica, 10 );
    std::cout << "Suma liczb wynosi: " << iSuma << std::endl;
    return 0;
}
P-84816
Berux
» 2013-06-04 17:15:18
Pokaż nam błędy :)
P-84818
docentpp
» 2013-06-04 17:18:34
Przeczytaj dokładnie , kiedy funkcja ma zwrócić
wartość , a kiedy nie ( void)


funkcje:
wylosujLiczby
wypiszLiczby
wg Twojego algorytmu muszą być
void.


w funkcji
obliszSume nie przypisujesz jawnie
zwracanej wartości.
P-84819
oskarkxyz
Temat założony przez niniejszego użytkownika
» 2013-06-04 17:23:00
Zamieniłem funkcje z int na void, błąd ciągle ten sam. Kiedy wciskam F9 wyskakuje mi pusty cmd, a 0.1s później błąd "Wystąpił problem z aplikacją x.exe i zostanie ona zamknięta. Przepraszamy za kłopoty."
P-84820
killjoy
» 2013-06-04 18:11:17
C/C++
int wylosujLiczby( int tablica[], int a, int b, int c )
{
    int i; // nie nadajesz zadnej wartosci tej zmiennej wiec jej wartosc jest taka jaka sie jej podoba
    tablica[ i ] =(( rand() %( b - c ) ) + c ); //wiec wielce prawdopodobne iż wychodzisz poza index
    //probujac sie odwolac do indexu o wartosci zmiennej i
    i = 0;
    do
    {
        tablica[ i ] =(( rand() %( b - c ) ) + c );
        i++;
    } while( i < a );
   
}

Poprostu zainicjalizuj zmienną
i
 przy tworzeniu, lub daj
tablica[ i ] =(( rand() %( b - c ) ) + c );
 za to kiedy
i
 nadajesz wartość.
P-84829
oskarkxyz
Temat założony przez niniejszego użytkownika
» 2013-06-04 18:24:00
Dziękuję :)

zamiast
C/C++
tablica[ i ] =(( rand() %( c - b ) ) + b );
i = 0;

powinno być
C/C++
i = 0;
tablica[ i ] =(( rand() %( c - b ) ) + b );

Jak tak sobie myślałem to nie robiło mi to większej różnicy, a jednak. Jeszcze raz dziękuję :)

P-84833
« 1 »
  Strona 1 z 1