Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: LobateZZZ en 5 Abril 2013, 11:56 am



Título: Duda al hacer un programa.
Publicado por: LobateZZZ en 5 Abril 2013, 11:56 am
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.


Título: Re: Duda al hacer un programa.
Publicado por: 85 en 5 Abril 2013, 14:42 pm
Código:
printf("El resultado de la suma es: %d\n", vect3);

lo que pasa con esto:

Código:
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í:

Citar
vect3[0]
vect3[1]
vect3[2]
Código:
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.






Título: Re: Duda al hacer un programa.
Publicado por: rir3760 en 5 Abril 2013, 15:55 pm
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 "==":
Código
  1. if (a = 1){ // Debe ser a == 1

2) Cuando llamas a una función no debes indicar su tipo de retorno, esta sentencia:
Código
  1. void suma(vect1, vect2, vect3);
Hay que cambiarla a:
Código
  1. suma(vect1, vect2, vect3);

Un saludo