Advertisement
Guest User

Untitled

a guest
Jan 16th, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.97 KB | None | 0 0
  1. /* Fondamenti di Informatica
  2. Prima Prova in Itinere
  3. TURNO 5B
  4.  
  5. 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:
  6. 1. Carichi in un vettore le coppie presenti nel file in cui il giorno della settimana (intero) è pari a 2
  7. 2. Calcoli e visualizzi il valore medio della temperatura e il numero di coppie presenti nel vettore;
  8. 3. Salva sul file di uscita “risultato.txt” tutte le coppie la cui temperatura è inferiore al valore medio
  9. 4. Salva sul file “uscita.txt” il contenuto del vettore
  10. Specifiche:
  11. - La dimensione dell’array è N pari a 10
  12. - 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
  13.  
  14. */
  15.  
  16. #include <stdio.h>
  17. #include <stdlib.h>
  18.  
  19. #define DIM 10
  20.  
  21. typedef struct {
  22. int giorno;
  23. float temp;
  24. }Temperatura;
  25.  
  26. int main(void) {
  27.  
  28. Temperatura v[DIM];
  29.  
  30. FILE *fi;
  31. FILE *fr;
  32. FILE *fu;
  33. char nomefileingresso[] = "elenco5B.txt";
  34. char nomefileuscita[] = "uscita.txt";
  35. char nomefilerisultato[] = "risultato.txt";
  36.  
  37. int i, giorno;
  38. int numelementi = 0; // numero di elementi letti
  39. float somma, media, temp;
  40.  
  41. /**** Quesito 1 ****/
  42. if ((fi = fopen(nomefileingresso, "r")) == NULL) {
  43. printf("Errore nell'apertura del file\n");
  44. exit(1);
  45. }
  46. while (!feof(fi) && numelementi<DIM) {
  47. if (fscanf(fi, "%d %f\n", &giorno, &temp)==2) {
  48. if (giorno == 2) {
  49. v[numelementi].giorno = giorno;
  50. v[numelementi].temp = temp;
  51. numelementi++;
  52. }
  53. }
  54. }
  55. fclose(fi);
  56.  
  57. // verifica quante coppie sono state caricate nel vettore
  58. printf("Il vettore e' composto da %d coppie\n", numelementi);
  59.  
  60. /* controllo che nel vettore ci siano elementi, altrimenti esco dal programma
  61. in quanto i quesiti 2 e 3 non possono essere eseguiti */
  62. if (numelementi == 0) {
  63. printf("Non sono presenti numeri validi nel file\n");
  64. printf("I quesiti 2 e 3 non possono essere eseguiti\n");
  65. exit(1);
  66. }
  67.  
  68. /**** Quesito 2 ****/
  69. somma = 0.0;
  70. for (i = 0; i < numelementi; i++)
  71. somma = somma + v[i].temp;
  72. media = somma / numelementi;
  73. printf("La media vale: %f\n", media);
  74.  
  75. /**** Quesito 3 ****/
  76. if ((fr = fopen(nomefilerisultato, "w")) == NULL) {
  77. printf("Errore nell'apertura del file\n");
  78. exit(1);
  79. }
  80.  
  81. for (i = 0; i < numelementi; i++) {
  82. if (v[i].temp < media)
  83. fprintf(fr, "%d %f\n", v[i].giorno, v[i].temp);
  84. }
  85. printf("\nFile %s creato!\n", nomefilerisultato);
  86. fclose(fr);
  87.  
  88. /**** Quesito 4 ****/
  89. if ((fu = fopen(nomefileuscita, "w")) == NULL) {
  90. printf("Errore nell'apertura del file\n");
  91. exit(1);
  92. }
  93.  
  94. for (i = 0; i < numelementi; i++) {
  95. fprintf(fu, "%d %f\n", v[i].giorno, v[i].temp);
  96. }
  97. printf("\nFile %s creato!\n", nomefileuscita);
  98. fclose(fu);
  99.  
  100. return 0;
  101. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement