Przekazywanie argumentów przez referencję i przez adres.

0

Zadanie:
Działanie programu: Na prośbę programu użytkownik podaje pięć liczb. Następnie program wyświetla ich
wartość minimalną i wartość maksymalną.
Wymagania: Liczby podane przez użytkownika mają być zapisane do zmiennych globalnych.
Wyliczenie wartości minimalnej ma się odbywać w funkcji minimum(a,b,c,d,e),
operującej na zmiennych lokalnych a—e, które przy wywołaniu tej funkcji otrzymują
przez referencję dostęp do zmiennych globalnych przechowujących podane liczby.
Funkcja ma zwracać zmienną lokalną min i nie może sama wykorzystywać zmiennych
globalnych.
Wyliczenie wartości maksymalnej ma się odbywać w funkcji maksimum(a,b,c,d,e),
operującej na zmiennych lokalnych a—e, które przy wywołaniu tej funkcji otrzymują
przez adres dostęp do zmiennych globalnych przechowujących podane liczby. Funkcja
ma zwracać zmienną lokalną max i nie może sama wykorzystywać zmiennych
globalnych.

Moje rozwiązanie:

#include <iostream>
using namespace std;
int u, w, x, y, z;
int minimum(int a, int b, int c, int d, int e)
{
	int tab[5] = { a,b,c,d,e };
	int min=tab[0];
	for (int i = 0; i < 4; i++)
	{
		if (min>tab[i])
			min = tab[i];
	}
	return min;
}
int maksimum(int a, int b, int c, int d, int e)
{
	int tab[5] = { a,b,c,d,e };
	int maks = tab[0];
	for (int i = 0; i < 4; i++)
	{
		if (maks<tab[i])
			maks = tab[i];
	}
	return maks;
}
int main()
{
	cout << "Podaj 5 liczb: ";
	cin >> u >> w >> x >> y >> z;
	int min = minimum(u, w, x, y, z);
	int maks = maksimum(u, w, x, y, z);
	cout << "Wartosc minimum wynosi: " << min << endl << "Wartosc maksimum wynosi: " << maks;
	return 0;
} 

I teraz ktoś mógłby mi wytłumaczyć jak przekazać te wartości przez referencję, a jak przez adres? (to, jak ja przekazuje wartości to któryś z tych sposobów czy jeszcze inny?)
Dodam, że program działa prawidłowo jedyny problem to przekazywanie tych wartości w wymagany przez zadanie sposób.

1

Przekazujesz w inny sposób -> poprzez kopie argumentów.
Aby przekazać przez referencje musisz w sygnaturze funkcji mieć np.int minimum(int& a,... reszta tak jak masz.
Żeby przekazać przez adres/wskaźnik musisz w sygnaturze mieć np. int max(int* a,, w kodzie gdzie odnosisz sie do zmiennej (*a) w a miejscu gdzie wołasz funkcje max(&a,...)

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