• Viernes 8 de Noviembre de 2024, 16:45

Autor Tema:  Minifallo En El Código  (Leído 1582 veces)

aprendizdec

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Minifallo En El Código
« en: Miércoles 4 de Junio de 2008, 22:21 »
0
Buenas, un saludo a todo el foro.

Estoy aprendiendo C ahora, con los tutoriales que he encontrado por la red que por cierto parecen muy buenos.

Tengo un problema con un ejercicio que estoy tratando de hacer...

/*Escribir un programa (en lenguaje C) que:

1º) Pida por teclado dos números (datos enteros).
2º) Muestre por pantalla la media artimética de los números introducidos, pero, sólo en el caso de
que ambos números sean mayores que cero.

Código: Text
  1.  
  2. #include <stdio.h>
  3.  
  4. int main()
  5.  
  6. {
  7.     int a, b;
  8.     float media;
  9.    
  10.     printf("Introduzca primer numero: ");
  11.     scanf("%d", &a);
  12.     printf("Introduzca segundo numero: ");
  13.     scanf("%d", &b);
  14.    
  15.     media = ( a + b ) / 2;
  16.    
  17.     if ( a > 0 && b > 0 )
  18.     printf("%f", media);
  19.    
  20.     return 0;
  21. }
  22.  
C:\Documents and Settings\mikel\Escritorio>ejercicio6.exe
Introduzca primer numero: 5
Introduzca segundo numero: 2
3.000000

Por qué no sale 3.50000 ??

Tambien lo que voy a hacer es %2f para que no aparezcan tantos decimales..

Gracias!  :hola:

utz

  • Miembro activo
  • **
  • Mensajes: 44
    • Ver Perfil
Re: Minifallo En El Código
« Respuesta #1 en: Jueves 5 de Junio de 2008, 13:31 »
0
prueba declarando las variables antes del main xD

usa la libreria #include<stdlib.h>

y al final debes poner una pausa para ver  el resutado por pantalla y que el programa no pase de largo.

para hacer la pausa debes escribir:

system("pause");


tambien hay otros tipos de pausa, preo hay ya debes buscar tu xD


saludos

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re: Minifallo En El Código
« Respuesta #2 en: Jueves 5 de Junio de 2008, 19:15 »
0
Cita de: "aprendizdec"
Buenas, un saludo a todo el foro.

Introduzca primer numero: 5
Introduzca segundo numero: 2
3.000000

Por qué no sale 3.50000 ??

El problema es que defines tus variables de tipo entero (int) y el numero 2 tambien es entero, como todos son enteros, los resultados son de tipo entero, y luego lo asigna a la variable float. El resultado de dividir 5+2 (7) entre 2 da 3 y sobra uno (en entero claro).

Para obtener un resultado float, al menos uno de los operandos debe ser float, ya sea que definas a y b de tipo float, o conviertas tu 2 a float. prueba lo siguiente:

Código: Text
  1.  
  2.     media = ( a + b ) / 2.0;
  3.  
  4.  

al poner 2.0, se convierte en float, y entonces ahora si obtendras un resultado float, 3.5

Saludos :hola:

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

shakka

  • Miembro HIPER activo
  • ****
  • Mensajes: 679
  • Nacionalidad: cr
    • Ver Perfil
    • http://mbrenes.com
Re: Minifallo En El Código
« Respuesta #3 en: Jueves 5 de Junio de 2008, 22:10 »
0
Citar
al poner 2.0, se convierte en float, y entonces ahora si obtendras un resultado float, 3.5

De igual forma podrias hacer casting explicito:

Código: Text
  1. media = ( a + b ) / (float) 2;
  2.  

S0LD13R

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
    • http://unknown-code.blogspot.com
Re: Minifallo En El Código
« Respuesta #4 en: Viernes 6 de Junio de 2008, 19:59 »
0
La mejor forma es declarar las variables en tipo flotante.
float a, b, media;

Salu2