Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Br1ant en 27 Junio 2015, 02:51 am



Título: [Resuelto] input de Python en C++?
Publicado por: Br1ant en 27 Junio 2015, 02:51 am
Hola, como sabrán he estado estudiando C++ y me ha surgido una gran duda.

He escrito un pequeñísimo programa:

Código
  1. #include <stdio.h>
  2. main() {
  3. float numero;
  4. printf("Ingrese un numero: "); scanf("%f", & numero);
  5. printf("%.2f", numero);
  6. }

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!


Título: Re: input en C++
Publicado por: ivancea96 en 27 Junio 2015, 03:01 am
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
  1. 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)


Título: Re: input en C++
Publicado por: Br1ant en 27 Junio 2015, 19:44 pm
Citar
Como 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
  1. numero = input("ingrese numero: ")
  2. 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.

Citar
Ahora 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!


Título: Re: input de Python en C++?
Publicado por: crack81 en 27 Junio 2015, 20:31 pm
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
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7.    float x;
  8.    cout<<"Ingrese un valor"<<endl;
  9.    cin>>x;//leemos el valor
  10.    cout<<x<<endl;//lo imprimimos
  11.  
  12.    cin.get();//estados lineas es para que no se cierre tu programa hasta dar un enter
  13.    cin.get();
  14.    return 0;
  15. }
  16.  


Título: Re: input de Python en C++?
Publicado por: tincopasan en 27 Junio 2015, 20:45 pm
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.


Título: Re: input de Python en C++?
Publicado por: Br1ant en 27 Junio 2015, 21:11 pm
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¡¡

Citar
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.

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!


Título: Re: [Resuelto] input de Python en C++?
Publicado por: tincopasan en 28 Junio 2015, 11:48 am
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.


Título: Re: [Resuelto] input de Python en C++?
Publicado por: Br1ant en 28 Junio 2015, 19:31 pm
Citar
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.

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.