zmiana wartości zmiennych

0

cześć!
mam takie zadanko: napisz funkcję w której zmienisz wartości dwóch zmiennych przekazanych do funkcji za pomocą a) wartości b)wskaźnika.
np. do funkcji wchodzi a=5, b=7, funkcja zwraca a=7, b=5. O ile z podpunktem b) nie mam większego problemu, o tyle nie wiem jak poradzić sobie z a)? czy można uzyskać zamianę wartości zmiennych za pomocą funkcji bez użycia referencji lub wskaźników? Z góry dzięki za pomoc;)

1

jezeli wartosc jest przekazana przez wartosc (czyli kopie) to nie ma mozliwosci zmienic wartosc takiej zmiennej. Jedynie co mozna zrobic to po prostu taka wartosc zwrocic i zrobic na zasadzie

int a = 5; int b = 7;
a = foo(a, &b)
0

Jeżeli otrzymalibyście takie dosłownie polecenie zadania (sam pdpkt a)) to napisalibyście jakiś kod czy raczej udzielilibyście odpowiedzi, że to se ne da? Bo może ja coś źle tutaj rozumiem.

0

napisalbym cos takiego (pisane z palca wiec moga byc drobne bledy, ale nie powinon byc)
Oczywiscie to jest koncept

#include <iostream>
#include <algorithm>
using namespace std;

int foo(int a, int *b)
{
  swap(a, *b);
  return a;
}

int bar(int a, int &b)
{
  swap(a, b);
  return a;
}

int main()
{
  int a = 5;
  int b = 7;
  cout << "before changing";
  cout << a << " " << b << "\n";
  a = foo(a, &b);
  cout << "after pointer changing";
  cout << a << " " << b << "\n";
  a = bar(a, b);
  cout << "after reference changing";
  cout << a << " " << b << "\n";
}

wytlumaczylbym ze to sa dwie jedyne mozliwosci zmiany zmiennej przekazywanej do innej funkcji.

0

okej, dzięki wielkie za pomoc w takim razie :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1