Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: ivanel93 en 22 Septiembre 2012, 06:02 am



Título: programa muestra resultado que no deberia
Publicado por: ivanel93 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. }


Título: Re: programa muestra resultado que no deberia
Publicado por: Stakewinner00 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. }


Título: Re: programa muestra resultado que no deberia
Publicado por: flony 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;


Título: Re: programa muestra resultado que no deberia
Publicado por: leosansan 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]


Título: Re: programa muestra resultado que no deberia
Publicado por: ivanel93 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?


Título: Re: programa muestra resultado que no deberia
Publicado por: Javier235 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...


Título: Re: programa muestra resultado que no deberia
Publicado por: ivanel93 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?


Título: Re: programa muestra resultado que no deberia
Publicado por: leosansan 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.


Título: Re: programa muestra resultado que no deberia
Publicado por: ivanel93 en 16 Octubre 2012, 05:55 am
esta bien lo checare y regreso par aver que pasa :D