Programación General > C/C++
Deifinición multiple: C
(1/1)
zzbug:
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 --- #include <stdio.h>#include <stdlib.h>//#include <time.h>#include <unistd.h> int suma (int,int);int resta (int,int);int multiplicacion(int,int);int division(int,int);int validar(char); int suma (int ia, int ib){ int ires = ia+ib; return ires;} int resta (int ic, int id){ int ires = ic - id; return ires;} int multiplicacion (int ia, int ib){ int ires = ia * ib; return ires;} int division (int ia, int ib){ int ires=ia / ib; return ires;} /*int preNum(){ int ia=0; int ib=0; printf ("Escriba dos(2) numeros \n"); scanf("%i"&ia); scanf("%i"&ib); return ia,ib;}*/ int validar (char gc){ //char gc; //gc = getchar(); int res = 0; if (gc != 's' || gc != 'r' || gc!='m' || gc!='d') { printf ("No a seleccionado un caracter valido"); sleep(3000); res = 0; return res; } else { res=1; return res; } } int operatoria(char iOp, int ia, int ib){ int ires=0; switch (iOp) { case 's': ires = suma(ia,ib); break; case 'r': ires = resta(ia,ib); break; case 'm': ires = multiplicacion(ia,ib); break; case 'd': ires = division(ia,ib); break; } return ires;}
main.c
--- Código: C ---#include <stdio.h>#include <stdlib.h>//#include <time.h>#include <unistd.h>#include <ctype.h>#include "calc.c" int main(){ int ia; int ib; int resu=0; char gch; do { printf ("Que operacion desea realizar suma:s resta:r multiplicacion:m division:d \n"); gch = getchar(); }while (validar(gch) != 0); do { printf ("Escriba dos(2) numeros \n"); scanf("%d",&ia); scanf("%d",&ib); } while (isdigit(ia) && isdigit(ib) != 0 ); switch (gch) { case 's': resu=suma(ia,ib); break; case 'r': resu=resta(ia,ib); break; case 'm': resu=multiplicacion(ia,ib); break; case 'd': resu=division(ia,ib); break; default: printf ("Escriba digitos validos"); sleep(3000); main(); }printf ("%d",resu); return 0;}
¿que puede estar pasando?
chenech:
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:
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
Navegación
Ir a la versión completa