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

koralina19
Użytkownik
Użytkownik
Posty: 48
Rejestracja: 6 gru 2015, o 00:59
Płeć: Kobieta
Lokalizacja: Warszawa
Podziękował: 1 raz

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

Post 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;
}
Ostatnio zmieniony 6 sty 2016, o 21:52 przez Afish, łącznie zmieniany 2 razy.
Powód: Staraj się lepiej dobierać nazwy tematów, tak by wskazywały o czym jest treść zadania.
Awatar użytkownika
mortan517
Użytkownik
Użytkownik
Posty: 3359
Rejestracja: 6 lis 2011, o 15:38
Płeć: Mężczyzna
Lokalizacja: Krk
Podziękował: 112 razy
Pomógł: 662 razy

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

Post autor: mortan517 »

Napisałaś funkcję, która przyjmuje trzy argumenty, a używasz ją z jednym.
BKDev
Użytkownik
Użytkownik
Posty: 8
Rejestracja: 10 sie 2015, o 14:37
Płeć: Mężczyzna
Lokalizacja: Olsztyn
Podziękował: 2 razy

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

Post 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.
ODPOWIEDZ