Son unas prácticas de la universidad, los enunciados son estos
2.3.- Escriu un programa que llegeixi els valors del radi de diferents esferes que hi ha en el fitxer binari “10radi_esfera.dat” (les dades són enteres) i calculi el volum de les esferes corresponents. Els resultats s'han de guardar en un fitxer binari anomenat “10vol_esfera.dat” amb una precisió de tres decimals. A priori desconeixem el nombre de valors que hi ha emmagatzemats al fitxer d'entrada.
2.4.- Escriu un programa que llegeixi el volum de les esferes que hi ha en el fitxer binari “10vol_esfera.dat” i mostri el seu contingut per pantalla.
2.3
Código
#include <stdio.h> #include <math.h> #define PI 3.141592654 int main() { FILE *EsfRad, *EsfVol; int Radio; float Volumen; EsfRad = fopen("10radi_esfera.dat","rb"); if(!EsfRad) { printf("Error: No se puede abrir el archivo"); } else { EsfVol = fopen("10vol_esfera.dat","wb"); if(!EsfVol) { printf("Error: No se puede abrir el archivo"); } else { while(!feof(EsfRad)) { fread(&Radio, sizeof(Radio), 1, EsfRad); Volumen = (float)((4*PI*(pow(Radio,3)))/3); fwrite(&Volumen, sizeof(Volumen), 1, EsfVol); } } fclose(EsfRad); fclose(EsfVol); } return 0; }
2.4
Código
#include <stdio.h> #include <math.h> #define PI 3.141592654 int main() { FILE *EsfRad; float Volumen; EsfRad = fopen("10vol_esfera.dat","rb"); if(!EsfRad) { printf("Error: No se puede abrir el archivo"); } else { while(!feof(EsfRad)) { fread(&Volumen, sizeof(Volumen), 1, EsfRad); printf("Volumen = %.3f\n",Volumen); } fclose(EsfRad); } return 0; }
El problema que le veo no es de código (eso creo), sino que con los archivos que nos dan para hacer las pruebas, dos o tres volúmenes salen iguales..
No se si se puede, pero adjunto los archivos *.dat por si alguien lo puede/quiere revisar
Saludos
Link (10radi_esfera.dat): http://www.mediafire.com/?jdangsbyw9ric1u