Przekazywanie z funkcji 2 wartości w tablicy.
Ostatnio zmodyfikowano 2017-12-13 21:06
dartpizza88 Temat założony przez niniejszego użytkownika |
Przekazywanie z funkcji 2 wartości w tablicy. » 2017-12-13 18:50:05 Cześć mam drobny problem, mam stworzyć dynamiczną tablice, przekazać ją do funkcji i policzyć sumę parzystych wyrazów i zwrócić wynik. Stworzyłem coś takiego #include <iostream> using namespace std;
int * funkcja( int tab1[], int rozmiar );
int main() { int r; cout << "Podaj wymiar tablicy A" << endl; cin >> r; int * tabA = new int[ r ]; int * wsk = new int[ r ]; cout << "Tablica A:" << endl; for( int i = 0; i < r; i++ ) { cout << "Podaj wyraz" << endl; cin >> tabA[ i ]; } wsk = funkcja( tabA, r ); for( int i = 0; i < 2; i++ ) { cout << wsk[ i ] << " "; } delete[] tabA; return 0; } int * funkcja( int tab1[], int rozmiar ) { int tab3[ 2 ]; int p, np; for( int i = 0; i < rozmiar; i++ ) { if( tab1[ i ] % 2 == 0 ) { p += tab1[ i ]; } else { np += tab1[ i ]; } } tab3[ 0 ] = p; tab3[ 1 ] = np; return tab3; } Program oczywiście nie działa poprawnie, zwraca wartość z kosmosu ale sam sposób liczenia dział. Co trzeba poprawić/zmienić? |
|
nanoant20 |
» 2017-12-13 19:09:58 zacznijmy od tego, że tworzsz 2 tablice dynamiczne int * tabA = new int[ r ]; int * wsk = new int[ r ];
i dalej nie wiem czy ten wskaźnik chcesz ustawić na funkcje czy na tablce? jeśli w kodzie widzę to for( int i = 0; i < 2; i++ ) { cout << wsk[ i ] << " "; }
to wskażnik wsk powiniec być ustawiony na tabA |
|
dartpizza88 Temat założony przez niniejszego użytkownika |
» 2017-12-13 19:15:02 Czyli to ma tak wyglądać? int * tabA = new int[ r ]; int * wsk = tabA; No tylko co dalej jest nie tak? |
|
Luq |
» 2017-12-13 19:22:38 Zmienne p i np nie są zainicjowane. Zwracasz z funkcji adres tablicy lokalnej, co też jest błędem. policzyć sumę parzystych wyrazów i zwrócić wynik |
To czemu zliczasz też nieparzyste? |
|
dartpizza88 Temat założony przez niniejszego użytkownika |
» 2017-12-13 19:30:19 Co do zliczania to przy przepisywaniu się pomyliłem mają być nieparzyste i parzyste, co do inicjalizacji moje przeoczenie. Co do zwracania, jak to przerobić by było ok? Program zlicza poprawnie parzyste, przy nie parzystych ciągle zwraca 1. |
|
Luq |
» 2017-12-13 19:36:34 Może po prostu zwróć parę tych wartości #include <utility>
return std::make_pair( p, np ); |
|
dartpizza88 Temat założony przez niniejszego użytkownika |
» 2017-12-13 19:59:35 Kompilator nie chce tego łyknąć, "SumowanieNPiPwT.cpp|64|error: cannot convert 'std::pair<int, int>' to 'int*' in return|"
|
|
Luq |
» 2017-12-13 20:39:16 Bo nie zmieniłeś wartości zwracanej. Funkcja powinna zwracać std::pair<int, int>, a nie int*. |
|
« 1 » 2 |