elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Píldoras formativas en seguridad de la información


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  [?] Archivos Binarios
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [?] Archivos Binarios  (Leído 1,287 veces)
MeCraniDOS


Desconectado Desconectado

Mensajes: 337


Sr. Glass


Ver Perfil
[?] Archivos Binarios
« en: 20 Octubre 2013, 11:38 »

Buenas, tengo un problema con estos dos códigos  :rolleyes:

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
  1. #include <stdio.h>
  2. #include <math.h>
  3.  
  4. #define PI 3.141592654
  5.  
  6. int main()
  7. {
  8.  
  9. FILE *EsfRad, *EsfVol;
  10. int Radio;
  11. float Volumen;
  12.  
  13. EsfRad = fopen("10radi_esfera.dat","rb");
  14.  
  15. if(!EsfRad)
  16. {
  17. printf("Error: No se puede abrir el archivo");
  18. }
  19. else
  20. {
  21. EsfVol = fopen("10vol_esfera.dat","wb");
  22.  
  23. if(!EsfVol)
  24. {
  25. printf("Error: No se puede abrir el archivo");
  26. }
  27. else
  28. {
  29. while(!feof(EsfRad))
  30. {
  31. fread(&Radio, sizeof(Radio), 1, EsfRad);
  32. Volumen = (float)((4*PI*(pow(Radio,3)))/3);
  33. fwrite(&Volumen, sizeof(Volumen), 1, EsfVol);
  34. }
  35. }
  36.  
  37. fclose(EsfRad);
  38. fclose(EsfVol);
  39. }
  40.  
  41. return 0;
  42.  
  43. }

2.4

Código
  1. #include <stdio.h>
  2. #include <math.h>
  3.  
  4. #define PI 3.141592654
  5.  
  6. int main()
  7. {
  8.  
  9. FILE *EsfRad;
  10. float Volumen;
  11.  
  12. EsfRad = fopen("10vol_esfera.dat","rb");
  13.  
  14. if(!EsfRad)
  15. {
  16. printf("Error: No se puede abrir el archivo");
  17. }
  18. else
  19. {
  20. while(!feof(EsfRad))
  21. {
  22.                        fread(&Volumen, sizeof(Volumen), 1, EsfRad);
  23. printf("Volumen = %.3f\n",Volumen);
  24. }
  25.  
  26. fclose(EsfRad);
  27. }
  28.  
  29. return 0;
  30.  
  31. }
  32.  

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 :rolleyes:

Saludos

Link (10radi_esfera.dat): http://www.mediafire.com/?jdangsbyw9ric1u


En línea

"La física es el sistema operativo del Universo"
     -- Steven R Garman
ivancea96


Desconectado Desconectado

Mensajes: 3.349


ASMático


Ver Perfil WWW
Re: [?] Archivos Binarios
« Respuesta #1 en: 20 Octubre 2013, 14:01 »

Me podrías dar el enunciado en Español? xD


En línea

MeCraniDOS


Desconectado Desconectado

Mensajes: 337


Sr. Glass


Ver Perfil
Re: [?] Archivos Binarios
« Respuesta #2 en: 20 Octubre 2013, 14:29 »

Me podrías dar el enunciado en Español? xD

:¬¬ :¬¬

Hahaha en Español es así  :rolleyes:


Citar
2.3.- Escribe un programa que lea los valores del radio de diferentes esferas que hay en el archivo binario "10radi_esfera.dat" (los datos son enteros) y calcula el volumen de las esferas correspondientes. Los resultados se deben guardar en un archivo binario llamado "10vol_esfera.dat" con una precisión de tres decimales. A priori desconocemos el número de valores que hay almacenados en el archivo de entrada.

2.4.- Escribe un programa que lea el volumen de las esferas que hay en el archivo binario "10vol_esfera.dat" y muestre su contenido por pantalla.

Saludos  :silbar:
En línea

"La física es el sistema operativo del Universo"
     -- Steven R Garman
rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: [?] Archivos Binarios
« Respuesta #3 en: 20 Octubre 2013, 15:05 »

En mi opinión los enunciados no explican de forma clara las operaciones a realizar. El primero indica "Los resultados se deben guardar ... con una precisión de tres decimales" y ello implica el uso de la función fprint sin embargo en el siguiente enunciado se refiere al archivo "10vol_esfera.dat" como uno binario cuando en realidad es texto.

Otro problema con los archivos binarios es que el numero y orden de sus bytes dependen de la implementación. En el caso de cuatro bytes por entero el valor 0x03000000 (o 0x00000003) aparece en dos ocasiones en el archivo y como utilizas la funcion feof para controlar el bucle (no deberias, utiliza directamente el valor de retorno de fread) el ultimo puede presentarse tambien como repetido.

Platica con tu profesor, en un caso ideal debe darles no solo el archivo de entrada sino también el de salida (para que verifiquen que el programa funciona correctamente)

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Archivos Binarios
Programación Visual Basic
David Vans 5 934 Último mensaje 14 Octubre 2006, 19:32
por Nymphetaminito
Archivos Binarios
.NET
David Vans 2 2,042 Último mensaje 1 Junio 2007, 13:45
por »~^~«CkNU!»~^~«
Archivos binarios en VB6???
Programación Visual Basic
Bb-7 1 2,094 Último mensaje 10 Abril 2008, 17:26
por krackwar
Archivos Binarios
Programación Visual Basic
TheGhost(Z) 0 853 Último mensaje 21 Agosto 2010, 16:24
por TheGhost(Z)
archivos binarios
Programación C/C++
marcico 0 511 Último mensaje 26 Julio 2012, 14:14
por marcico
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines