Hola!

Registrándote como bakuno podrás publicar, compartir y comunicarte en privado con otros bakuos :D

Regístrame ya!

ayudaa!! cerrar do while

  • Autor de tema Autor de tema poire
  • Fecha de inicio Fecha de inicio

poire

Bovino maduro
Desde
6 Sep 2009
Mensajes
170
que onda baks !
oigan tengo que entregar este código en la tarde !!
es una calculadora... pero necesito que en cualquier momento aun después de poner un numero o cualquier cosa si presiono # se cierre la ventana automáticamente, pero hasta ahorita solo he logrado que después de presionar # me imprima para cerrar presione enter
espero me puedan ayudar !


#include <stdio.h>
#include<math.h>
#include<stdlib.h>
int main()
{
// char *a="sumar",*b="restar",*c="multiplicar",*d="division",*e="potencia",*f="raiz cuadrada";

float r,i,j;
int s;
char o, salir;

do {


printf("\n INICIO\n");
printf("presione el numero deseado y despues ENTER \n");
printf(" \n 1=sumar");
printf(" \n 2=resta");
printf(" \n 3=multiplicar");
printf(" \n 4=division");
printf(" \n 5=potencia");
printf(" \n 6=raiz cuadrada");
printf(" \n #=cerrar app\n");
printf(" \n Que operacion desea realizar?\n");
scanf("%d",&s);
switch(s)
{
case 1:
printf("\n ud selecciono la suma\n ");
printf(" da el num\n");
scanf(" %f",&i);
printf(" da el otro num\n");
scanf(" %f",&j);
r=i+j;
printf(" \n %f",r);
getch();
printf(" \n PARA SALIR PRESIONE ENTER");
scanf("%c", &salir);
break;
case 2:
printf("\n ud selecciono resta\n");
printf(" da el num\n");
scanf(" %f",&i);
printf(" da el otro num\n");
scanf("%f",&j);
r=i-j;
printf("\n %f",r);
getch();
printf(" \n PARA SALIR PRESIONE ENTER");
scanf("%c", &salir);
break;
case 3:
printf("\n ud selecciono multiplicacion\n");
printf("\n da el num\n");
scanf("%f",&i);
printf("\n da el otro num\n");
scanf("%f",&j);
r=i*j;
printf(" %f",r);
getch();
printf(" \n PARA SALIR PRESIONE ENTER");
scanf("%c", &salir);
break;
case 4:
printf("\n ud selecciono division\n");
printf("\n da el num\n");
scanf("%f",&i);
printf("\n da el otro num\n");
scanf("%f",&j);
r=i/j;
printf("\n %f",r);
getch();
printf(" \n PARA SALIR PRESIONE ENTER");
scanf("%c", &salir);
break;
case 5:
printf("\n ud selecciono potencia");
printf("\n da el num\n");
scanf("%f",&i);
printf("\n da la potencia\n");
scanf("%f",&j);
j=pow(j,i);
printf("\nla potencia es %f",j);
getch();
printf(" \n PARA SALIR PRESIONE ENTER");
scanf("%c", &salir);
break;
case 6:
printf("\n ud selecciono raiz cuadrada\n");
printf("\n da el num");
scanf("%f",&i);
j=pow(i,.5);
printf("la raiz cuadrada es: %f",j);
getch();
printf(" \n PARA SALIR PRESIONE ENTER");
scanf("%c", &salir);
break;
default :
printf(" \n PARA SALIR PRESIONE ENTER");
scanf("%c", &salir);
break;
}
}while(salir!='#');

getch();

return 0;

}
 
Esa estructura de control pasa por todas las opciones antes de revisar la condición, intenta lo opuesto, revisa la condición antes de pasar por todas las opciones.
 
Asi como dice Zephiroz ese tipo de estructura de control sirve para ejecutar todo y despues presentar la condicion,,, a diferencia de usar solo el while al inicio y la condicion.

La respuesta te la estas dando tu mismo, necesitas que cada vez y en cualquier momento al presionar la tecla # se termine tu programa, para esto sera necesario condicionar en que partes del codigo quieres que termine tu programa.
si mal no recuerdo
Necesitas poner esa condicion en todas y cada una de ellas ya que por lo visto no estas en un ambiente visual.
 
uhmmm segun yo le vale lo que haga while y se queda en el default por eso no no entra a tu condicion de while(salir!='#'); una solucion rapida y sencilla es poner getch(); en el default pero causaria problemas por que cualquier cosa que sea diferente de a # se cerrara uhmm asi que para que valide en el while se me ocurre que a "s" le declares String o en este caso char y como ya son caracteres no entra al default y entraria a tu condicion while(salir!='#'); espero y te sirva
 
a ver xD
no entiendo por que quieres usar # en lugar de ctrl+c, pero si quisieras agregarle esa funcion a tu codigo seria mas rapido que agregues un bloque de getc y ungetc que te tire un break para ese ciclo :P
 
Supongo que lo que pides es que al pulsar # automáticamente salga del bucle y se cierre. Algo estilo alt+f4 para cerrar la ventana. El problema que veo es que para eso tienes que saber que código asci tienen esas teclas, en este tuto puedes ver como lo hace http://blogs.vandal.net/2192/vm/212540472007. Necesitas que un evento este siempre escuchando y cuando se produzca realice una acción. Si fuese visual basic estaría tirado pero en c... nunca lo he hecho.

Otra opción aunque mas chapucera y mucho peor es ponerle if a todas tus instrucciones diciendo si la tecla pulsada es # break; return 0, borrar pantalla y salir sin preguntar. Pero claro es mas chapucera porque tendrías que preguntar en todas las instrucciones si se ha pulsado la tecla # salir sino instrucción, siguiente linea lo mismo así con todas.

La vía mas aconsejable es la primera. La segunda es una chapuza como un castillo pero funcionar funcionaría.
 
Volver
Arriba