Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: tiby_fside en 18 de Julio 2014, 18:06

Título: Duda error en programa sencillo en C dividir dos enteros no devuelve decimales
Publicado por: tiby_fside en 18 de Julio 2014, 18:06
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*/


}
Título: Re:Duda error en programa sencillo en C
Publicado por: tiby_fside en 19 de Julio 2014, 00:25
Ya modifique el programa y ya me funciona.
Título: Re:Duda error en programa sencillo en C dividir dos enteros no devuelve decimales
Publicado por: Ogramar en 19 de Julio 2014, 15:30
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!