[Resuelto] input de Python en C++?

Iniciado por iUDEX, 27 Junio 2015, 02:51 AM

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

iUDEX

Hola, como sabrán he estado estudiando C++ y me ha surgido una gran duda.

He escrito un pequeñísimo programa:

Código (cpp) [Seleccionar]
#include <stdio.h>
main() {
float numero;
printf("Ingrese un numero: "); scanf("%f", & numero);
printf("%.2f", numero);
}


Ahora, funciona bien. Si se fijan en el modificador %.2f declaro que la cantidad se visualice con dos decimales (en caso de ser float). Si se ingresa un int, aparece de la forma, ejemplo: 10.00.

En otras palabras, pregunto si existe algo como el input de Python, ya que éste formatea las cantidades automáticamente, en caso de ser int, muestra 10, si es float, muestra 10,XX. Pero en C++?

Saludos!
Namasté, criatura.

ivancea96

Si es int, pondrás %i o %d. No puedes poner %.2f con un int. Como tienes que especificar si es int o si es float, no habrá manera de hacerlo automático.


Ahora vamos a ver: Eso no es C++, eso es C. En C++ sí que se puede hacer "automático". Pero en C++.

<stdio.h> es de C. En C++ se suele usa <iostream>. En vez de printf(), se usa el operador << del objeto "cout".

Código (cpp) [Seleccionar]
cout << num1 << ' ' << num2;

Sean del tipo que sean, se mostrarán bien por pantalla (salvo clases que no tengan una sobrecarga, pero eso es a parte)

iUDEX

CitarComo tienes que especificar si es int o si es float, no habrá manera de hacerlo automático.

Lo sé perfectamente. Pero yo preguntaba si existe algo como el input de Python, ya que le da igual el tipo, int o float; toma el valor ingresado y lo visualiza según el tipo. Si es 10, lo presenta con 10, si es 10.5, lo presenta con 10.5.

Ejemplo:

Código (python) [Seleccionar]
numero = input("ingrese numero: ")
print numero


Como sabemos, el tipo float de C++ acepta int también, si yo ingreso 10, lo mostrará (teniendo el %.2f) como 10.00. Y ése no quiero que sea mi resultado.

CitarAhora vamos a ver: Eso no es C++, eso es C. En C++ sí que se puede hacer "automático". Pero en C++.

Parece que sí, he estado aprendiendo C a ciegas. Digamos entonces, el título sería "input de Python en C?". Trato de seguir esta sintaxis del printf y todo eso porque se me hace un poco tedioso lo de cout, y también porque todo eso es nuevo para mí.

Gracias por responder ivancea96.

Saludos!
Namasté, criatura.

crack81

Bueno de entrada no puedes comparar a python y c porque el primer posee un tipado dinamico versus el tipado estatico de c o c++ a eso se le añade que python es un lenguaje de alto de nivel lo contrario a c

Al ser tipado dinamico en c o c++ por fuerzas tienes que especifar que tipo de dato vas a leer por eso tu trabajo es pensar que tipo tengo que escoger, si necesito hacer operaciones como divisiones o raices lo mejor es usar valores reales como los float o double pero si lo necesito hacer sumas o restas quizas solo enteros tipo int, short int etc.

El ejemplo es burdo espero se entienda, es cierto lo que dice  ivancea96 que en c++ con el operador "cout" da un ejemplo mas parecido al de python.

personalmente me gusta las cout de c++ que los printf de c porque te evita el formateo del tipo de dato

te dejo un ejemplo:
Código (cpp) [Seleccionar]
#include <iostream>

using namespace std;

int main()
{
    float x;
    cout<<"Ingrese un valor"<<endl;
    cin>>x;//leemos el valor
    cout<<x<<endl;//lo imprimimos
   
    cin.get();//estados lineas es para que no se cierre tu programa hasta dar un enter
    cin.get();
    return 0;
}
Si C/C++ es el padre de los lenguajes entonces ASM es dios.

tincopasan

No tengo idea de C ni  de C++ pero estás confundido con respecto a python, input devuelve un string por lo tanto no le importa lo que escribas en el input, cuando usas print devuelve la cadena tal cual pero no puedes usarla para operaciones matematicas que incluyan float de forma directa.

iUDEX

Muuuuy bien ejemplo crack81, la verdad es que todo eso es nuevo para mí, estaba un poco confundido.

He probado el código y sí, me imprime los valores como el input de Python;  y si escribo un string me devuelve 0, creo que es algo lógico.

Muchas gracias¡¡

CitarNo tengo idea de C ni  de C++ pero estás confundido con respecto a python, input devuelve un string por lo tanto no le importa lo que escribas en el input, cuando usas print devuelve la cadena tal cual pero no puedes usarla para operaciones matematicas que incluyan float de forma directa.

input no acepta strings...
El que acepta strings es raw_input, y es con este que no se puede hacer operaciones matematicas. Si pongo 1 y despues 2, me concatena la presentacion (muestra 12).
En cambio con input me suma perfectamente (muestra 3).

Gracias por sus respuestas, resuelto.
Saludos!
Namasté, criatura.

tincopasan

gck :
         perdón! nunca se me ocurrió pensar que usas python 2.x en vez de 3.x donde raw_input no existe más.

iUDEX

Citargck :
         perdón! nunca se me ocurrió pensar que usas python 2.x en vez de 3.x donde raw_input no existe más.

Ya veo... no hay problema. Tengo que pasarme a leer la documentación de Python 3.X, la verdad es que nunca lo he usado a fondo.
Namasté, criatura.