Il problema che riscontro è nell'output: non riesco a capire perché nei tre valori massimi mi stampa anche lo 0 (consiglio un'esecuzione tramite compilatore per capire meglio il problema)
codice:
#include <stdio.h>
#define max 100
/*PROTOTIPI*/
void input(int v[], int *dim);
void sort(int v[], int dim);
void swap(int *x, int *y);
void output(int v[], int dim);
/*FUNZIONE PRINCIPALE*/
main() {
int v[max];
int dim;
input(v, &dim);
sort(v, dim);
output(v, dim);
return 0;
}
/*INPUT*/
void input(int v[], int *dim) {
int num;
*dim=0;
do {
printf("Immetti numero: ");
scanf("%d", &num);
v[(*dim)++]=num;
}
while((num!=0) && (*dim<max));
if(num==0) (*dim)--;
}
/*SORT*/
void sort(int v[], int dim) {
int i, j;
for(i=0;i<dim-1;i++) {
for(j=i+1;j<dim;j++) {
if(v[i]>v[j]) swap(&v[i], &v[j]);
}
}
}
/*SWAP*/
void swap(int *x, int *y) {
int temp;
temp=*x;
*x=*y;
*y=temp;
}
/*OUTPUT*/
void output(int v[], int dim) {
int i;
for(i=0;i<dim;i++) {
printf("%d ", v[i]);
}
printf("\nI valori massimi sono: %d %d %d", v[i-2], v[i-1], v[i]);
}
Vi ringrazio