elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [Ayuda] Comenzando con C++...
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: [Ayuda] Comenzando con C++...  (Leído 6,944 veces)
Lettro

Desconectado Desconectado

Mensajes: 6


Ver Perfil
[Ayuda] Comenzando con C++...
« en: 8 Diciembre 2012, 23:30 pm »

Buenas, me acabo de registrar en el foro, ya que necesitaria ayuda con la creación de un sencillo programa, el cual consiste en resolver una ecuación cuadratica.
Tuve varios errores y ahora llege a resolver la mayoría, pero ahora me tira 1 alerta más, la cual es importante ya que es la causante de que no se resuelva la ecuación.

Les dejo el código que tengo:

Código
  1. #include <stdio.h>
  2. #include <iostream>
  3. #include <math.h>
  4.  
  5. /*
  6.  
  7.  
  8. ...Codigo generado por el programa...
  9.  
  10.  
  11. */
  12.  
  13. /* Boton que daria el resultado de la ecuacion */
  14. private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
  15. int a = Convert::ToInt16(textBox1->Text);
  16. int b = Convert::ToInt16(textBox2->Text);
  17. int c = Convert::ToInt16(textBox3->Text);
  18.  
  19.        int discriminant = sqrt(float(b*b) -  float(4*a*c));
  20. cout << ((-b + discriminant) / (2*a)) << endl;
  21. }

El warning que me tira es el siguiente:
Citar
warning C4244: 'inicializando' : conversión de 'float' a 'int'; posible pérdida de datos

Busqué el warning y pero nada me dio solución. Tampoco entiendo bien por qué en el sqrt() tengo que aclarar si los valores van a ser float, double, long double..
la cosa es que el usuario agrega los 3 valores de la ecuación cuadrática, uno en cada textbox, y después se toca el boton1 y se supone que tendría que dar el resultado de toda la ecuación, cuya fórmula es la que esta en la última línea de código (cout << ((-b...

Tirenme todos los datos, recomendaciones, explicaciones que quieran que todo me va a sumar. Gracias!

Aclaro, que como dice en el título del post, estoy recién empezando (este sería mi primer programa) con C++ (vengo de programar con PHP, javascript, AJAX) y también, que estoy utilizando Visual C++ Express 2010. Este mismo programita, lo hice antes de ayer en PHP y quedo listo en 30 minutos, me decidí a hacerlo tipo aplicación y me meti en un quilom**


En línea

Lettro

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: [Ayuda] Comenzando con C++...
« Respuesta #1 en: 9 Diciembre 2012, 00:56 am »

En otro foro me dijeron que declare "discriminant" como float, y eso me quito la alerta, pero ahora mi problema es el siguiente:
La cosa ahora es que, no me muestra ningun error/alerta, pero no me tira el resultado de la ecuación. Mi duda también es que, cout en Visual C++ donde se supone que tiraria la línea de texto dentro del form? No tendría que mostrar el resultado en un label algo asi?


En línea

naderST


Desconectado Desconectado

Mensajes: 625



Ver Perfil WWW
Re: [Ayuda] Comenzando con C++...
« Respuesta #2 en: 9 Diciembre 2012, 09:10 am »

Si estás trabajando con una GUI deberías mostrarlo en un label o algo por el estilo, por otra parte,  Visual Studio si no me equivoco tiene una consola donde debería mostrarse lo que estás imprimiendo con cout. Como te mencionaron en el otro foro, deberías declarar discriminant como float puesto que si lo declaras como int el número se truncará y podrías perder información del mismo. Si te fijas a,b y c los estás trabajando como entero, sería bueno que los trabajes como flotante porque los coeficientes de la ecuación pueden ser cualquier número real.

Te doy un consejo, primero lo primero, si estás empezando con C++ empieza con aplicaciones pequeñas en consola, para luego poder realizar aplicaciones con interfaces gráficas.

EDIT.

Con respecto al casting en la función sqrt() no es necesario debido a que esta función esta sobrecargada, es decir, dependiendo del tipo de dato que le pases como argumento se va a llamar a la función que le corresponda.
« Última modificación: 9 Diciembre 2012, 09:14 am por naderST » En línea

Lettro

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: [Ayuda] Comenzando con C++...
« Respuesta #3 en: 10 Diciembre 2012, 04:00 am »

Lo probe en consola y me muestra el resultado perfectamente. Se ve que en un form el cout no funciona, por lo tanto tendría que mostrar el resultado en un label como decis.. La cosa es que no tengo idea como mostrarlo en un label. Busque bastante y no pude encontrar la simple función para mostrar el resultado en un label.
También probe con print_f pero lo mismo que con cout, no me tira nada, y es más, me tira un error :
error C3861: 'print_f': no se encontró el identificador

Espero su respuesta, gracias!
En línea

naderST


Desconectado Desconectado

Mensajes: 625



Ver Perfil WWW
Re: [Ayuda] Comenzando con C++...
« Respuesta #4 en: 10 Diciembre 2012, 04:08 am »

Evidentemente ni con cout ni printf vas a mostrar algo en un form... Por lo visto estás utilizando la suite de Visual Studio, no tengo experiencia utilizando VS, pero asumo que de la misma manera en que creaste el botón creas el label y desde el "evento" clicked del botón le asignas el texto al label.

PD: Te recomiendo que leas un libro básico de C/C++
En línea

Lettro

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: [Ayuda] Comenzando con C++...
« Respuesta #5 en: 10 Diciembre 2012, 04:37 am »

Utilizo Visual C++ Express 2010, ya trate de asignarle a un label el resultado, pero me sale el error de que el float no se puede convertir a string...
Tengo un par guardados en la compu, después me voy a poner a leer alguno..
En línea

naderST


Desconectado Desconectado

Mensajes: 625



Ver Perfil WWW
Re: [Ayuda] Comenzando con C++...
« Respuesta #6 en: 10 Diciembre 2012, 05:10 am »

Deberías ponerte de una vez ya que estás trancado por cosas muy básicas diría yo.
En línea

Lettro

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: [Ayuda] Comenzando con C++...
« Respuesta #7 en: 10 Diciembre 2012, 20:00 pm »

Lo pude solucionar, mostrando el resultado en un label. Aca esta todo:

Código
  1. float a = Convert::ToInt16(textBox1->Text);
  2. float b = Convert::ToInt16(textBox2->Text);
  3. float c = Convert::ToInt16(textBox3->Text);
  4.  
  5. float discriminant = sqrt(float(b*b) -  float(4*a*c));
  6. float solucion_1 = (-b + discriminant) / (2*a);
  7.  
  8. label1 -> Text = solucion_1.ToString();

La cosa ahora es que el resultado final, me lo tira como entero. Por ejemplo, la ecuación tendria que dar -1,66 y da -1. Esto es porque al principio, convierto el texto de los textbox, en int16. Necesito convertirlos a float, pero probe con miles de funciones que encontre en internet y ninguna funciona. Probe con boost::lexical_cast, atof(), sscanf... Espero su respuesta.
En línea

naderST


Desconectado Desconectado

Mensajes: 625



Ver Perfil WWW
Re: [Ayuda] Comenzando con C++...
« Respuesta #8 en: 11 Diciembre 2012, 00:44 am »

Porque al hacer Convert::ToInt16() te lo convierte a entero lo trunca, por lo tanto no va a mostrar los decimales.
En línea

Lettro

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: [Ayuda] Comenzando con C++...
« Respuesta #9 en: 11 Diciembre 2012, 00:53 am »

Te agradezco toda la ayuda que me estas dando, pero en el 70% de las respuestas que me diste, parece como si no leyeras todos mis mensajes completamente. Ya sé que se trunca el resultado por eso. Te puse :

Citar
Esto es porque al principio, convierto el texto de los textbox, en int16. Necesito convertirlos a float, pero...

Te agradecería muchísimo si pudieses darme una solución a la conversión del string a float. Desde ya, muchísimas gracias!
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
novato comenzando pido ayuda
Ingeniería Inversa
pedraosone 3 2,721 Último mensaje 29 Febrero 2008, 00:34 am
por pedraosone
Comenzando...
Hacking
a4n4f4z 5 4,348 Último mensaje 16 Agosto 2011, 21:18 pm
por [u]nsigned
Comenzando...
Programación C/C++
Dealer098 0 1,947 Último mensaje 20 Diciembre 2011, 21:23 pm
por Dealer098
Necesito ayuda Porfavor hasta ahora comenzando con esto
Ingeniería Inversa
cloud90 4 2,940 Último mensaje 21 Abril 2012, 23:39 pm
por cloud90
Ayuda comenzando a crackear « 1 2 »
Ingeniería Inversa
manudark88 14 14,608 Último mensaje 6 Septiembre 2018, 13:52 pm
por apuromafo CLS
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines