No mostrar decimales en Visual C

Iniciado por josejs, 21 Enero 2013, 22:42 PM

0 Miembros y 1 Visitante están viendo este tema.

josejs

Buenas tardes, estoy realizando un ejercicio y no consigo sacarlo, llevo dándole vueltas toda la tarde, a ver si alguien puede echarme una mano, el ejercicio es el siguiente.

Realizar un programa que lea la altura en cms de un individuo y muestre, en un
label, cuántos metros y cms tiene. (185 -> 1 metro, 85 cms. 205-> 2 metros 5 cms.).
Realizar con un formulario de la siguiente forma:




Este es el código que de momento llevo hecho....

private void button1_Click(object sender, EventArgs e)
       {
           double metro, cms;
           double a, b;
                       
           a = Convert.ToDouble(textBox1.Text);
           b = Convert.ToDouble(textBox1.Text);
           metro =  a / 100;
           cms = b / 1;


            resultado.Text = ("Mide " + metro +" metros y "+ cms + " cms");

Creo que voy medio encaminado, pero no se ya como hacerlo....

ApOkAlizE

No se si he entendido exactamente a lo que te referías. He tenido una idea para hacer lo que me parece que querías hacer.
#include <iostream>

using namespace std;

int main()
{
    int x, y;
    cin >> x;
    y = x;
    x = x / 100;
    y = y - (x*100);
    cout << x << " metro" << endl;
    cout << y << " centimetros" << endl;
    return 0;
}

No se si querías bien bien eso... ya me dirás si es esto u otra cosa.

PD: Se me hace triste ver como era este foro de activo hace un par o tres de años y con lo que se ha convertido...
Los virus informaticos son como las personas, hacen lo posible para destruir y hacen lo impossible para no ser destruidos... - ApOkAlizE

85

Me cerraron el Windows Live Spaces, entonces me creé un WordPress XD
http://etkboyscout.wordpress.com/

durasno

metros=altura/100;
centimetros=altura%100;

    cout << metros << " metro" << endl;
    cout << centimetros << " centimetros" << endl;



Saludos
Ahorrate una pregunta, lee el man

josejs

Gracias de antemano, consigo que me saque los metros y los centimetos, pero en ambos me saca la misma cifra.



He estado leyendo y practicando con los datos que me habeis dado, pero lo único que me falta son que en los metros no salgan los decimales. Y que en los centrimetros únicamente salgan los decimales.

avesudra

#5
Hola josejs, puedes usar un cast a int para truncar esos decimales de la siguiente forma:
Código (cpp) [Seleccionar]
metros=(int)(altura/100);
Una vez hecho ese cast supongamos que tuviesemos los siguientes datos:
Altura: 385 cms
Tendríamos con lo dicho anteriormente esta operación:
metros = (truncar)(385/100) todo esto es igual a 3
Bien eso lo tenemos. Ahora para sacar los centímetros que quedan, en C++ y en C con los tipos siguientes:

  • float
  • double
No se puede hacer la operación módulo directamente con el operador '%'(ya que no dá el resultado correcto como puedes comprobar), hay que hacerlo con la siguiente función:
Código (cpp) [Seleccionar]
double fmod ( double numerator,double denominator );
float fmod (float numerator,float denominator );
long double fmod (long double numerator, long double denominator );

Referencia ~~> http://www.cplusplus.com/reference/cmath/fmod/
Por lo tanto el código quedaría así:
Código (cpp) [Seleccionar]

metros = (int)(altura/100);
centimetros = fmod(altura,100);

Además tienes que añadir este archivo de cabecera para la función 'fmod':
Código (cpp) [Seleccionar]
#include <cmath>
Lo que me parece bastante extraño es que el compilador no te haya dicho nada.

¡Un saludo!
Regístrate en

durasno

CitarHe estado leyendo y practicando con los datos que me habeis dado, pero lo único que me falta son que en los metros no salgan los decimales. Y que en los centrimetros únicamente salgan los decimales.
me olvide de aclarar q las variables metros y centimetros deben ser del tipo int(sino segui el consejo de avesudra)


SAludos
Ahorrate una pregunta, lee el man