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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


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

Desconectado Desconectado

Mensajes: 18


Ver Perfil
consejos sobre programa
« en: 26 Octubre 2014, 13:31 pm »

buenas tengo realizado este programa:

Código
  1. #include <iostream>
  2. #include <math.h>
  3. using namespace std;
  4. int main(){
  5.    double a,b,c;
  6.    cout<<"Ingresa a"<<endl;
  7.    cin>>a;
  8.    cout<<"Ingresa b"<<endl;
  9.    cin>>b;
  10.    cout<<"Ingresa c"<<endl;
  11.    cin>>c;
  12.    double disc=pow(b,2)-4*a*c;
  13.    if(a!=0){
  14.        if(disc<0){
  15.            cout<<"Tiene raices imaginarias";
  16.        }else{
  17.            double x1=(-b+sqrt(disc))/(2*a);
  18.            double x2=(-b-sqrt(disc))/(2*a);
  19.            cout<<"X1 = "<<x1<<" X2 = "<<x2;
  20.        }
  21.    }else{
  22.        cout<<"El coeficiente a debe ser diferente a 0";
  23.    }
  24.    return 0;
  25. }

Mis preguntitas son las siguientes:
Como hacer un infinite main loop para que al acabar pregunte al usuario si quiere hacer mas ecuaciones o salir?
Y como puedo conseguir que el usuario no pueda meter letras para que de un error, gracias de antemano saludos


« Última modificación: 26 Octubre 2014, 18:54 pm por #!drvy » En línea

MeCraniDOS


Desconectado Desconectado

Mensajes: 337


Sr. Glass


Ver Perfil
Re: consejos sobre programa
« Respuesta #1 en: 26 Octubre 2014, 14:26 pm »

Como hacer un infinite main loop para que al acabar pregunte al usuario si quiere hacer mas ecuaciones o salir?

Puedes utilizar la instruccion

Código
  1. do
  2. {
  3.  
  4.  // Codigo que quieres que se repita
  5.  
  6. } while(/*condicion, Ej: letra == 's' || letra == 'S'*/);

Saludos


En línea

"La física es el sistema operativo del Universo"
     -- Steven R Garman
rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: consejos sobre programa
« Respuesta #2 en: 26 Octubre 2014, 15:52 pm »

como puedo conseguir que el usuario no pueda meter letras para que de un error
En C++ estándar no puedes bloquear la pulsación de teclas, para ello debes utilizar una biblioteca de terceros o el API del SO.

En su lugar lo que puedes hacer es leer una linea de texto y validar su contenido, dos temas sobre ello son:
duda c++
Leer un char como float

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
novatus84

Desconectado Desconectado

Mensajes: 18


Ver Perfil
Re: consejos sobre programa
« Respuesta #3 en: 26 Octubre 2014, 18:46 pm »

Porque me da error el segundo else? no me hace ni el calculo? Gracias por la ayuda.


Código
  1. #include <iostream>
  2. #include <math.h>
  3. using namespace std;
  4.  
  5.  
  6. int main(){
  7.  
  8.  
  9.    double a,b,c;
  10.    char n;
  11.  
  12.  
  13.    do{
  14.  
  15.    cout<<"Ingresa a"<<endl;
  16.    cin>>a;
  17.    cout<<"Ingresa b"<<endl;
  18.    cin>>b;
  19.    cout<<"Ingresa c"<<endl;
  20.    cin>>c;
  21.    double disc=pow(b,2)-4*a*c;
  22.  
  23.        if(a!=0){
  24.        if(disc<0){
  25.            cout<<"Tiene raices imaginarias";
  26.        }else{
  27.            double x1=(-b+sqrt(disc))/(2*a);
  28.            double x2=(-b-sqrt(disc))/(2*a);
  29.            cout<<"X1 = "<<x1<<" X2 = "<<x2;
  30.        }
  31.        }else {
  32.        cout<<"El coeficiente a debe ser diferente a 0";
  33.    }
  34.        cout << "\nquieres hacer otra ecuacion?";
  35.        cout << "\nteclea 'y' para 'Si' -- 'n' para 'No': ";
  36.        cin  >> n;
  37.        cout << "\n";
  38.  
  39.    }while (n == 'y' || n == 'Y');
  40.  
  41.  
  42.    return 0;
  43.    }
  44.  
  45.  
« Última modificación: 26 Octubre 2014, 19:08 pm por novatus84 » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: consejos sobre programa
« Respuesta #4 en: 26 Octubre 2014, 18:53 pm »

usa las etiquetas GeSHi para publicar codigo (por favor modifica los posts y colocalos entre etiquetas c++)

publica el error exacto
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
novatus84

Desconectado Desconectado

Mensajes: 18


Ver Perfil
Re: consejos sobre programa
« Respuesta #5 en: 26 Octubre 2014, 19:42 pm »

Porque me da error el segundo else? no me hace ni el calculo? Gracias por la ayuda.


Código
  1. #include <iostream>
  2. #include <math.h>
  3. using namespace std;
  4.  
  5.  
  6. int main(){
  7.  
  8.  
  9.    double a,b,c;
  10.    char n;
  11.  
  12.  
  13.    do{
  14.  
  15.    cout<<"Ingresa a"<<endl;
  16.    cin>>a;
  17.    cout<<"Ingresa b"<<endl;
  18.    cin>>b;
  19.    cout<<"Ingresa c"<<endl;
  20.    cin>>c;
  21.    double disc=pow(b,2)-4*a*c;
  22.  
  23.        if(a!=0){
  24.        if(disc<0){
  25.            cout<<"Tiene raices imaginarias";
  26.        }else{
  27.            double x1=(-b+sqrt(disc))/(2*a);
  28.            double x2=(-b-sqrt(disc))/(2*a);
  29.            cout<<"X1 = "<<x1<<" X2 = "<<x2;
  30.        }
  31.        }else {
  32.        cout<<"El coeficiente a debe ser diferente a 0";
  33.    }
  34.        cout << "\nquieres hacer otra ecuacion?";
  35.        cout << "\nteclea 'y' para 'Si' -- 'n' para 'No': ";
  36.        cin  >> n;
  37.        cout << "\n";
  38.  
  39.    }while (n == 'y' || n == 'Y');
  40.  
  41.  
  42.    return 0;
  43.    }
  44.  
  45.  
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: consejos sobre programa
« Respuesta #6 en: 26 Octubre 2014, 19:55 pm »

Porque me da error el segundo else? no me hace ni el calculo? Gracias por la ayuda.

a mi me corre bien

Citar
Ingresa a
1
Ingresa b
4
Ingresa c
4
X1 = -2 X2 = -2
quieres hacer otra ecuacion?
teclea 'y' para 'Si' -- 'n' para 'No':


Citar
Ingresa a
2
Ingresa b
4
Ingresa c
4
Tiene raices imaginarias
quieres hacer otra ecuacion?
teclea 'y' para 'Si' -- 'n' para 'No': n
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
novatus84

Desconectado Desconectado

Mensajes: 18


Ver Perfil
Re: consejos sobre programa
« Respuesta #7 en: 26 Octubre 2014, 20:03 pm »

Como conseguir que el usuario no introduzca letras (que sea error), que solo pueda introducir números no lo consigo ni con el post de antes.

Muchas gracias
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: consejos sobre programa
« Respuesta #8 en: 26 Octubre 2014, 20:14 pm »

sorry por no responder jejeje

cin tiene la peculiaridad que si lo capturado no coincide con el tipo, se vuelve falso... la puedes usar

Código
  1. double a;
  2. cout<<"Ingresa a"<<endl;
  3. cin>>a;
  4.  if(!cin){
  5.  cout << "no es numero" << endl;
  6. }
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
novatus84

Desconectado Desconectado

Mensajes: 18


Ver Perfil
Re: consejos sobre programa
« Respuesta #9 en: 26 Octubre 2014, 20:42 pm »

El problema que tengo ahora es al meter el valor erróneo de a == letra, he puesto un break para acabar el programa, realmente quiero que me vaya al loop de while para volver a empezarlo de nuevo, como lo puedo hacer? lo mismo con b y c.
Código
  1. #include <iostream>
  2. #include <math.h>
  3. using namespace std;
  4.  
  5.  
  6. int main(){
  7.  
  8.  
  9.    double a,b,c;
  10.    char z;
  11.  
  12.  
  13.    do{
  14.  
  15.        cout<<"Please enter value of a"<<endl;
  16.        cin>>a;
  17.            if(!cin){
  18.                cout << "a is not a number" << endl;
  19.                break;}
  20.        cout<<"Please enter value of b"<<endl;
  21.        cin>>b;
  22.            if(!cin){
  23.                cout << "b is not a number" << endl;
  24.                break;}
  25.        cout<<"Please enter value of c"<<endl;
  26.        cin>>c;
  27.            if(!cin){
  28.                cout << "c is not a number" << endl;
  29.                break;}
  30.        double operation=pow(b,2)-4*a*c;
  31.  
  32.        if(a!=0){
  33.            if(operation<0){
  34.                cout<<"The solution has imaginary roots";
  35.            }else{
  36.                double x1=(-b+sqrt(operation))/(2*a);
  37.                double x2=(-b-sqrt(operation))/(2*a);
  38.                cout <<"X1 = " <<x1;
  39.                cout << "\n";
  40.                cout <<"X2 = " <<x2;
  41.            }
  42.        }else {
  43.            cout<<"The value of a can not be 0";
  44.        }
  45.        cout << "\nDo you want to do another equation?";
  46.        cout << "\ntouch 'y' For 'YES' ---- 'n' For 'Exit': ";
  47.        cin  >> z;
  48.        cout << "\n";
  49.  
  50.    }while (z == 'y' || z == 'Y');
  51.  
  52.  
  53.    return 0;
  54. }
  55.  
En línea

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

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
hola consejos sobre avi
Multimedia
led2006 6 2,569 Último mensaje 18 Julio 2006, 18:31 pm
por Songoku
Características y Consejos sobre la PSP
Juegos y Consolas
black_rafar 0 1,510 Último mensaje 28 Enero 2008, 13:05 pm
por black_rafar
Recomendaciones sobre Tor y consejos sobre el anonimato.
Seguridad
OmarHack 2 6,589 Último mensaje 15 Julio 2013, 20:28 pm
por OmarHack
Ayuda/Consejos -> Programa para un particular
Programación General
slyfx 0 1,590 Último mensaje 13 Noviembre 2013, 09:48 am
por slyfx
[BUSCO CONSEJOS] Leer un controlador usb en mi programa.
Programación General
NikNitro! 2 2,797 Último mensaje 17 Agosto 2014, 22:08 pm
por NikNitro!
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines