Codice dei programmi nella directory:

///File: EsercizioOrdinaFile.txt
Dato un file che contiene al massimo 100 numeri reali
(la prima linea ne contiene il numero) scrivere un programma C che produca un file di testo contenente i numeri in ordine decrescente. 10 1.2 345.67 12 13 345.88 -12 -12.3 1 0 1
///(Fine file: EsercizioOrdinaFile.txt)

///File: ordinafile.c
//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; }
///(Fine file: ordinafile.c)