Ver Mensaje Individual
  #2 (permalink)  
Antiguo 23/05/2012, 09:03
cesar_casla
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 12 años, 10 meses
Puntos: 94
Respuesta: Eh aca una calculadora basica en C

Hola! errores no hay, pero algunos te criticarian por usar system() ya que no es una funcion portable...
Cosas para mejorar:
si a las funciones impreciones() y resultado(), los llamas en todos los case ¿no es mejor escribirlas una sola ves? (es como sacar un denominador comun :P)
El switch tiene un default donde se entra si la condicion no coincida con ninguno de los case, ahi podrias poner los printf de los if

Te dejo el codigo un poco mejorado:
Código C:
Ver original
  1. /*Calculadora Básica también decimales*/
  2. #include<stdio.h>
  3. #include<stdlib.h>
  4. #define VAR 3
  5. float ope[VAR];
  6. void suma(void);
  7. void resta(void);
  8. void multiplicacion(void);
  9. void divicion(void);
  10. void impreciones(void);
  11. void resultado(void);
  12.      void suma(void) {
  13.           ope[0]=ope[1]+ope[2];
  14.           return;
  15.           }
  16.      void resta(void) {
  17.           ope[0]=ope[1]-ope[2];
  18.           return;
  19.           }
  20.      void multiplicacion(void) {
  21.           ope[0]=ope[1]*ope[2];
  22.           return;
  23.           }
  24.      void divicion(void) {
  25.           ope[0]=ope[1]/ope[2];
  26.           return;
  27.           }
  28.      void impreciones(void) {
  29.           printf("Cual es tu primer valor: ");
  30.           scanf("%f",&ope[1]);
  31.           printf("Cual es tu segundo valor: ");
  32.           scanf("%f",&ope[2]);
  33.           return;
  34.           }
  35.      void resultado(void) {
  36.           printf("Tu resultado es: %.2f\n\n\a",ope[0]);
  37.           return;
  38.           }
  39. int main (void) {
  40.      system("color 2f");
  41.      int op;
  42.      int flag; /* este flag va indicar si se ingreso una opcion correcta */
  43.      do {
  44.      flag=1; /* suponemos q la opcion es correcta, flag toma el valor 1 */
  45.      printf(".:CALCULADORA BASICA:.\n\n");
  46.      impresiones();
  47.      printf("1=Suma\n2=Resta\n3=Multiplicacion\n4=Divicion\n5=Salir\n\nElige una opcion: ");
  48.      scanf("%d",&op);
  49.      switch(op) {
  50.      case 1:
  51.      suma();
  52.      break;
  53.      case 2:
  54.      resta();
  55.      break;
  56.      case 3:
  57.      multiplicacion();
  58.      break;
  59.      case 4:
  60.      divicion();
  61.      break;
  62.      case 5:
  63.          printf("FIN DEL PROGRAMA\n\n");
  64.          break;
  65.      default:
  66.          printf("Opcion no valida...\n");
  67.          flag=0; /* se ingreso una opcion incorrecta */
  68.          break;
  69.      }
  70.      if(flag==1) /* solo imprime el resultado si se ingreso una opcion valida */
  71.            resultado();
  72.      } while(op!=5);
  73.      printf("Hasta luego!!!\n\a");
  74.      system("pause");
  75.      return 0;
  76. }
Ojo! que haya mejorado tu codigo no significa que este mal el tuyo, de echo esta perfecto; solo queria mostrart como mejorarlo un poco

Otra cosa que podrias hacer es ingresar directamente los caracteres "+ - * /". Y poner eso en los case del switch, ejemplo:
Código C:
Ver original
  1. printf("Ingrese la operacion\n");
  2. scanf("%c",&op);
  3. switch(op) {
  4.      case '+':
  5.           ..........
  6.           break;
  7.      case '-':
  8.           .........
  9.          break;
  10.      case '*':
  11.           ..........
  12.           break;
  13.      case '/':
  14.           .........
  15.          break;
  16.    }
Fijate el uso de las comillas simples

Saludos