¿Se pueden convertir enteros a flotantes? (int a float)

BUEN DIA,

MI DUDA RADICA EN COMO PUEDO CONVERTIR VARIABLES ENTEROS EN UN PROGRAMA, ASIGNADOS POR EL USUARIO, A FLOTANTES. ESTE ES EL PROGRAMA QUE ESTOY REALIZANDO:

#include <stdio.h>

int main ()
{

float p=0,q=0,r=0,s=0;
int a=0,b=0,c=0,d=0;

printf ("Dame el primer numero");
scanf ("%d",&a);

printf ("Dame el segundo numero");
scanf ("%d",&b);

if  (b==0) {
        printf ("Se trata de una indeterminacion, favor de introducir un numero diferente a 0 ");
        scanf("%d");
        return 0;
           }  
       
        else if  (a%b>0) {
             a==p;
             b==q;
             r=p/q;
             printf ("El resultado de la division es %f: ",r);
            
             }
            
             else  {
                  c=a/b;
                  printf ("El resultado de la division es %d",c);
                 
                       }
       
       
        getchar ();
        getchar ();

return 0;
}

LA FUNCION DEL PROGRAMA ES PEDIR DOS NUMEROS PARA DIVIDIRLOS, SI UN NUMERO INGRESADO ES IGUAL A CERO, MARCAR INDETERMINACION, SI EL RESIDUO ES IGUAL A CERO, MOSTRAR EL RESULTADO EN ENTEROS, PERO SI EL RESIDUO ES MAYOR  A CERO, MOSTRAR EL RESULTADO EN DECIMALES, ES AQUI DONDE RADICA MI DUDA.

MIL GRACIAS!



Elena!! Beso



Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Tienes dos opciones: Vaciar

Tienes dos opciones:

  • Vaciar el resultado de la división (float) en una variable entera (int)
    float resultado;
    int res_int;
     
    //Aquí las condiciones, si el residuo es diferente de cero, imprimes normal
    //pero si es cero, asignas...
       res_int=resultado;
    //e imprimes esa variable res_int
     
  • Comprobado que el residuo es cero, imprimir en float, pero especificando que quieres 0 decimales, así:
    float resultado;
    printf("El resultado es: %.0f",resultado);
     
    //%.0f  => 0 decimales
    //%.1f  => 1 decimal
    //%.2f  => 2 decimales
    // y así sucesivamente
     
    Esta opción me parece la mejor, puesto que te ahorras un par de líneas de código y una variable ;) 
Imagen de joserc87

Otra opción.

Ya se que esto está abandonado, pero por si alguien llega aquí, hay otra opción: hacer un casting. Vale no solo para printf, sino en general:

float resultado;
printf("El resultado es: %d",(int)resultado);
// Si tenemos dos funciones:
void fun (int a);
void fun (float a);
 
fun ((int)resultado); // Llamaría a la primera implementación

Bueno, lo dicho, perdón por resucitar la hebra, pero me parecía que había que ponerlo :P.

Saludos


Be pointer my friend...

Dennis Ritchie. Padre de C y cocreador de UNIX.

R.I.P.

 

Imagen de elena ron

Gracias

Muchas gracias, tienes razon, es mejor la segunda opcion

;)

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.