Buona sera , sono alle prese con questo programma:
/*Scrivere un programma tramite funzioni e puntatori che passato un vettore di lunghezza n
deve cercare il valore più grande e il secondo valore più grande*/
Il mio problema e' che nel momento in cui dovrebbbe darmi i due valori quello più grande e il secondo più grande non mi compila in modo corretto e mi restituisce soltanto il valore più grande. Non riesco a trovare l'errore. Potreste aiutarmi?
int main(){
int v[20], dim, i, larg, se_la;
do{
printf("Quanti elementi vuoi inserire nel vettore?\n");
scanf("%d", &dim);
if(dim>20){
printf("Errore. Hai inserito un numero maggiore di elementi, massimo 20!\nRIPROVA...\n\n");
}
}while(dim>20);
printf("\n");
for(i=0; i<dim; i++){
printf("Immetti elementi in posizione %d:\n", i);
scanf("%d", &v[i]);
}
valori(v, dim, &larg, &se_la);
printf("\nIl primo valore piu' grande e': %d\n", larg);
printf("Il secondo valore piu' grande e': %d\n\n", se_la);
system("pause");
return 0;
}
void valori(int v[20], int dim, int *largest, int *second_largest){
int i;
/*Assumiamo che i valori massimi sono i primi due*/
if(v[0]>v[1]){
*largest=v[0];
*second_largest=v[1];
}
else{
*largest=v[1];
*second_largest=v[0];
}
/*Scansioniamo il vettore*/
for(i=0; i<dim; i++){
if(*largest<v[i]){
*second_largest=*largest;
*largest=v[i];
}
/*Se il valore del vettore non e' il massimo ma e' maggiore del secondo massimo,
allore e' il secondo massimo*/
if(v[i]<=*largest && v[i]>*second_largest){
*second_largest=v[i];
}
}
}