oregon ha scritto:
L'array viene modificato all'interno della funzione dato che passa per indirizzo. Non devi restituire proprio nulla.
Fra l'altro, a che ti serve b ???
Ho scritto il codice eliminando b, effettivamente da un pò fastido:
#include <iostream>
using namespace std;
unsigned int func(unsigned int a[], int n)
{
unsigned int indicemin=0;
unsigned int indicemax=0;
unsigned int box=0;
for (int i=1; i<5; i++)
{
if(a[i]<a[indicemin])
{
indicemin=i;
}
}
for (int i =1; i<5; i++)
{
if(a[i]>a[indicemax])
{
indicemax=i;
}
}
box=a[indicemin];
a[indicemin]=a[indicemax];
a[indicemax]=box;
return *a;
}
int main()
{
unsigned int v[5]={3,2,7,1,8};
cout<< "The array v before the func change the position of max and min value"<< endl;
for (int i=0; i<5; i++)
{
cout << v[i] << " ";
}
cout << endl;
cout << "The array after change the position of the max and min value:" << endl;
cout << func (v,5) << " ";
}
L'array come giustamente mi fai notare viene passato per indirizzo ossia:
unsigned int func ( unsigned int a[], int n)
mi colloca alla prima parole di dell'array "v"
successivamente viene svolto il corpo della funzione
e dovrei restituire l'array che ho modificato ossia l'array che dopo avrà il massimo e il minimo valore scambiati di posizione.
il problema è che quando scrivo:
return *a;
in:
cout << func(v,5) << " ";
viene stampato solo il primo elemento ossia 3.
io vorrei stampare tutti l'elementi, come potrei fare?.