/*
Nome: Mario
Cognome: Montanari
Classe: 3AIN
Data: 16/04/2025

es03:
Scrivi una funzione che preso in ingresso il nome di un file contenente
interi, lo modifichi in modo da contenere gli stessi interi ma in ordine
decrescente.
*/

#include <stdio.h>

#define SIZE 1000+1

void leggiNumeri(FILE *file);

int main(void) {
    FILE *file = fopen("file.bin", "rb");

    if (file != NULL) {
        leggiNumeri(file);

        fclose(file);
    } else {
        perror("Error (source)");
    }

    return 0;
}

void leggiNumeri(FILE *file) {
    int numeri[SIZE];
    int i = 0;

    while (fread(&numeri[i], sizeof(int), 1, file) == 1) {
        i++;
    }

    for (int j = 0; j < i - 1; j++) {
        for (int k = j + 1; k < i; k++) {
            if (numeri[j] < numeri[k]) {
                int temp = numeri[j];
                numeri[j] = numeri[k];
                numeri[k] = temp;
            }
        }
    }

    for (int j = 0; j < i; j++) {
        printf("%d ", numeri[j]);
    }
    printf("\n");

    file = fopen("file.bin", "wb");
    if (file != NULL) {
        fwrite(numeri, sizeof(int), i, file);
        fclose(file);
    } else {
        perror("Error (write)");
    }
}