Questo è il programma. Ho provato a farlo su fogli ma non riesco bene a muovermi con i salti perchè i controlli if mi mettono un pò in difficoltà. Potete darmi una mano?
Grazie
/*
Dato un array di interi diversi tra loro,
trova il secondo valore più piccolo e la sua posizione nell'array
*/
#include <limits.h>
#include <stdio.h>
#define N 7
int a[N] = { 5, -3, 1, -7, 2, -6, -5 };
int main(void) {
int min_el_val = INT_MAX, min_el_ind;
int min2_el_val = INT_MAX, min2_el_ind;
int i, t;
i=0;
inizio_for:
if (!(i<N)) goto fine_for;
t = a[i];
/* se ho un nuovo minimo... */
if (t<min_el_val) goto then_if1;
/* altrimenti se ho un nuovo secondo piu' piccolo... */
if (!(t<min2_el_val)) goto fine_if2;
/* ... aggiorno min2 */
min2_el_val = t;
min2_el_ind = i;
fine_if2:
goto fine_if1;
then_if1:
/* ... aggiorno min e min2 */
min2_el_val = min_el_val;
min2_el_ind = min_el_ind;
min_el_val = t;
min_el_ind = i;
fine_if1:
i++;
goto inizio_for;
fine_for:
printf("\nIl secondo piu' piccolo elemento ha valore %d e posizione %d\n", min2_el_val, min2_el_ind);
return 0;
}