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

Funkcja, zwracająca dwie wartości

Ostatnio zmodyfikowano 2014-12-17 09:59
Autor Wiadomość
mgrD
Temat założony przez niniejszego użytkownika
Funkcja, zwracająca dwie wartości
» 2014-12-16 21:02:05
Witam, czy da się zrobić funkcje, któa zwróci mi dwie wartości jakimś cudem?
Chciałbym przykłądowo zrobić funkcje, która mi zwróci pole trójkąta i pole kwadratu(przykłąd głupi, ale chodzi, że chcuałbym zrobić funkcje, któa zwraca dwie liczby)
P-122960
darko202
» 2014-12-16 21:18:00
Oczywiście że się da zrobić funkcję która zwróci np. 202 wartości
mówisz tylko zwrócić jakiś kontener np tablica dynamiczna, struktura, lista
jeśli K to jakiś kontener (dynamiczny lub statyczny) to przechowuje dla nas dowolną ilość elementów
np.
K fun(){ .. return K }

jest nawet tak, że  funkcja może nawet nie zwracać żadnej wartości, a przekazać nam np. 202 wartości
wystarczy jej przekazać argument w postaci adresu pamięci do jakiegoś kontenera (dynamiczny lub statyczny), który przechowuje dla nas dowolną ilość elementów
np.
void fun(&K) {..}
P-122961
mgrD
Temat założony przez niniejszego użytkownika
» 2014-12-16 21:23:06
a wnętrze funkcji jak wtedy? Bo rozumiem, że bez słowa return wtedy się to robi, tak?
P-122963
michal11
» 2014-12-16 21:33:35
Przykłady.

Kilka różnych typów:
C/C++
struct dane
{
    int a;
    double b;
    string c;
};

dane fun()
{
    dane tmp;
    tmp.a = 2;
    tmp.b = 2.2;
    tmp.c = "napis";
    return tmp;
}

Te same typy
C/C++
vector < int > fun()
{
    vector < int > tmp( 5 );
   
    //dzilania na tmp
   
    return tmp;
}
P-122967
mgrD
Temat założony przez niniejszego użytkownika
» 2014-12-16 21:40:03
i tak samo ze zwykłą tablicą?
P-122968
darko202
» 2014-12-16 21:41:47
np. drugi przypadek
C/C++
void fun( int * tablica, int * rozmiar )
{
    int rozmiar;
    cout << "Podaj rozmiar tablicy:" << endl;
    cin >> rozmiar;
    tablica = new int[ rozmiar ];
   
    tablica[ 0 ] = 11;
    tablica[ 1 ] = 12;
    tablica[ 2 ] = 13;
    .....
}

void main()
{
    int * tablica;
    int * rozmiar;
    fun( tablica, rozmiar );
    // tu już w zmiennej rozmiar masz rozmiar tablicy
    // i w tablicy nowe dane
    if( rozmiar > 0 )
         cout << * tablica[ 0 ] << "\n";
   
    ...
}

zaproponuj jak wyglądałby pierwszy
P-122969
NopeDotAvi
» 2014-12-16 22:18:58
zrób sobie klasę np Vector2 i tam będziesz miał dwa publiczne inty (np. x i y) w konstruktorze byś przypisywał wartość, potem zwracanie obydwóch by wyglądało w sposób:
C/C++
Vector2 get() const
{
    return Vector2( twojX, twojY );
    //albo
    return TwojVector;
}

a dostęp do nich to by było coś w tym stylu:

C/C++
Vector2 x = get();
x.x;
x.y;
P-122973
mgrD
Temat założony przez niniejszego użytkownika
» 2014-12-16 23:33:24
Dzięki wszystkim : )
P-122975
« 1 » 2
  Strona 1 z 2 Następna strona