Que error cometo aqui???????? Ayudaaaaa!

Iniciado por LobateZZZ, 13 Abril 2013, 12:38 PM

0 Miembros y 1 Visitante están viendo este tema.

LobateZZZ


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.

leosansan

Para invocar o llamar a una función no se declara el tipo de ella ni de sus argumentos:

Código (cpp) [Seleccionar]
demostracion();

Saluditos!. ....

rir3760

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
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

rir3760

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
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

LobateZZZ

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.