Advertisement
Guest User

Untitled

a guest
Nov 20th, 2019
191
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.15 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. #define FILE_IN "punti.txt"
  5. #define LUNGHEZZA 10
  6.  
  7. int main(void)
  8.   {
  9.     char s[LUNGHEZZA];
  10.     FILE* pf;
  11.     int x, y, x1 = 0, y1 = 0, i=0;
  12.     float area = 0;
  13.  
  14.     printf("il programma calcola aree di spezzate, acquisendo i punti da file di testo\n");
  15.     pf = fopen(FILE_IN, "r");
  16.     if (pf == NULL)
  17.       {
  18.         printf("Non ho potuto aprire il file %s\n", FILE_IN);
  19.         return EXIT_FAILURE;
  20.       }
  21.     else
  22.       {
  23.         // il ciclo while conta quante righe sono presenti nel file
  24.         while (fgets(s, sizeof(s), pf))
  25.           {
  26.             i++;
  27.           }
  28.         //il file deve essere chiuso e riaperto altrimenti continuerebbe a leggere dall'ultima riga
  29.         fclose(pf);
  30.         pf = fopen(FILE_IN, "r");
  31.         //i deve essere >0 affinchè l'area possa essere positiva
  32.         if (i == 0)
  33.             printf("nel file non c'e' alcun punto!");
  34.         else
  35.           {
  36.             do
  37.               {
  38.                 fscanf(pf, "%s", s);
  39.                 x = atoi(s);
  40.                 fscanf(pf, "%s", s);
  41.                 y = atoi(s);
  42.                 area += ((float)((y + y1) * (x - x1)) / 2);
  43.                 x1 = x;
  44.                 y1 = y;
  45.                 i = i - 2;
  46.               }
  47.             while (i != 0);
  48.             fclose(pf);
  49.             printf("L'area della spezzata e': %f", area);
  50.             return EXIT_SUCCESS;
  51.           }
  52.       }
  53.   }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement