Nie zmieniająca się zmienna;

Nie zmieniająca się zmienna;
De_v_i
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: 01010111 01101001 01100101 01101100 01110101 11000101 10000100
  • Postów: 28
0

Wita mam pewien problem próbowałem zrobić funkcję podobna do "swap", niestety nie chce ona zamieniać wartościami zmiennych. W konsoli wyświetla się, że podmiana jest dobra ale wartości się nie zmieniły.

Kopiuj
    void rplace(int a,int b)
    {
        int ab = b;
        int ba = a;

        cout<<ab<<endl;
        cout<<ba<<endl;

        a = ab;
        b = ba;

        cout<<a<<endl;
        cout<<b<<endl;
    } 
MY
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1107
0

Próbujesz użyć tej funkcji do zamiany dwóch zmiennych.

Kopiuj
int x;
int y;

x=1;
y=12;
rplace(x,y);

Jednak coś takiego nie będzie działać. Zamieniasz lokalne kopie w funkcji rplace. Aby to zmienić musisz zmienić funkcję na taką która przyjmuje wskaźniki do zmiennych ewentualnie mogą być referencje które będą wygodniejsze w użyciu.

XE
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 9
1

Funkcja przyjmuje wartość, a nie referencje lub wskaźnik, więc modyfikujesz tylko kopie. Najprościej zmienić

Kopiuj
void rplace(int a,int b) 

na void rplace(int &a,int &b)

Kopiuj
Dawid90dd
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 196
1

Ta funkcja i tak tworzy dwie zmienne tmp, niepotrzebnie, zobacz sobie nawet na najprostszym przykładzie jak jest std::swap zaimplementowany...

Kopiuj
template <class T> void swap ( T& a, T& b )
{
  T c(a); a=b; b=c;
}

Bez kombinowania.

MY
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1107
0

@Dawid90dd to może polecieć po całości i zamieniać inty w ogóle bez użycia dodatkowej zmiennej :]

https://ideone.com/ayFKIQ

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.