Ammetto che non ho capito gran parte di quello che hai detto vbextreme perché non so cosa sia un buffer overflow...
comunque ho notato che se io inserisco il codice nella seguente maniera il programma funziona correttamente:
#include <iostream>
using namespace std;
int differenza (int Vettore[], int N)
{
int Min, Max, i = 0;
float differenza;
//int vettore[N];
Min = Vettore[0]; // calcola il valore minimo
for (i=0; i<N; i++) {
if (Vettore[i] < Min) {
Min = Vettore[i];
}
}
Max = Vettore[0]; //calcola il valore massimo
for (i=0; i<N; i++) {
if (Vettore[i] > Max) {
Max = Vettore[i];
} }
differenza = Max - Min;
return differenza;
}
int main ()
{
int N = 0, i = 0;
int vettore[N];
int dif = 0;
cout<<"inserire il numero di elementi\n";
cin>>N;
cout<<"inserire gli elementi\n";
for (i=0; i<N; i++) {
cin>>vettore[i];
}
for (i=0; i<N; i++) {
cout<<vettore[i]<<"\t";
}
dif = differenza(vettore, N);
cout<<endl<<"la differenza tra il massimo e il minimo è:\n"<<dif;
}
l'unica differenza con il codice precedente è nella parte finale:
cout<<endl;
dif = differenza(vettore,N);
cout<<"la differenza tra il minimo e il massimo è:\n"<<dif;
questo è il codice che non funziona.
dif = differenza(vettore,N);
cout<<endl<<"la differenza tra il massimo e il minimo è:\n"<<dif;
mentre questo funziona...
ora io ho risolto il problema andando per tentativi..
vorrei, però, capire perché si comporta così in modo
da non ripetere lo stesso errore in futuro magari in un programma più complesso...
vi ringrazio tutti comunque per le vostre risposte sono state utili anche in altri esercizi che stavo svolgendo.