//Autore:F. Sacco
//Breve descrizione del programma: Ordina un file di valori numerici con bubblesort 

#include<stdio.h>
#include<stdlib.h>
#define MAX 100


void scambia(double v[], int px, int py) {
	double dep = v[px];
	v[px] = v[py];
	v[py] = dep;
}

void bsort (double v[], int nelem) {
	int i, j;
	for (i = 0; i < nelem - 1; i++)
		for (j = i + 1; j < nelem; j++)
			if (v[i] < v[j])
				scambia(v, i, j);
}

int main() {
	FILE *pfi, *pfo; // definisci puntatori file
	int nelem, i;
	double v[MAX];

	pfi = fopen("input.txt", "r"); // apre input.txt in lettura
	pfo = fopen("output.txt", "w"); // apre output.txt in scrittura
	
	if(pfi == NULL){
		printf("Errore nell'apertura del file input.txt, controlla che sia presente nella cartella.\n");
		exit(1);
	}

	fscanf(pfi, "%d", &nelem); // carica numero di elementi, inserito nella prima linea del file

	for (i = 0; i < nelem; i++) {
		fscanf(pfi, "%lf", &v[i]);  // carica dal file i numeri da inserire nell'array
	}

	bsort(v, nelem); // sort array
	
	for(i=0; i<nelem; i++) {
		fprintf(pfo, "%.3lf\n", v[i]); // stampa i risultati su file output.txt
	}
	
	// chiude i file
	fclose(pfi);
	fclose(pfo);
	return 0;
}
