Strona 1 z 1

[C++] Zamiana wartości zmiennych przez wskaźniki

: 6 sty 2016, o 19:07
autor: koralina19
Czy ktoś mi mógł pomóc, napisałam program i nie wiem jak naprawić błędy, które wyskakują.
Treść zadania: Napisz funkcję otrzymującą jako argumenty wskaźniki do dwóch zmiennych typu int, która zamienia ze sobą wartości wskazywanych zmiennych.

Kod: Zaznacz cały

#include <iostream>

using namespace std;


int funkcja(int *a, int *b, int *c )
{
    *c=*a;
    *a=*b;
    *b=*c;
    return *a,*b;
}

int main()
{
    int x,y;
    int *a,*b;

    cout<<"Podaj x:";
    cin>>x;
    cout<<"Podaj y:";
    cin>>y;
    a = &x;
    b = &y;
    cout<<"liczb x po zmianie:"<<funkcja(a);
    cout<<"liczb y po zmianie:"<<funkcja(b);
    return 0;
}

[C++] Zamiana wartości zmiennych przez wskaźniki

: 6 sty 2016, o 21:10
autor: mortan517
Napisałaś funkcję, która przyjmuje trzy argumenty, a używasz ją z jednym.

[C++] Zamiana wartości zmiennych przez wskaźniki

: 8 sty 2016, o 14:53
autor: BKDev
koralina19 pisze:

Kod: Zaznacz cały

int funkcja(int *a, int *b, int *c ) // po co jest trzeci wskaźnik? Błąd?
{
    *c=*a; // możnaby użyć po prostu funkcji swap (poczytaj o bibliotece standardowej)
    *a=*b;
    *b=*c;
    return *a,*b;
}
Nie musisz niczego zwracać w funkcji, bo zmiany zostały już dokonane.
Wskaźniki działają bardzo podobnie do referencji w tym przypadku, nie tworzy się kopii danych, a wskaźnik, który wskazuje dany element w pamięci.
koralina19 pisze:

Kod: Zaznacz cały

int main()
{
    int x,y;
    int *a,*b;

    cout<<"Podaj x:";
    cin>>x;
    cout<<"Podaj y:";
    cin>>y;
    a = &x;
    b = &y;
    cout<<"liczb x po zmianie:"<<funkcja(a); // Błąd?
    cout<<"liczb y po zmianie:"<<funkcja(b); // Błąd?
    return 0;
}
W deklaracji podałaś, że funkcja przyjmuje 3 argumenty, a podajesz tylko jeden.