C/Visual C - Calculadora simple en C

 
Vista:
sin imagen de perfil

Calculadora simple en C

Publicado por Alejandro Caro (4 intervenciones) el 02/12/2012 03:14:27
El ejercicio dice:
Realizar las funciones de una calculadora simple, teniendo en cuenta que:
_ Los datos de entrada serán una secuencia de dígitos decimales y de operadores +, *, /, -,
seguida del signo =.
_ Los números y los operadores se ingresan alternados.
_ El último elemento ingresado antes del símbolo = es siempre un número.
_ Se ignoran los espacios en blanco.
_ Los operadores se aplican en el orden en que aparecen en los datos de entrada (no se tiene en cuenta la precedencia de los operadores definida en C), y producen resultados enteros.
_ Se asume que se ingresa al menos un número.

Ej. de entrada: 4 + 3 / 2 * 8 - 4 =
Ej. de salida: 20

Yo respondo con esto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
 
int main(){
	int resultado, valor_leido;
	char caracter, espacio;
	espacio= ' ';
 
	//(*Comenzamos con el procesamiento de datos*)   
	//(*Mientras no encontramos un = procesamos datos*)
	do{
	scanf("%c", &caracter);
	}while(caracter!=espacio);
 
	while (caracter != '='){
 
		//(*Si leemos un operador, salteamos espacios y leemos el siguiente     
		//número para procesarlo. Luego continuamos con la lectura normal.*)     
		//(*Este case realiza las mismas tareaes para cada operador, lo único      
		//que varía es, obviamente, la operación que realizamos. Hago este código
		//así para que se entienda bien, podría optimizarse y acortarse mucho.*)
		switch (caracter){
		case '+':
			//Salteamos espacios.
			do{
			scanf("%c", &caracter);
			}while(caracter!=espacio);
			//Procesamos la suma.            
			resultado= resultado + valor_leido;
		case '-':
			//Salteamos espacios.
			do{
			scanf("%c", &caracter);
			}while(caracter!=espacio);
			//Procesamos la resta.        
			resultado= resultado - valor_leido;
		case '*':
			//Salteamos espacios.
			do{
			scanf("%c", &caracter);
			}while(caracter!=espacio);
			//Procesamos el producto.   
			resultado= resultado*valor_leido;
		case '/':
			//Salteamos espacios.
			do{
			scanf("%c", &caracter);
			}while(caracter!=espacio);
			//Procesamos la división como división entera.        
			resultado= (int)resultado / valor_leido;
		}
	do{
	scanf("%c", &caracter);
	}while(caracter!=espacio);
	}
	printf("El resultado es %d.",resultado);
	getch();
	return 0;
}


pero después de presionar igual queda esperado otro número y no da resultado. ¿qué es lo que está mal?
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