Przekazywanie tablic do funkcji
Ostatnio zmodyfikowano 2015-08-04 17:32
badgeer Temat założony przez niniejszego użytkownika |
Przekazywanie tablic do funkcji » 2015-08-04 16:01:45 Witam, Mam taki mały problem związany z przekazywaniem tablic do funkcji. Niby wszystko działa, ale dopisuje mi jakieś 0 na końcu i tym samym zmienia sumowanie liczb na jakieś kosmiczne. Dzieje się tak w każdym przypadku. Czy tablice zrobię wewnątrz funkcji, czy wezmę tablice z main'a. Działa tylko w przypadku kiedy wszystko jest w main, ale przecież nie o to w tym chodzi. Tutaj kod, który napisałem. Nie wiem czy druga funkcja od sumowania jest w ogóle potrzebna, ale po prostu szukałem błędów. Zmieniłem z 999 na 10, żeby szybciej widzieć co z sumą. #include <iostream> #include <cstdlib> #include <time.h>
using namespace std;
int losowe( int t[], int rozmiar ) { srand( time( NULL ) ); int i = 0; do { i++; t[ i ] =( rand() % 7 ) + 4; cout << "Liczba " << i << " to " << t[ i ] << endl; } while( i < rozmiar ); }
int suma( int t[], int rozmiar ) { for( int i = 0; i < rozmiar; i++ ) { int suma = 0; suma += t[ i ]; } cout << endl << "Suma to: " << suma; }
int main() { int liczby[ 10 ]; cout << losowe( liczby, 10 ) << endl; cout << suma( liczby, 10 ) << endl; return 0; }
|
|
JMII89 |
» 2015-08-04 16:47:02 i++; t[ i ] =( rand() % 7 ) + 4; cout << "Liczba " << i << " to " << t[ i ] << endl; //suma+=t;
Nie zapisujesz nic do zerowego indeksu bo za szybko inkrementujesz i . |
|
carlosmay |
» 2015-08-04 17:04:20 for( int i = 0; i < rozmiar; i++ )
{ int suma = 0; suma += t[ i ]; }
A to co za ufo? W kazdej pętli na nowo definiujesz zmienną suma wartością 0. Zrób to przed pętla bo suma wyniesie tyle co ostatni elem tablicy. |
|
badgeer Temat założony przez niniejszego użytkownika |
» 2015-08-04 17:13:21 Poprawiłem błędy, które słusznie zauważyliście, ale w dalszym ciągu nie działa sumowanie liczb. Obecny kod: #include <iostream> #include <cstdlib> #include <time.h>
using namespace std;
int losowe( int t[], int rozmiar ) { srand( time( NULL ) ); int suma = 0; int i = 0; do { t[ i ] =( rand() % 7 ) + 4; cout << "Liczba " << i << " to " << t[ i ] << endl; suma += t[ i ]; i++; } while( i < rozmiar ); cout << endl << "Suma to: " << suma; }
int main() { int liczby[ 10 ]; cout << losowe( liczby, 10 ) << endl; return 0; }
Pozbyłem się dodatkowej funkcji sumy. Zauważyłem, że liczby się sumują dobrze. Z tym, że wynik przedstawiany jest z zawsze dodatkowymi takimi samymi liczbami. Przykład: "Suma to: 734683872" 73 jest to suma dodanych liczb i się zawsze zgadzają. 4683872 pojawia się zawsze. Mogę program 20 razy uruchomić i zawsze dwie pierwsze przedstawiają sumę liczb losowych, a reszta jest ta sama. |
|
badgeer Temat założony przez niniejszego użytkownika |
» 2015-08-04 17:21:53 Achhh chyba zmęczony jestem przez ten upał. Nie dałem w funkcji żadnego returna. Wysyłało pewnie jakieś śmieci. Oczywiście wszystko już działa. Kod dla innych, gdyby kiedykolwiek mieli taki problem jak ja. #include <iostream> #include <cstdlib> #include <time.h>
using namespace std;
int losowe( int t[], int rozmiar ) { srand( time( NULL ) ); int suma = 0; int i = 0; do { t[ i ] =( rand() % 7 ) + 4; cout << "Liczba " << i << " to " << t[ i ] << endl; suma += t[ i ]; i++; } while( i < rozmiar ); return suma; }
int main() { int suma; int liczby[ 10 ]; cout << losowe( liczby, 10 ) << endl; cout << endl << "Suma to: " << suma; return 0; }
Dziękuję wszystkim za pomoc ! ;] |
|
carlosmay |
» 2015-08-04 17:32:16 Po piersze funkcja ma zwrócić wartość int a nie zwraca. Po drugie jak wypiszesz wynik sumy w funkcji a później w main będzie dwa razy. Teraz masz takie bzdury na ekranie bo funkcja liczy dobrze i wypisuje Dobrze natomiast w main wypisuje wartość śmieciową bo noe zwracasz wartości z funkcji.
Edit. Spóźnione.
|
|
« 1 » |