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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  programa muestra resultado que no deberia
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: programa muestra resultado que no deberia  (Leído 3,352 veces)
ivanel93

Desconectado Desconectado

Mensajes: 10


Ver Perfil
programa muestra resultado que no deberia
« en: 22 Septiembre 2012, 06:02 am »

hola me gustaría recibir ayuda por parte de el equipo del foro tengo un progrma que calcula la ley de columb y al dividir entre cero se indetermina y se supone que me muestra un rotulo diciendo que no se puede calcular y el resultado debe dar cero, pero en este caso no lo hace me muestra un resultado , que no deberia de salir me pueden ayudar diciendo que esta mal, por que la profesora solo me confundio



Código
  1. #include<iostream.h>
  2. #include<conio.h>
  3. #include<math.h>
  4.  
  5. class coul
  6. {
  7.  protected:
  8.   float q1,q2,r,d;
  9.  public:
  10.   void lee();
  11.   void calc();
  12.   void imp();
  13. };
  14.  
  15. void coul::lee()
  16. {
  17.  cout<<"\n Para el calculo de la ley de Coulumb de Q1, Q2 y R"<<endl;
  18.  cout<<"\n Da Q1 = ";
  19.  cin>>q1;
  20.  cout<<"\n Da Q2 = ";
  21.  cin>>q2;
  22.  cout<<"\n Da R = ";
  23.  cin>>r;
  24. }
  25.  
  26. void coul::calc()
  27. {
  28.  float k=9E9;
  29.  if(r!=0)
  30.   d=(k*(q1*q2))/pow(r,2);
  31.  else
  32.   cout<<"\n No se puede calcular con R = "<<r<<endl;
  33. }
  34. void coul::imp()
  35. {
  36.   cout<<"\n\n RESULTADO "<<endl;
  37.   cout<<"\n D = "<<d<<endl;
  38. }
  39.  
  40. void main()
  41. {
  42.  clrscr();
  43.  coul x;
  44.  x.lee();
  45.  x.calc();
  46.  x.imp();
  47.  getch();
  48. }


En línea

Stakewinner00


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Re: programa muestra resultado que no deberia
« Respuesta #1 en: 22 Septiembre 2012, 09:20 am »

nose si te referias a esto pero bueno te cuelgo el codigo

en este caso si R=0 el resultado es 0

Código
  1. #include<iostream.h>
  2. #include<conio.h>
  3. #include<math.h>
  4.  
  5. class coul
  6. {
  7.  protected:
  8.   float q1,q2,r,d;
  9.  public:
  10.   void lee();
  11.   void calc();
  12.   void imp();
  13. };
  14.  
  15. void coul::lee()
  16. {
  17.  cout<<"\n Para el calculo de la ley de Coulumb de Q1, Q2 y R"<<endl;
  18.  cout<<"\n Da Q1 = ";
  19.  cin>>q1;
  20.  cout<<"\n Da Q2 = ";
  21.  cin>>q2;
  22.  cout<<"\n Da R = ";
  23.  cin>>r;
  24. }
  25.  
  26. void coul::calc()
  27. {
  28.  float k=9E9;
  29.  if(r!=0)
  30.   d=(k*(q1*q2))/pow(r,2);
  31.  else
  32.   cout<<"\n No se puede calcular con R = "<<r<<endl;
  33. }
  34. void coul::imp()
  35. {
  36.   cout<<"\n\n RESULTADO "<<endl;
  37.   if (r!=0)
  38.   cout<<"\n D = "<<d<<endl;
  39.   else
  40.      cout<<"\n D = "<<0<<endl;
  41. }
  42.  
  43. void main()
  44. {
  45.  coul x;
  46.  x.lee();
  47.  x.calc();
  48.  x.imp();
  49.  getch();
  50. }


En línea

flony


Desconectado Desconectado

Mensajes: 576



Ver Perfil
Re: programa muestra resultado que no deberia
« Respuesta #2 en: 23 Septiembre 2012, 07:14 am »

no se si te sirva pero lo arregle un poco y el cero me da que no lo puede calcular...como vos queres
Código:
#include<iostream>
#include<math.h>
using namespace std;
class coul
 {
  protected:
   double q1,q2,r,d;
  public:
   void lee();
   void calc();
   void imp();
 };
 
void coul::lee()
 {
  cout<<"\n Para el calculo de la ley de Coulumb de Q1, Q2 y R"<<endl;
  cout<<"\n Da Q1 = ";
  cin>>q1;
  cout<<"\n Da Q2 = ";
  cin>>q2;
  cout<<"\n Da R = ";
  cin>>r;
 }
 
void coul::calc()
 {
  double k=9E9;
  if(r!=0)
   d=(k*(q1*q2))/pow(r,2);
  else
   cout<<"\n No se puede calcular con R = "<<r<<endl;
 }
void coul::imp()
 {
   cout<<"\n\n RESULTADO "<<endl;
   if (r!=0)
   cout<<"\n D = "<<d<<endl;
   else
      cout<<"\n D = "<<0<<endl;
 }
 
void main()
 {
  coul x;
  x.lee();
  x.calc();
  x.imp();
  cin.get();
 }
habia unos problemas de pasar float a double y no usas nunca usin namespace std;
« Última modificación: 23 Septiembre 2012, 07:18 am por flony » En línea

si un problema no tiene solucion entonces no es un problema...es algo inevitable
leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: programa muestra resultado que no deberia
« Respuesta #3 en: 23 Septiembre 2012, 17:05 pm »

Que con r=0 de 0 u otra cosa no es muy propio:
Código:
#include <iostream>
#include<math.h>
using namespace std;
class coul
 {
    protected:
    float q1,q2,r,d;
    public:
    void lee();
    void calc();
    void imp();
 };

void coul::lee()
 {
  cout<<"\n Para el calculo de la ley de Coulumb de Q1, Q2 y R"<<endl;
  cout<<"\n Da Q1 = ";
  cin>>q1;
  cout<<"\n Da Q2 = ";
  cin>>q2;
  r=0;
  while (r==0)
    {
        cout<<"\n Da R = ";
        cin>>r;
        if(r==0)
            cout<<"\n No se puede calcular con R = "<<r<<endl;
    }

 }

void coul::calc()
 {
  float k=9E9;
 
   d=(k*(q1*q2))/pow(r,2);
  
 }
void coul::imp()
 {
   cout<<"\n\n RESULTADO "<<endl;
   cout<<"\n D = "<<d<<endl;
 }

int main()
 {
  coul x;
  x.lee();
  x.calc();
  x.imp();

 }[code=cpp]
[/code]
« Última modificación: 25 Septiembre 2012, 15:14 pm por leosansan » En línea

ivanel93

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Re: programa muestra resultado que no deberia
« Respuesta #4 en: 25 Septiembre 2012, 05:57 am »

ok para lo básico esta bien por parte de Stakewinner00, y si
flony ya se eso del usngnaspce pero esque compilo en tc :( aun no me adapto a los otros como dev  y cb, por cierto tome en cuenta lo de los doubles, y pues para lo que quería Stakewinner00 me dio la solución pero me agrado el código de leosansan forzando a ingresar un numero hasta que realice la operación, pero lo que tengo duda es por que me salia un resultado, aun ingresando todas las vbles como ceros?
En línea

Javier235

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Re: programa muestra resultado que no deberia
« Respuesta #5 en: 25 Septiembre 2012, 06:19 am »

... pero lo que tengo duda es por que me salia un resultado, aun ingresando todas las vbles como ceros?

¿Qué es lo que te mostraba? Algún mensaje de error? o resultado numérico? Mostrá algo si podés...
En línea

ivanel93

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Re: programa muestra resultado que no deberia
« Respuesta #6 en: 2 Octubre 2012, 04:59 am »

el código original( el primero que postee) al ingresar todos los datos en cero( eso incluye la distancia) que al ser dividido entre cero, si daba el rotulo de que no se podía realizar, pero en el resultado mostraba un valor algo de "x10e9..." ó "x10e-9..."  no recuerdo pero según lo que se al suceder eso( dividir entre cero) debería mostrar el cero de la operación realizada, si soy algo claro?
En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: programa muestra resultado que no deberia
« Respuesta #7 en: 2 Octubre 2012, 14:01 pm »

el código original( el primero que postee) al ingresar todos los datos en cero( eso incluye la distancia) que al ser dividido entre cero, si daba el rotulo de que no se podía realizar, pero en el resultado mostraba un valor algo de "x10e9..." ó "x10e-9..." 
Lo que sucede es que la variable no está inicializada, por lo que contendrá basura. Prueba a inicializar con un valor cocreto, por ejemplo "d=0" y veras la diferencia.
En línea

ivanel93

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Re: programa muestra resultado que no deberia
« Respuesta #8 en: 16 Octubre 2012, 05:55 am »

esta bien lo checare y regreso par aver que pasa :D
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines