Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #define SIZE_RENGLON 12
- /* Estructuras */
- typedef struct
- {
- float lado_1,
- lado_2,
- lado_3,
- sup;
- } unTriangulo;
- typedef struct
- {
- float coord_x1,
- coord_y1,
- coord_x2,
- coord_y2,
- coord_x3,
- coord_y3;
- } tresPuntos;
- int main(int argc, char *argv[])
- {
- FILE * fcoords; /* Handle del archivo de coordenadas */
- FILE * ftriangulos; /* Handle del archivo de los triángulos */
- unTriangulo Tr; /* Sea un triangulo definido por la estructura unTriangulo */
- tresPuntos Tp; /* Sean tres puntos definidos por la estructura tresPuntos */
- int i, /* Contador */
- size_tr; /* Tamaño del archivo de triángulos */
- float perim; /* Perimetro de cada triángulo */
- char tmp[SIZE_RENGLON]; /* Una cadena de caracteres que recolecta los renglones con las respectivas coordenadas */
- fcoords = fopen("coordenadas.txt", "rt");
- if(!fcoords)
- {
- printf("Error al abrir el archivo coordenadas.txt.\n");
- system("PAUSE>NULL");
- fclose(fcoords);
- exit(-1);
- }
- ftriangulos = fopen("triangulos.bin", "rb+");
- /* Primera parte */
- while(!feof(fcoords))
- {
- if(fgets(tmp, SIZE_RENGLON+1, fcoords))
- {
- sscanf(tmp, "%f %f %f %f %f %f", &Tp.coord_x1, &Tp.coord_y1, &Tp.coord_x2, &Tp.coord_y2, &Tp.coord_x3, &Tp.coord_y3);
- printf("Punto 1: %.2f %.2f | Punto 2: %.2f %.2f | Punto 3: %.2f %.2f\n", Tp.coord_x1, Tp.coord_y1, Tp.coord_x2, Tp.coord_y2, Tp.coord_x3, Tp.coord_y3);
- Tr.lado_1 = sqrt(pow(Tp.coord_x1 - Tp.coord_x2, 2) + pow(Tp.coord_y1 - Tp.coord_y2, 2));
- Tr.lado_2 = sqrt(pow(Tp.coord_x2 - Tp.coord_x3, 2) + pow(Tp.coord_y2 - Tp.coord_y3, 2));
- Tr.lado_3 = sqrt(pow(Tp.coord_x3 - Tp.coord_x1, 2) + pow(Tp.coord_y3 - Tp.coord_y1, 2));
- perim = Tr.lado_1 + Tr.lado_2 + Tr.lado_3;
- Tr.sup = sqrt((perim/2) * (perim/2 - Tr.lado_1 ) * (perim/2 - Tr.lado_2 ) * (perim/2 - Tr.lado_3 ));
- printf("Lado 1: %.2f. Lado 2: %.2f. Lado 3: %.2f. Superficie: %.2f.\n", Tr.lado_1, Tr.lado_2, Tr.lado_3, Tr.sup);
- fwrite(&Tr, sizeof(unTriangulo), 1, ftriangulos);
- printf("--------------------------------------------------------------\n");
- }
- }
- /* Segunda parte */
- printf("Mostrar resultado del archivo: (Presione una tecla para continuar).\n");
- system("PAUSE>NULL");
- fseek(ftriangulos, 0, SEEK_END);
- size_tr = ftell(ftriangulos)/sizeof(unTriangulo);
- fseek(ftriangulos, 0, SEEK_SET);
- for(i = 0; i < size_tr; i++)
- {
- fread(&Tr, sizeof(unTriangulo), 1, ftriangulos);
- printf("Lado 1: %.2f. Lado 2: %.2f. Lado 3: %.2f. Superficie: %.2f.\n", Tr.lado_1, Tr.lado_2, Tr.lado_3, Tr.sup);
- }
- system("PAUSE>NULL");
- fclose(fcoords);
- fclose(ftriangulos);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment