Filippo9669 Temat założony przez niniejszego użytkownika |
zwracanie przez funkcję kilku wartości » 2015-11-17 13:27:59 cześć. co prawda moją przygodę z C++ zacząłem kilka lat temu, ale robiłem mało i teraz mam zamiar wziąć się za to porządnie. jednym z problemów, jakie napotkałem, jest właśnie zwracanie przez funkcję kilku wartości. niby przewija się to w tematach, jakie znalazłem, ale nigdzie nie jest jasno opisane co i dalczego. domyślam się, że należy skorzystać z wskaźników. jednak tutaj moje pomysły się kończą. prosiłbym o możliwie szczegółową pomoc.
pozdrawiam serdecznie, Filip. |
|
Szadziu |
» 2015-11-17 13:51:29 Wskaźniki: void function( int * i, int * j ) { i = new int( 3 ); j = new int( 5 ); }
referencje: void function( int & i, int & j ) { i = 2; j = 3; }
|
|
Monika90 |
» 2015-11-17 13:55:00 Można zwrócić krotkę czyli tuple, krotki są opisane tutaj http://en.cppreference.com/w/cpp/utility/tupleGdy często zwracasz ten sam zestaw danych to możesz zdefiniować własną strukturę i zwracać ją. To jest lepsze niż krotka bo ma własną nazwę i pola mają nazwy. A w tych wypadkach gdy wszystkie wartości są tego samego typu, to masz std::array albo std::vector. |
|
Filippo9669 Temat założony przez niniejszego użytkownika |
» 2015-11-19 23:57:55 dzięki za pomoc. może podam przykład. wczytuję w funkcji dane z pliku do tablicy dynamicznej i określam ich liczbę, po czym chciałbym przekazać te dane (tzn. wartości kolejnych elementów tablicy i ich liczbę) do funkcji, która je jakoś zmodyfikuje, nie wiem, obliczy średnią wartość. problem w tym, że nie wiem, jak przekazać te wartości. int * wczytanie() { int tmp1 = 0; int * tab1 = new int[ tmp1 ]; ifstream plik1; plik1.open( "liczby1.txt" ); while( !plik1.eof() ) { plik1 >> tab1[ tmp1++ ]; } plik1.close(); return( tab1 ); } proszę, nie gańcie, jeśli kod jest nieprzyzwoity, to ostatnia wersja, nad którą się bawię. niewiele umiem. pozdrawiam. |
|
michal11 |
» 2015-11-20 09:26:01 Najlepiej w tym przypadku uzyj std::vector<> |
|
Filippo9669 Temat założony przez niniejszego użytkownika |
» 2015-11-20 09:28:46 mógłbyś jakoś pokazać, jak się w tym przypadku posłużyć? |
|
Filippo9669 Temat założony przez niniejszego użytkownika |
» 2015-11-20 11:52:50 okej, jeszcze raz. mam taki oto kod: int * wczytanie1() { int tmp1; int * tab1 = new int[ tmp1 ]; int a; ifstream plik1; plik1.open( "liczby1.txt" ); while( !plik1.eof() ) { plik1 >> tab1[ tmp1 ]; cout << tab1[ tmp1 ] << endl; tmp1++; } plik1.close(); a = sizeof( tab1 ); delete[] tab1; return( tab1 ); }
int najwiekszy() { int najw; for( int i = 0; i < ; i++ ) { if( > najw ) = najw; else najw; } return najw; }
funkcja wczytująca dane z pliku do tablicy dynamicznej i przekazująca tę tablicę do drugiej funkcji, która np. będzie wyszukiwać i zwracać jej największy element. trudność, jaką mam, to przekazanie tej tablicy z funkcji wczytanie do funkcji najwiekszy. |
|
carlosmay |
» 2015-11-20 12:10:11 a = sizeof( tab1 );
delete[] tab1;
return( tab1 ); }
tutaj usuwasz tablicę nim ją zwrócisz. Jeśli chcesz dalej z niej korzystać nie możesz tego zrobić. Przekazanie tej tablicy do funkcji 'najwiekszy()': wywołaj tą funkcję a tablicę przekaż w argumencie. |
|
« 1 » 2 |