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)
Vi ringraziocodice:#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]); }

 
			
			 
			 
					
					
					
						 Rispondi quotando
  Rispondi quotando