• Jueves 28 de Marzo de 2024, 16:35

Autor Tema:  Deifinición multiple: C  (Leído 2161 veces)

zzbug

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Deifinición multiple: C
« en: Sábado 3 de Junio de 2017, 18:03 »
0
Hola a todos
Soy nuevo en el foro asi que primero lo primero: Saludos a todos, tienen una comunidad muy completa por lo que he visto y muy participativa, espero ser una pieza activa de ella y que puedan aprender tanto de mi como yo de uds.
Ahora, el problema:

Estoy aprendiendo C y para ir avanzanado estoy haciendo una calculadora, un proyecto de consola en C::B. una calculadora simple con las 4 operaciones basicas, suma, resta, mutiplicacion y division
El problema es que C::B me lanza un error de definicion multiple y he buscado bastante una solucion sin respuesta asi que acudo a uds, les dejo el codigo:

calc.c
Código: C
  1.  
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. //#include <time.h>
  5. #include <unistd.h>
  6.  
  7. int suma (int,int);
  8. int resta (int,int);
  9. int multiplicacion(int,int);
  10. int division(int,int);
  11. int validar(char);
  12.  
  13.  
  14.  
  15.  
  16. int suma (int ia, int ib)
  17. {
  18.         int     ires = ia+ib;
  19.         return ires;
  20. }
  21.  
  22.  
  23. int resta (int ic, int id)
  24. {
  25.         int ires = ic - id;
  26.         return ires;
  27. }
  28.  
  29.  
  30. int multiplicacion (int ia, int ib)
  31. {
  32.         int ires = ia * ib;
  33.         return ires;
  34. }
  35.  
  36.  
  37. int division (int ia, int ib)
  38. {
  39.         int ires=ia / ib;
  40.         return ires;
  41. }
  42.  
  43.  
  44. /*int preNum()
  45. {
  46.         int ia=0;
  47.         int ib=0;
  48.         printf ("Escriba dos(2) numeros \n");
  49.         scanf("%i"&ia);
  50.         scanf("%i"&ib);
  51.         return ia,ib;
  52. }
  53. */
  54.  
  55. int validar (char gc)
  56. {
  57.         //char gc;
  58.         //gc = getchar();
  59.         int res = 0;
  60.         if (gc != 's' || gc != 'r' || gc!='m' || gc!='d')
  61.         {
  62.                 printf ("No a seleccionado un caracter valido");
  63.                 sleep(3000);
  64.                 res = 0;
  65.         return res;
  66.         }
  67.  
  68.         else
  69.         {
  70.         res=1;
  71.         return res;
  72.         }
  73.  
  74. }
  75.  
  76.  
  77. int operatoria(char iOp, int ia, int ib)
  78. {
  79.         int ires=0;
  80.  
  81.         switch (iOp)
  82.                 {
  83.                         case 's':
  84.                                 ires = suma(ia,ib);
  85.                                 break;
  86.                         case 'r':
  87.                                 ires = resta(ia,ib);
  88.                                 break;
  89.                         case 'm':
  90.                                 ires = multiplicacion(ia,ib);
  91.                                 break;
  92.                         case 'd':
  93.                                 ires = division(ia,ib);
  94.                                 break;
  95.  
  96.                 }
  97.  
  98.         return ires;
  99. }
  100.  
  101.  

main.c
Código: C
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. //#include <time.h>
  4. #include <unistd.h>
  5. #include <ctype.h>
  6. #include  "calc.c"
  7.  
  8. int main()
  9. {
  10.  
  11.         int ia;
  12.         int ib;
  13.         int resu=0;
  14.         char gch;
  15.  
  16.  
  17.         do
  18.         {
  19.         printf ("Que operacion desea realizar suma:s resta:r multiplicacion:m division:d \n");
  20.         gch = getchar();
  21.  
  22.         }while (validar(gch) != 0);
  23.  
  24.         do
  25.         {
  26.         printf ("Escriba dos(2) numeros \n");
  27.         scanf("%d",&ia);
  28.         scanf("%d",&ib);
  29.     } while (isdigit(ia) && isdigit(ib) != 0 );
  30.  
  31.     switch (gch)
  32.     {
  33.     case 's':
  34.         resu=suma(ia,ib);
  35.         break;
  36.     case 'r':
  37.         resu=resta(ia,ib);
  38.         break;
  39.     case 'm':
  40.         resu=multiplicacion(ia,ib);
  41.         break;
  42.     case 'd':
  43.         resu=division(ia,ib);
  44.         break;
  45.     default:
  46.         printf ("Escriba digitos validos");
  47.         sleep(3000);
  48.         main();
  49.     }
  50. printf ("%d",resu);
  51.  
  52.         return 0;
  53. }
  54.  
  55.  

¿que puede estar pasando?

chenech

  • Miembro activo
  • **
  • Mensajes: 96
    • Ver Perfil
Re:Deifinición multiple: C
« Respuesta #1 en: Sábado 3 de Junio de 2017, 21:34 »
0
Hola, he copiado el código tal como lo tienes y no me da error, solo un warning de posible perdida de datos y el retorno ret, pero error ninguno.

zzbug

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re:Deifinición multiple: C
« Respuesta #2 en: Sábado 3 de Junio de 2017, 21:49 »
0
Gracias chenech... entonces, sera alguna mala configuracion del C::B ? no le he metido mano y por eso me resulta curioso, quizas no es lo ideal dejar las configs por defecto, no? saludos