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

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda con esto.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con esto.  (Leído 2,852 veces)
Rhythmical

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Ayuda con esto.
« en: 2 Noviembre 2017, 23:57 pm »

Buenas a todos! Pues mi problema con el C es el tema de archivos, en el ejercicio que tengo me piden que halle la media de los numeros ingresados pero al compilar me da el resultado 0.
Este es el código.

Código
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <string.h>
  4.  
  5.  
  6. void ValoryProm (FILE *Archivo)
  7. {
  8. int N=0 , ent=0, suma = 0;
  9. int promed =0, other = 0;
  10. float promedio = 0.0;
  11.  
  12. printf("Ingrese la cantidad de valores que desea ingresar: \n");scanf("%d", &N);
  13.  
  14. for(int i=0; i<N;i++)
  15. {
  16.  
  17. printf("Ingrese valores enteros entre 10-130: \n");
  18. scanf("%d", &ent);
  19. fwrite(&ent, sizeof(int), 1, Archivo);
  20.  
  21. if(ent >= 12 && ent <= 15 || ent >=50 && ent<=111)
  22. {
  23. promed ++;
  24. }
  25. else
  26. {
  27. other++;
  28. }
  29. suma+=ent;
  30. }
  31. promedio = promed*100/N;
  32. printf("El promedio es: %.2f\n", promedio);
  33. }
  34.  
  35. float Media(FILE* Archivo, int N)
  36. {
  37. float media = 0.0;int suma;
  38.  
  39. media = (float)suma/N;
  40.  
  41. return media;
  42. }
  43.  
  44. main()
  45. {
  46. FILE *Archivo;
  47. float media;
  48. float Promedio = 0.0;
  49. int N = 0;
  50.  
  51.  
  52. Archivo = fopen("numeros.DAT","w+b");
  53.  
  54.  if (Archivo == NULL)
  55.  {
  56.    printf("Error. \n");
  57.    exit(1);          
  58.  }
  59.  
  60.  ValoryProm(Archivo);
  61.  
  62.  media = Media(Archivo, N);
  63.  printf("La media de los resultados es: %.2f", media);
  64.  fclose(Archivo);
  65.  printf("\n\n");
  66.  system("pause");      
  67.  
  68. }

Espero su ayuda, saludos.


En línea

CalgaryCorpus


Desconectado Desconectado

Mensajes: 323


Ver Perfil WWW
Re: Ayuda con esto.
« Respuesta #1 en: 3 Noviembre 2017, 04:12 am »

Creo que el problema que tienes esta en los tipos de datos que usas.

En C hay clausura de tipos.
Si operas 2 tipos int, el resultado es int.

por ejemplo, 5 /3 es 1, no es 1.66666
otro ejemplo  2/4 es 0, no es 0.5

puedes forzar que se operen numeros float a pesar de tener int haciendo un cast hacia ese tipo asi:

(float) 2 / (float) 4

Existe otra regla respecto a operar tipos distinto, no es exactamente asi, pero para entenderlo, el tipo mas chico se convierte en el tipo mas grande

float operado con int, el compilador hace el cast por ti, entonces

(float) 2 / (float) 4 es igual a  (float) 2 / 4 y es igual a 2 / (float) 4.

reemplaza 2 y 4 por variables de tipo int y tendras algo mas generico.


En línea

Aqui mi perfil en LinkedIn, invitame un cafe aqui
Rhythmical

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: Ayuda con esto.
« Respuesta #2 en: 16 Noviembre 2017, 06:45 am »

Ese era el problema jajaja, Muchas gracias por la ayuda!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ayuda con esto
Scripting
wolfblood 1 1,879 Último mensaje 8 Enero 2023, 05:33 am
por reymosquito
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines