Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Cerrar programa pidiendo teclas

Estas en el tema de Cerrar programa pidiendo teclas en el foro de C/C++ en Foros del Web. Hola de nuevo, miren estoy haciendo un codigo que me dejaron, al terminar debe preguntarme que si quiero cerrarlo apriete X tecla o si deseo ...
  #1 (permalink)  
Antiguo 01/10/2014, 23:08
 
Fecha de Ingreso: diciembre-2012
Ubicación: Jardim Alegre
Mensajes: 25
Antigüedad: 11 años, 3 meses
Puntos: 0
Cerrar programa pidiendo teclas

Hola de nuevo, miren estoy haciendo un codigo que me dejaron, al terminar debe preguntarme que si quiero cerrarlo apriete X tecla o si deseo continuar presione Y tecla, en caso de que apriete otra que no sea una de estas dos, me debe volver a preguntar hasta que apriete una de las que pide, me dijeron que con un doble while pero no entiendo como hacer que si no aprieto las que pide, me vuelva a preguntar lo mismo en el caso de las teclas, llevo esto.
Código:
int a;
int b;
int r;
char s;

do{
printf("da un numero");
scanf("%d, &a");
printf("da otro numero");
scanf("%d, &b");
r=a+b;
printf("el resultado es: %d" , r);
fflush(stdin);
printf("Presiona S si deseas terminar el programa de lo contrario presiona N ");
scanf("%c",&s);
}while(s!='S'&&s!='s');

return 0;
lo unico que hace es que se repite si no aprieto la S, pero no se como hacer que cuando apriete N continue, y que si no aprieto algunos de estos dos, me vuelva a preguntar.

Gracias de antemano.
  #2 (permalink)  
Antiguo 02/10/2014, 00:51
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 9 años, 8 meses
Puntos: 182
Respuesta: Cerrar programa pidiendo teclas

Buenas,

El doble while que comentas lo podrias implementar asi:


Código C:
Ver original
  1. ....
  2. do {
  3. printf("Presiona S si deseas terminar el programa de lo contrario presiona N ");
  4. scanf("%c",&s);
  5. }while(s!='N' && s!='n' && s!='S'&&s!='s');
  6. }while(s!='S'&&s!='s');
  7. ....


Un saludo
__________________
If to err is human, then programmers are the most human of us
  #3 (permalink)  
Antiguo 02/10/2014, 10:34
 
Fecha de Ingreso: diciembre-2012
Ubicación: Jardim Alegre
Mensajes: 25
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Cerrar programa pidiendo teclas

Hola, usando eso, el programa cierra con S y continua con N, pero si aprieto cualquier otra letra, me repite el programa, lo que necesito es que si no aprieto ninguna de las dos indicadas, me vuelva a preguntar lo mismo hasta que ponga alguna de las teclas que pide, el fflush lo dejo?
  #4 (permalink)  
Antiguo 02/10/2014, 11:21
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 6 meses
Puntos: 38
Respuesta: Cerrar programa pidiendo teclas

Código C++:
Ver original
  1. #include <iostream>
  2. #include <cstdlib>
  3. using namespace std;
  4.  
  5. int main () {
  6.     char salir = 'x';
  7.     char seguir = 'y';
  8.     char opc = 0;
  9.    
  10.     while(true){
  11.  
  12.         cout << salir << "-salir\n" << seguir << "-continuar" << endl;
  13.         cin >> opc;
  14.        
  15.         if(opc == salir){
  16.             break;
  17.         }else if(opc != seguir){
  18.             continue;
  19.         }
  20.        
  21.        
  22.         //blablablabblabla
  23.         //blala tu código aqui XD...
  24.         cout << "codigo ejecutado..." << endl;        
  25.     }
  26.  
  27.     return 0;
  28. }

si pulsas x sales, si pulsas y el código se ejecuta, pero si pulsas cualquier otra no funcionará por que volverá al inicio del bucle ;)
puedes poner otras teclas asignándolas nuevas teclas en salir y seguir.
Es solo una idea... luego haces como veas mejor. =)
Suerte!

Última edición por vangodp; 02/10/2014 a las 11:26
  #5 (permalink)  
Antiguo 02/10/2014, 14:30
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 9 años, 8 meses
Puntos: 182
Respuesta: Cerrar programa pidiendo teclas

Cita:
usando eso, el programa cierra con S y continua con N, pero si aprieto cualquier otra letra, me repite el programa, lo que necesito es que si no aprieto ninguna de las dos indicadas, me vuelva a preguntar lo mismo hasta que ponga alguna de las teclas que pide, el fflush lo dejo?
???????

Lo has probado?. A mi me funciona tal como dices perfectamente.

Te pongo un ejemplo completo y más sencillo para que lo puedas probar tu mismo rápidamente:

Código C:
Ver original
  1. int main() {
  2.     char s;
  3.  
  4.     do {
  5.         puts("Ejecuta programa");
  6.         do {
  7.             printf(
  8.                     "\nPresiona S si deseas terminar el programa de lo contrario presiona N ");
  9.  
  10.             fscanf(stdin, " %c", &s);
  11.         } while (s != 'N' && s != 'n' && s != 'S' && s != 's');
  12.     } while (s != 'S' && s != 's');
  13.  
  14.  
  15.     return 0;
  16. }

Respecto a lo de usar el fflush, como ves no hace falta si dejas un espacio antes del %c. Hay otras formas de hacerlo:
http://faq.cprogramming.com/cgi-bin/...&id=1043284392


Un saludo
__________________
If to err is human, then programmers are the most human of us

Etiquetas: repetir
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:49.