Autor Tema: Duda error en programa sencillo en C dividir dos enteros no devuelve decimales  (Leído 32809 veces)

tiby_fside

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 2
    • Ver Perfil
Hola muy buenas,soy nuevo en este foro y estoy haciendo ejercicios de programacion y estoy con uno que no me funciona bien y no se el motivo:

El ejercicio es el siguiente:

Escriba una función que reciba dos numeros como argumentos.La funcion debe dividir el primer numero entre el segundo.No divida cuando el segundo numero introducido sea cero.

No entiendo por qué no me realiza el enunciado if.Estoy diciendole que si el numero2 introducido por teclado es distinto a cero,que realice la operación,y si no que no haga nada,pero me hace la operación de división igualmente.

gracias de antemano y un saludo.

/*PROGRAMA CON UNA FUNCION PARA CALCULAR EL PRODUCTO DE DOS NUMEROS*/

#include<stdio.h>

int numero1;
int numero2;
int resultado;

int division(int a,int b); /*PROTOTIPO DE FUNCION*/

main()
{
    printf("Introduce dos numeros enteros: ");
    scanf("%d %d", &numero1, &numero2);

    resultado = division(numero1,numero2); /*llama a la funcion y pasa los argumentos numero1 y numero2*/

    printf("\nla division de %d entre %d es %d", numero1,numero2,resultado);
}

int division(int a,int b) /*DEFINICION DE FUNCION*/
{

    if(numero2 != 0)
      return numero1/numero2; /*regresa la division de los dos numeros introducidos*/


}
« Última modificación: 19 de Julio 2014, 15:27 por Ogramar »

tiby_fside

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 2
    • Ver Perfil
Re:Duda error en programa sencillo en C
« Respuesta #1 en: 19 de Julio 2014, 00:25 »
Ya modifique el programa y ya me funciona.

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Hola! Para pegar el código pulsa el botón # del editor del foro y pégalo entre las etiquetas [ code ] ... [ / code] que te aparecerán.

El programa planteado parece sencillo pero tiene sus pequeñas complicaciones. Para que funcione correctamente es recomendable:

Inicializar las variables

Para obtener un valor decimal tipo double ( o float si se prefiere) debemos hacer casting (convertir) uno de los valores enteros al tipo decimal, por ejemplo: return (double)a/b;

El código quedaría así:

Código: [Seleccionar]
#include <stdio.h>
#include <stdlib.h>

int numero1=0;;
int numero2=0;
double resultado=0.0;

double division(int a,int b); /*PROTOTIPO DE FUNCION*/

int main() {
    printf("Introduce un numero entero: ");
    scanf("%d", &numero1);
    printf("Introduce otro numero entero: ");
    scanf("%d", &numero2);
    resultado = division(numero1,numero2); /*llama a la funcion y pasa los argumentos numero1 y numero2*/
    if (resultado!=-1) {
    printf("\nla division de %d entre %d es %lf", numero1,numero2,resultado);}
}

double division(int a,int b) { /*DEFINICION DE FUNCION*/
    if(b != 0) {return (double)a/b;}
    else {
        printf("La division entre cero no esta permitida. ");
        return -1;
    }
         /*regresa la division de los dos numeros introducidos*/
    return 0;
}

Saludos!

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".