Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Fondamenti di Informatica
- Prima Prova in Itinere
- TURNO 5B
- Scrivere un programma in ANSI C che, dato il file di testo “elenco.txt” che contiene in ogni riga un intero che rappresenta il giorno della settimana (valori da 1 a 7) e un numero reale che rappresenta una temperatura esegua le seguenti operazioni:
- 1. Carichi in un vettore le coppie presenti nel file in cui il giorno della settimana (intero) è pari a 2
- 2. Calcoli e visualizzi il valore medio della temperatura e il numero di coppie presenti nel vettore;
- 3. Salva sul file di uscita “risultato.txt” tutte le coppie la cui temperatura è inferiore al valore medio
- 4. Salva sul file “uscita.txt” il contenuto del vettore
- Specifiche:
- - La dimensione dell’array è N pari a 10
- - Il numero di righe (cioè di coppie) nel file non è noto all’inizio. Eventuali coppie di elementi nel file oltre la riga N-esima (cioè oltre la decima riga) non devono essere prese in considerazione
- */
- #include <stdio.h>
- #include <stdlib.h>
- #define DIM 10
- typedef struct {
- int giorno;
- float temp;
- }Temperatura;
- int main(void) {
- Temperatura v[DIM];
- FILE *fi;
- FILE *fr;
- FILE *fu;
- char nomefileingresso[] = "elenco5B.txt";
- char nomefileuscita[] = "uscita.txt";
- char nomefilerisultato[] = "risultato.txt";
- int i, giorno;
- int numelementi = 0; // numero di elementi letti
- float somma, media, temp;
- /**** Quesito 1 ****/
- if ((fi = fopen(nomefileingresso, "r")) == NULL) {
- printf("Errore nell'apertura del file\n");
- exit(1);
- }
- while (!feof(fi) && numelementi<DIM) {
- if (fscanf(fi, "%d %f\n", &giorno, &temp)==2) {
- if (giorno == 2) {
- v[numelementi].giorno = giorno;
- v[numelementi].temp = temp;
- numelementi++;
- }
- }
- }
- fclose(fi);
- // verifica quante coppie sono state caricate nel vettore
- printf("Il vettore e' composto da %d coppie\n", numelementi);
- /* controllo che nel vettore ci siano elementi, altrimenti esco dal programma
- in quanto i quesiti 2 e 3 non possono essere eseguiti */
- if (numelementi == 0) {
- printf("Non sono presenti numeri validi nel file\n");
- printf("I quesiti 2 e 3 non possono essere eseguiti\n");
- exit(1);
- }
- /**** Quesito 2 ****/
- somma = 0.0;
- for (i = 0; i < numelementi; i++)
- somma = somma + v[i].temp;
- media = somma / numelementi;
- printf("La media vale: %f\n", media);
- /**** Quesito 3 ****/
- if ((fr = fopen(nomefilerisultato, "w")) == NULL) {
- printf("Errore nell'apertura del file\n");
- exit(1);
- }
- for (i = 0; i < numelementi; i++) {
- if (v[i].temp < media)
- fprintf(fr, "%d %f\n", v[i].giorno, v[i].temp);
- }
- printf("\nFile %s creato!\n", nomefilerisultato);
- fclose(fr);
- /**** Quesito 4 ****/
- if ((fu = fopen(nomefileuscita, "w")) == NULL) {
- printf("Errore nell'apertura del file\n");
- exit(1);
- }
- for (i = 0; i < numelementi; i++) {
- fprintf(fu, "%d %f\n", v[i].giorno, v[i].temp);
- }
- printf("\nFile %s creato!\n", nomefileuscita);
- fclose(fu);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement