C/Visual C - estoy haciendo una calculadora en modo dos

 
Vista:

estoy haciendo una calculadora en modo dos

Publicado por xj35u5x (63 intervenciones) el 19/08/2000 00:00:00
Hola, estoy haciendo una calculadora en dos,
y tengo una duda que no me deja hacer un trabajo
decente. BUeno, basicamente lo que he hecho hasta ahora, es detectar un numero con scanf, luego un caracter con getch() que indicaría el signo de la operacion(+ - * o /), esto lo guardo en una variable, y luego lo comparo con los signos para tomar la decicion de la operacion que se requiera utilizar. luego, con scanf de nuevo, saco el segundo número y realizo la operacion, dejando en pantalla los dos operandos y el resultado. Mi problema es que para meter cada número es necesario apretar enter antes de indicar el signo de la operacion, esto es antinatural en una calculadora, ya qeu se supone que uno va poniendo el número , y al apretar directamente el signo de la operacion, automaticamente para de detectar el número.... ese es mi principal problema, como podría hacer que mientras estoy metiendo un número, el programa detectara el momento en que apreto una tecla que no es un número, Para que me entiendan, si yo utilizara el programa que he hecho, como quiero, el primer numero si quisiera sumarlo con otro, sería por ejemplo
34+

y eso me lo tomara solo como 34 o quizá qué, y despues me pedirá que aprete el caracter que indica la operacion.... espero que alguien haya entendido mi duda.

#include <stdio.h>

main() { int a=0,b=0;
int signo,resultado;
clrscr();
scanf("%i",&a);
signo=getche();
scanf("%i",&b);
if(signo==´+´)
resultado=a+b;
printf("%i",resultado); }

esto es un poco
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:estoy haciendo una calculadora en modo dos

Publicado por javi (12 intervenciones) el 20/08/2000 00:00:00
en vez de usar getche y scanf, usa getch. Esta funcion te devuelve la tecla pulsada sin necesidad de pulsar enter y sin hacer eco en pantalla, el problema q vas a tener ahora es q vas a tener q controlar las teclas q han sido pulsadas una por una y luego las teclas buenas imprimirlas por pantalla

espero q te sirva :)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:estoy haciendo una calculadora en modo dos

Publicado por xj35u5x (63 intervenciones) el 20/08/2000 00:00:00
Ok gracias, pero ese no es mi problema, mira , en la version original que estoy trabajando, no uno getche sino getch, pero mi problema es otro, Mi problema radica en que quiero, luego de ingresar un número, directamente apretar el boton del signo de la operacion a realizar, me entiendes ? o sea, sin usar enter antes para ingresar el número....

Bueno, el enter es obligatorio a mi parecer cuando se usa scanf para obtener un número así que no se que hacer,,,,,

gracias.

xj35u5x
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:estoy haciendo una calculadora en modo dos

Publicado por javi (12 intervenciones) el 20/08/2000 00:00:00
creo q me he enterado, tu lo q quieres hacer es un calculadora de estas de bolsillo, no?

pues entonces haz lo siguiente:

pq para hacer una suma:

int tecla_pulsada,
op1 = 0,
op2 = 0 ,
contador = 0;
do
{
tecla_pulsada = getch();
if /*miramos si la tecla es un numero */
{
printf ("%c", tecla_pulsada);
contador ++;
op1 = op1 + tecla_pulsada * contador;
}
/* else no se hace nada*/
}while (tecla_pulsada != ´+´);

/*ahora entramos el segundo operando */
do
{

/* copiar lo mismo q antes pero con op2 */

} while (tecla_pulsada != ENTER);

printf ("%d + %d = %d", op1, op2, op1+op2);


no lo he probado, pero creo q con esto te haras una idea de como lo puesdes hacer... si tienes alguna duda, ya sabes donde toy :)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:estoy haciendo una calculadora en modo dos

Publicado por xj35u5x (63 intervenciones) el 20/08/2000 00:00:00
Bueno, la verdad es que no resultó para nada, pero
al menos me hizo pensar en algunas ideas,
Una idea sería hacer un arreglo, y luego ir metiendo los caracteres, y segun la teoria matematica, transformar los numeros uniendolos, de forma que tengan sentido, o sea, segun su numero
de caracter ascii transformarlo a dígito, y luego
segun el número de digitos antes de presionar un
signo vamos multiplicandolos en orden por las
potencias sucecivas de 10.

o sea, por ejemplo , si se mete el ´numero 156
lo que hare sera
variable=6*1+5*10+1*100

dependiendo del número de digitos metidos el cual incrementará el contador.... y ahí veo como me las arreglo, bueno, de todas formas gracias amigo....

mira, te mostraré lo que paso con tu código :
primer numero metido : 5
segundo numero metido : 4
resultado ::::

5453 + 104 = 157

bueno, no importa, de todas formas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:estoy haciendo una calculadora en modo dos

Publicado por javi (12 intervenciones) el 21/08/2000 00:00:00
int tecla_pulsada,
op1 = 0,
op2 = 0 ,
contador = 1,
numero;
do
{
tecla_pulsada = getch();
if /*miramos si la tecla es un numero */
{
printf ("%c", tecla_pulsada);
numero = ´0´ - tecla_pulsada; /* ya tenemos en "numero" un numero entre 0-9 */
op1 = op1 * contador + numero;
contador = contador * 10;
}
/* else no se hace nada*/
}while (tecla_pulsada != ´+´);

/*ahora entramos el segundo operando */
printf ("+");

do
{

/* copiar lo mismo q antes pero con op2 */

} while (tecla_pulsada != ENTER);

printf (" = %d", op1+op2);


haber si este codio ya esta mejor :) :)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar