Título: Que error cometo aqui???????? Ayudaaaaa!
Publicado por: LobateZZZ en 13 Abril 2013, 12:38 pm
Hola amigos, vereis, al compilar me sale un error en la linea 93, que es donde llamo a la funcion demostracion, lo he señalado con 3 fantasmitas blancos para que no haya que buscar. El error que me da es el siguiente: " error: expected expression before ‘void’" ¿Que error cometo? ¿Me falta poner algo o quitar? Luego me da dos avisos, pero con esto creo que el programa funciona igual, no obstante si me podeis echar una mano, aqui están los avisos: En la función ‘main’: prac.c:49:3: aviso: formato ‘%d’ espera un argumento de tipo ‘int *’, pero el argumento 3 es de tipo ‘int’ [-Wformat] prac.c:51:3: aviso: formato ‘%f’ espera un argumento de tipo ‘double’, pero el argumento 2 es de tipo ‘int (*)(int, int, int)’ [-Wformat] #include <stdio.h> #include <math.h>
void suma(int equis1, int equis2, int equis3, int jota1, int jota2, int jota3); void resta(int equis1, int equis2, int equis3, int jota1, int jota2, int jota3); int mod(int equis1, int equis2, int equis3); int mod1(int jota1, int jota2, int jota3); void escalar_por_vector(int jota1, int jota2, int jota3, int escalar1); int producto_escalar(int equis1, int equis2, int equis3, int jota1, int jota2, int jota3); void producto_vectorial(int equis1, int equis2, int equis3, int jota1, int jota2, int jota3); void listar_componentes(int equis1, int equis2, int equis3); void listar_componentes1(int jota1, int jota2, int jota3); void demostracion();
int main(){ int efe,equis1,equis2,equis3,jota1,jota2,jota3,zeta1,zeta2,zeta3,escalar1,resultado; float modulo, modulo1; printf("Indtroduzca la operación a realizar:\n"); printf("1) Suma de vectores\n"); printf("2) Resta de vectores\n"); printf("3) Módulo de un vector\n"); printf("4) Producto de un escalar por un vector\n"); printf("5) Producto escalar por dos vectores\n"); printf("6) Producto vectorial de dos vectores\n"); printf("7) Listar componentes\n"); printf("8) Demostración\n"); scanf("%d",&efe); switch (efe){ case 1: printf("Introduzca 3 valores para el vector 1:\n"); scanf("%d %d %d", &equis1, &equis2, &equis3); printf("Introduzca 3 valores para el vector 2:\n"); scanf("%d %d %d", &jota1, &jota2, &jota3); suma(equis1,equis2,equis3,jota1,jota2,jota3); break;
case 2: printf("Introduzca 3 valores para el vector 1:\n"); scanf("%d %d %d", &equis1, &equis2, &equis3); printf("Introduzca 3 valores para el vector 2:\n"); scanf("%d %d %d", &jota1, &jota2, &jota3); resta(equis1,equis2,equis3,jota1,jota2,jota3); break;
case 3: printf("Introduce las coordenadas de un vector:\n"); scanf("%d %d %d", &equis1, equis2, &equis3); modulo = mod(equis1,equis2,equis3); printf("El módulo será: %f\n", mod); break; case 4: printf("Introduce las coordenadas de un vector:\n"); scanf("%d %d %d", &jota1, &jota2, &jota3); printf("Introduce un escalar: \n"); scanf("%d", &escalar1); escalar_por_vector(jota1, jota2, jota3, escalar1); break;
case 5: printf("Introduzca 3 valores para el vector 1:\n"); scanf("%d %d %d", &equis1, &equis2, &equis3); printf("Introduzca 3 valores para el vector 2:\n"); scanf("%d %d %d", &jota1, &jota2, &jota3); resultado = producto_escalar(equis1,equis2,equis3,jota1,jota2,jota3); printf("%d \n", resultado); break; case 6: printf("Introduzca 3 valores para el vector 1:\n"); scanf("%d %d %d", &equis1, &equis2, &equis3); printf("Introduzca 3 valores para el vector 2:\n"); scanf("%d %d %d", &jota1, &jota2, &jota3); producto_vectorial(equis1,equis2,equis3,jota1,jota2,jota3); break;
case 7: printf("Introduzca 3 valores para el vector:\n"); scanf("%d %d %d", &equis1, &equis2, &equis3); listar_componentes(equis1,equis2,equis3); break;
case 8: equis1=1; equis2=2; equis3=3; jota1=4; jota2=5; jota3=6; escalar1=2; demostracion(void); >:( >:( >:( break;
} return 0; }
void suma(int equis1, int equis2, int equis3, int jota1, int jota2, int jota3){ int zeta1,zeta2,zeta3; zeta1=equis1+jota1; zeta2=equis2+jota2; zeta3=equis3+jota3; printf("(%d, %d, %d)\n", zeta1,zeta2,zeta3); }
void resta(int equis1, int equis2, int equis3, int jota1, int jota2, int jota3){ int zeta1,zeta2,zeta3; zeta1=equis1-jota1; zeta2=equis2-jota2; zeta3=equis3-jota3; printf("(%d, %d, %d)\n", zeta1,zeta2,zeta3); }
int mod(int equis1, int equis2, int equis3){ float modulo; modulo = sqrt((equis1*equis1)+(equis2*equis2)+(equis3*equis3)); return(modulo); }
int mod1(int jota1, int jota2, int jota3){ float modulo1; modulo1 = sqrt((jota1*jota1)+(jota2*jota2)+(jota3*jota3)); return(modulo1); }
void escalar_por_vector(int equis1, int equis2, int equis3, int escalar1){ int zeta1,zeta2,zeta3; zeta1=equis1*escalar1; zeta2=equis2*escalar1; zeta3=equis3*escalar1; printf("(%d, %d, %d)\n", zeta1,zeta2,zeta3); }
int producto_escalar(int equis1, int equis2, int equis3, int jota1, int jota2, int jota3){ int resultado; resultado = ((equis1*jota1)+(equis2*jota2)+(equis3*jota3)); return (resultado); }
void producto_vectorial(int equis1, int equis2, int equis3, int jota1, int jota2, int jota3){ int zeta1, zeta2, zeta3; zeta1=((equis2*jota3)-(equis3*jota2)); zeta2=((equis1*jota3)-(equis3*jota1)); zeta3=((equis1*jota2)-(equis2*jota1)); printf("%d %d %d\n",zeta1, zeta2, zeta3); }
void listar_componentes(int equis1, int equis2, int equis3){ printf("%d %d %d\n", equis1, equis2, equis3); }
void listar_componentes1(int jota1, int jota2, int jota3){ printf("%d %d %d\n", jota1, jota2, jota3); }
void demostracion(void){ int equis1, equis2, equis3, jota1, jota2, jota3, modulo, modulo1, resultado,escalar1;
suma(equis1,equis2,equis3,jota1,jota2,jota3);
resta(equis1,equis2,equis3,jota1,jota2,jota3);
modulo = mod(equis1,equis2,equis3); modulo1 = mod1(jota1,jota2,jota3);
escalar_por_vector(jota1, jota2, jota3, escalar1);
resultado = producto_escalar(equis1,equis2,equis3,jota1,jota2,jota3);
producto_vectorial(equis1,equis2,equis3,jota1,jota2,jota3);
listar_componentes(equis1,equis2,equis3); listar_componentes1(equis1,equis2,equis3);
}
Gracias a todos los que me ayudeis.
Título: Re: Que error cometo aqui???????? Ayudaaaaa!
Publicado por: leosansan en 13 Abril 2013, 14:57 pm
Para invocar o llamar a una función no se declara el tipo de ella ni de sus argumentos:demostracion();
Saluditos!. ....(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)
Título: Re: Que error cometo aqui???????? Ayudaaaaa!
Publicado por: rir3760 en 13 Abril 2013, 16:00 pm
El mensaje de error en la linea 49: scanf("%d %d %d", &equis1 , equis2 /* <== */, &equis3 );
Se genera porque en el tercer argumento te falta el operador "dirección de" (el '&'). Un saludo
Título: Re: Que error cometo aqui???????? Ayudaaaaa!
Publicado por: rir3760 en 13 Abril 2013, 16:04 pm
El mensaje de error en la linea 49: scanf("%d %d %d", &equis1 , equis2 /* <== */, &equis3 );
Se genera porque en el tercer argumento te falta el operador "dirección de" (el '&'). El error de la linea 51: modulo = mod(equis1,equis2,equis3); printf("El módulo será: %f\n", mod /* <== */);
Se debe a que utilizas "mod" (el nombre de la función) cuando debería ser "modulo" (el nombre de la variable). Un saludo
Título: Re: Que error cometo aqui???????? Ayudaaaaa!
Publicado por: LobateZZZ en 13 Abril 2013, 16:29 pm
Muchisimas gracias a todos, por fin he terminado el trabajo. ;-) ;-) ;-) ;-) ;-) Y por cierto, perdonad esos fallos, porque la verdad es que me dan vergüenza, pero no era capaz a verlos. Un saludo a todos.
|