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)