Proposta di soluzione con main di inserimento dati e invocazione del metodo richiesto.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX 100
void max_secondmax(int a[], int n, int *max, int *secondmax);
int main(int argc, char** argv) {
setvbuf(stdout, 0, _IONBF, 0);
int a[MAX];
int n = 0;
printf("quanti valori vuoi considerare?\n\n");
scanf("%d", &n);
int i=0;
srand(time(NULL));
for(i=0; i<n; i++) {
a[i] = rand() % 100;
printf("elemento di posto %d, valore %d\n", i, a[i]);
}
int max, secondmax;
max_secondmax(a, n, &max, &secondmax);
printf("max %d\n", max);
printf("secondmax %d\n", secondmax);
printf("fine!\n\n");
return (EXIT_SUCCESS);
}
void max_secondmax(int a[], int n, int *max, int *secondmax) {
if (n < MAX) {
int i;
*max = a[0];
*secondmax = 0;//a[0];
for(i=1; i<n; i++) {
printf("*** elemento di posto %d, valore %d\n", i, a[i]);
if (a[i] > *max) {
*secondmax = *max;
*max = a[i];
}
else if (a[i] > *secondmax) {
*secondmax = a[i];
}
printf("*** %d, %d, %d, %d\n", i, a[i], *max, *secondmax);
}
}
}