Hola, mi problema es el siguiente: Tengo que llamar a varias funciones dentro de otra funcion, pero cuando ejecuto el programa, me da número muy altos que no se corresponden con lo que deberia ser. Que no os engañe tanto codigo, solo necesito que mireis el case:8 y la ultima funcion, abajo del todo.
Aqui va el codigo:
Los vectores con los que debería trabajar son, (1,2,3) y el (4,5,6), y un escalar 2. Los resultados que me da el programa son:
(252393256, 1027456316, 1031621970) "Suma"
(252393256, -1027390782, -1023225128) "Resta"
El módulo será: 0.000000
El módulo será: 0.000000
(0, -2105009848, -2105009848) "Escalar por vector"
-1971644220 "Prod, escalar"
(944204994, -296178552, -296178552) "Prod Vectorial"
(252393256, 32767, 4198421) "Listar
(0, 1027423549, 1027423549) componentes"
Ayuda por favor, no tengo ni idea de como se hace esto para que haga bien las operaciones.
¿Están bien llamadas las funciones en la ultima funcion? Si es asi, ¿será porque defino mal las variables en el case:8?
Aqui va el codigo:
Código [Seleccionar]
#include <stdio.h>
#include <math.h>
void suma(int equis1, int equis2, int equis3, int jota1, int jota2, int jota3); /*Declaraciones de todas las funciones*/
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(){ /*Funcion principal "main"*/
int efe,equis1,equis2,equis3,jota1,jota2,jota3,zeta1,zeta2,zeta3,escalar1,resultado;
float modulo, modulo1;
printf("====================================\n");
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 de dos vectores\n");
printf("6) Producto vectorial de dos vectores\n");
printf("7) Listar componentes\n");
printf("8) Demostración\n");
printf("====================================\n");
scanf("%d",&efe);
if (efe>8 && efe<1)
printf("ERROR\n\n");
else{
switch (efe){
case 1:
printf("Introduzca 3 valores para el vector 1:\n"); /*Suma de vectores*/
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"); /*Resta de vectores*/
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"); /*Modulo de un vector*/
scanf("%d %d %d", &equis1, &equis2, &equis3);
modulo = mod(equis1,equis2,equis3);
printf("El módulo será: %f\n", modulo);
break;
case 4:
printf("Introduce las coordenadas de un vector:\n"); /*Producto de un escalar con un vector*/
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"); /*Producto escalar de dos vectores*/
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("El producto escalar será: %d \n", resultado);
break;
case 6:
printf("Introduzca 3 valores para el vector 1:\n"); /*Producto vectorial*/
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"); /*Listar componentes*/
scanf("%d %d %d", &equis1, &equis2, &equis3);
listar_componentes(equis1,equis2,equis3);
break;
case 8: /*Demostrar*/
equis1=1;
equis2=2;
equis3=3;
jota1=4;
jota2=5;
jota3=6;
escalar1=2;
demostracion();
break;[/color]
}
}
return (0);
}
void suma(int equis1, int equis2, int equis3, int jota1, int jota2, int jota3){ /*Funcion suma*/
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){ /*Funcion resta*/
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){ /*Funcion modulo*/
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){ /*Funcion escalar por vector*/
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){ /*Funcion producto escalar de dos vectores*/
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){ /*Funcion producto vectorial*/
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){ /*Funcion listar componentes*/
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(){
int equis1, equis2, equis3, jota1, jota2, jota3, modulo, modulo1, resultado,escalar1; /*Funcion demostracion*/
suma(equis1,equis2,equis3,jota1,jota2,jota3);
resta(equis1,equis2,equis3,jota1,jota2,jota3);
modulo = mod(equis1,equis2,equis3);
printf("El módulo será: %f\n", modulo);
modulo1 = mod1(jota1,jota2,jota3);
printf("El módulo será: %f\n", modulo1);
escalar_por_vector(jota1, jota2, jota3, escalar1);
resultado = producto_escalar(equis1,equis2,equis3,jota1,jota2,jota3);
printf("%d \n", resultado);
producto_vectorial(equis1,equis2,equis3,jota1,jota2,jota3);
listar_componentes(equis1,equis2,equis3);
listar_componentes1(jota1,jota2,jota3);
}
Los vectores con los que debería trabajar son, (1,2,3) y el (4,5,6), y un escalar 2. Los resultados que me da el programa son:
(252393256, 1027456316, 1031621970) "Suma"
(252393256, -1027390782, -1023225128) "Resta"
El módulo será: 0.000000
El módulo será: 0.000000
(0, -2105009848, -2105009848) "Escalar por vector"
-1971644220 "Prod, escalar"
(944204994, -296178552, -296178552) "Prod Vectorial"
(252393256, 32767, 4198421) "Listar
(0, 1027423549, 1027423549) componentes"
Ayuda por favor, no tengo ni idea de como se hace esto para que haga bien las operaciones.
¿Están bien llamadas las funciones en la ultima funcion? Si es asi, ¿será porque defino mal las variables en el case:8?