137 lines
3.8 KiB
C++
137 lines
3.8 KiB
C++
/*
|
||
Nome: Mario
|
||
Cognome: Montanari
|
||
Classe: 3AIN
|
||
Data: 07/05/2025
|
||
|
||
1) Apre un file binario in modalità di lettura binaria ("rb"),
|
||
2) Legge fino a 100 interi dal file e memorizza i valori letti
|
||
nell'array dati.
|
||
3) Successivamente, stampa il numero effettivo di valori letti
|
||
utilizzando la funzione fread.
|
||
4) Testarlo:
|
||
- sui file dell’es1
|
||
- su un file di testo contenente “1234567\n”
|
||
5) Dai file "file_70.bin", "file_100.bin" e "file_200.bin”
|
||
6) Leggere il 30° valore
|
||
7) Leggere il 2° valore
|
||
8) Leggere il penultimo
|
||
9) Leggerne uno a caso
|
||
*/
|
||
|
||
#include <iostream>
|
||
#include <cstdlib>
|
||
#include <ctime>
|
||
|
||
#define DIM 100
|
||
#define VAL_MIN 0
|
||
#define VAL_MAX 100
|
||
|
||
using namespace std;
|
||
|
||
int main(void) {
|
||
srand(time(NULL));
|
||
|
||
FILE * file_70 = fopen("file_70.bin", "rb");
|
||
FILE * file_100 = fopen("file_100.bin", "rb");
|
||
FILE * file_200 = fopen("file_200.bin", "rb");
|
||
FILE * file_7 = fopen("file_7.txt", "rt");
|
||
|
||
if (file_70 != NULL && file_100 != NULL && file_200 != NULL && file_7 != NULL) {
|
||
int dati_70[DIM] = {0};
|
||
int dati_100[DIM] = {0};
|
||
int dati_200[DIM * 2] = {0};
|
||
|
||
|
||
// --- Lettura dei file binari ---
|
||
int letti_70 = fread(dati_70, sizeof(int), DIM, file_70);
|
||
int letti_100 = fread(dati_100, sizeof(int), DIM, file_100);
|
||
int letti_200 = fread(dati_200, sizeof(int), DIM * 2, file_200);
|
||
|
||
cout << "Valori letti da file_70.bin (" << letti_70 << "): ";
|
||
for (int i = 0; i < letti_70; i++) {
|
||
cout << dati_70[i] << " ";
|
||
}
|
||
cout << endl << endl;
|
||
|
||
cout << "Valori letti da file_100.bin (" << letti_100 << "): ";
|
||
for (int i = 0; i < letti_100; i++) {
|
||
cout << dati_100[i] << " ";
|
||
}
|
||
cout << endl << endl;
|
||
|
||
cout << "Valori letti da file_200.bin (" << letti_200 << "): ";
|
||
for (int i = 0; i < letti_200; i++) {
|
||
cout << dati_200[i] << " ";
|
||
}
|
||
cout << endl << endl;
|
||
|
||
// --- Lettura del file di testo ---
|
||
int x;
|
||
int i = 0;
|
||
|
||
cout << "Valori letti da file_7.txt: ";
|
||
while (fscanf(file_7, "%d", &x) == 1 && i < DIM) {
|
||
cout << x << endl;
|
||
i++;
|
||
}
|
||
cout << "Totale valori letti dal file_7.txt: " << i << endl << endl;
|
||
|
||
// --- Estrazione dei valori specifici ---
|
||
if (letti_70 >= 30) {
|
||
cout << "30esimo valore nel file_70.bin: " << dati_70[29] << endl;
|
||
}
|
||
if (letti_100 >= 30) {
|
||
cout << "30esimo valore nel file_100.bin: " << dati_100[29] << endl;
|
||
}
|
||
if (letti_200 >= 30) {
|
||
cout << "30esimo valore nel file_200.bin: " << dati_200[29] << endl;
|
||
}
|
||
cout << endl;
|
||
|
||
if (letti_70 >= 2) {
|
||
cout << "Secondo valore nel file_70.bin: " << dati_70[1] << endl;
|
||
}
|
||
if (letti_100 >= 2) {
|
||
cout << "Secondo valore nel file_100.bin: " << dati_100[1] << endl;
|
||
}
|
||
if (letti_200 >= 2) {
|
||
cout << "Secondo valore nel file_200.bin: " << dati_200[1] << endl;
|
||
}
|
||
cout << endl;
|
||
|
||
if (letti_70 >= 2) {
|
||
cout << "Penultimo valore nel file_70.bin: " << dati_70[letti_70 - 2] << endl;
|
||
}
|
||
if (letti_100 >= 2) {
|
||
cout << "Penultimo valore nel file_100.bin: " << dati_100[letti_100 - 2] << endl;
|
||
}
|
||
if (letti_200 >= 2) {
|
||
cout << "Penultimo valore nel file_200.bin: " << dati_200[letti_200 - 2] << endl;
|
||
}
|
||
cout << endl;
|
||
|
||
// --- Valori casuali ---
|
||
if (letti_70 > 0) {
|
||
int casual = rand() % letti_70;
|
||
cout << "Valore letto casualmente da file_70.bin: " << dati_70[casual] << endl;
|
||
}
|
||
if (letti_100 > 0) {
|
||
int casual = rand() % letti_100;
|
||
cout << "Valore letto casualmente da file_100.bin: " << dati_100[casual] << endl;
|
||
}
|
||
if (letti_200 > 0) {
|
||
int casual = rand() % letti_200;
|
||
cout << "Valore letto casualmente da file_200.bin: " << dati_200[casual] << endl;
|
||
}
|
||
|
||
fclose(file_70);
|
||
fclose(file_100);
|
||
fclose(file_200);
|
||
fclose(file_7);
|
||
} else {
|
||
perror("Error");
|
||
}
|
||
|
||
return 0;
|
||
} |