Duda al hacer un programa.

Iniciado por LobateZZZ, 5 Abril 2013, 11:56 AM

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

LobateZZZ

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.

85

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.




Me cerraron el Windows Live Spaces, entonces me creé un WordPress XD
http://etkboyscout.wordpress.com/

rir3760

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
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