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


0