Ver Mensaje Individual
  #2 (permalink)  
Antiguo 04/06/2015, 08:32
albondi
 
Fecha de Ingreso: mayo-2015
Mensajes: 19
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: Sumar Vectores con funciones

Haces bastantes cosas erróneas, pasas los vectores como argumento a la función y vuelves a reservarles la memoria. Para empezar:
- Los vectores V1 y V2 está bien que los reserves en main(), el tercero de la suma solo resérvalo en memoria en la función suma.
- Una vez hecho, al pasarlos por referencia en la función suma, no hace falta que V1 y V2 vuelvan a reservarse, estás asignando nueva memoria para esos vectores y en realidad para no darla ningun uso.
- Si quieres que la función devuelva en cada llamada, el resultado de X posición, no hagas un bucle dentro de la función suma y mucho menos meter el return en el bucle.

Te dejo la solución aqui, cambiando el número de argumentos a pasar a la función suma:
Código:
#include<stdio.h>
#include<stdlib.h>

int vectorsuma(int *V1,int *V2,int *RE,int taman, int pos );

int main ()
{
    int *VE1, *VE2, *R, tam, i;
    
    printf("Ingrese la longitud de los vectores:");
    scanf("%d",&tam);
    
    VE1= (int *) calloc (tam, sizeof(int) );
    
    VE2= (int *) calloc (tam, sizeof(int) );
    
    printf("\nIngresa los valores del primer vector");
    for(i=0;i<tam;i++)
    {
        printf("\nPosicion[%d]:",i);
        scanf("%d",&VE1[i]);
    }
    
    printf("\nIngresa los valores del segundo vector");
    for(i=0;i<tam;i++)
    {
        
        printf("\nPosicion[%d]:",i);
        scanf("%d",&VE2[i]);
    }
    
    printf("\nLa suma de los vectores es: ");
    for(i=0;i<tam;i++)
    {
        printf("\nResultado posicion [%d]: %d",i, /*VE1[i]+VE2[i];)*/vectorsuma(VE1,VE2,R, tam, i));
    }
    
}

int vectorsuma(int *V1,int *V2, int *RE,int taman, int pos)
{
    
    RE=(int*)calloc(taman,sizeof(int));
        
        RE[pos]= V1[pos] +V2[pos];
        return RE[pos];
}