Ciao a tutti, in questi giorni sto studiano la programmazione in c++ e oggi, affrontando l'argomento puntatori, mi sono imbattuto in un esercizio che non riesco a risolvere.
In pratica devo inserire all'interno di un array dei valori, poi chiamo una funzione che riceve due parametri: double* p, int n, dove p e' il puntatore alla testa dell'array e n e' la lunghezza dell'array.
Questa funzione deve trovare il valore minimo dell'array e ritornare alla funzione main, l'indirizzo del valore minore. Ho cosi' svolto l'esercizio:
codice:
#include <iostream>
using namespace std;
double* min (double* a, int n);
int main ()
{
int n;
double* p;
cout << "Inserire la dimensione dell'array" << endl;
cin >> n;
double a[n];
p = a;
cout << "Inserire " << n << " valori nell'array" << endl;
for (int i=0; i<n; ++i)
{
cin >> a[i];
}
cout << endl;
p = min (&p, a);
cout << "L'indirizzo dell'elemento minore e': " << p << endl;
return 0;
}
double* min (double* p, int n)
{
double min = a[0];
double* add_min = a;
for (int i=1; i<n; ++i)
{
if(a[i]<=min)
{
min=a[i];
add_min=&a[i];
}
}
return add_min;
}
quando provo a compilare il codice, mi viene generato quest'errore:
codice:
array_punt.cc: In function ‘int main()’:
array_punt.cc:20:13: error: no matching function for call to ‘min(double**, int&)’
array_punt.cc:20:13: note: candidates are:
array_punt.cc:4:9: note: double* min(double*, int)
array_punt.cc:4:9: note: no known conversion for argument 1 from ‘double**’ to ‘double*’
/usr/include/c++/4.6/bits/stl_algobase.h:233:5: note: template<class _Tp, class _Compare> const _Tp& std::min(const _Tp&, const _Tp&, _Compare)
/usr/include/c++/4.6/bits/stl_algobase.h:187:5: note: template<class _Tp> const _Tp& std::min(const _Tp&, const _Tp&)
potete aiutarmi?