Hola a todos, soy nuevo aqui, y necesito ayuda con una cosa de C. El caso es que el ejercicio consiste en hacer un programa de suma y resta de vectores tridimensionales, y ya casi lo tengo (o eso creo), pero el caso es que cuando ejecuto y meto los valores y hace la suma me da un número de la hostia, y además creo que me debería dar 3 números, cada uno por cada componente del vector.
Pego código:
#include <stdio.h>
#include <math.h>
void suma(int vect1[3], int vect2[3], int vect3[3]);
//int resta(int h, int i, int j, int k, int l, int m);
int main(){
int a,i;
int vect1[3], vect2[3], vect3[3];
printf("Indtroduzca la operación a realizar:\n");
printf("1) Suma de vectores\n");
printf("2) Resta de vectores\n");
scanf("%d",&a);
if (a=1){
for(i=0;i<3;i++){
printf("Introduzca 3 valores para el vector 1:\n");
scanf("%d", &vect1);
printf("Introduzca 3 valores para el vector 2:\n");
scanf("%d", &vect2);
}
void suma(vect1, vect2, vect3);
printf("El resultado de la suma es: %d\n", vect3);
}
}
void suma(int vect1[3], int vect2[3], int vect3[3]){
vect3[0]=vect1[0]+vect2[0];
vect3[1]=vect1[1]+vect2[1];
vect3[2]=vect1[2]+vect2[2];
}
¿Qué hago mal?
Gracias a todos.
printf("El resultado de la suma es: %d\n", vect3);
lo que pasa con esto:
int vect3[3];
es que el nombre 'vect3' significa una dirección en la memoria donde empieza el vector.
para acceder a los 3 elementos de tu vector, lo hacés así:
Citarvect3[0]
vect3[1]
vect3[2]
printf("%d %d %d\n", vect3[0],vect3[1],vect3[2]);
de esa forma se accede a los valores en cada posición del vector.
Ademas de la corrección que ya te indico 85 otras dos que debes hacer en tu programa son:
1) Utilizas el operador de asignación "=" cuando debes utilizar el de comparación "==":
if (a = 1){ // Debe ser a == 1
2) Cuando llamas a una función no debes indicar su tipo de retorno, esta sentencia:
void suma(vect1, vect2, vect3);
Hay que cambiarla a:
suma(vect1, vect2, vect3);
Un saludo