Suma de vectores recursivo

Iniciado por s3tH, 6 Mayo 2012, 06:57 AM

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

s3tH

Que tal, yo de nuevo dandoles molestias, me podria hechar una manita, la verdad no se como retornar la suma de los productos de los elementos de dos vectores, este es mi codigo, pero el problema es que no se como hacer para retornal el resultado:
he intentado con return total, pero me regresa una direccion de memoria

#include <stdlib.h>
#include <stdio.h>

int multiplicar(int vec_a[],int vec_b[],int tam_a, int tam_b,int total);

int main()
{
    int vec_a[100], vec_b[100],tam_a,tam_b, i,j, resultado, total;
   
    printf("Ingrese el tamaño del vector A:");
    scanf("%d", &tam_a);
   
    for(i=0;i<tam_a;i++)
    {
            printf("Ingrese elemento [%d]:",i);
            scanf("%d",&vec_a);
            }
           
   
    printf("Ingrese el tamaño del vector B:");
    scanf("%d", &tam_b);
   
    for(j=0;j<tam_b;j++)
    {
            printf("Ingrese elemento [%d]:",j);
            scanf("%d",&vec_b[j]);
            }       
           
            resultado=multiplicar(vec_a,vec_b,tam_a-1,tam_b-1,total);
            printf("La suma de los producto de los elementos del vector es:%d\n", resultado);
           
            system("pause");
   
}


int multiplicar(int vec_a[],int vec_b[],int tam_a, int tam_b, int total)
{
    if(tam_a==0)
    {
              return (vec_a[tam_a]);
           
              }
              else
              {
                 total = total+ vec_b[tam_b]*vec_a[tam_a];
                 
                  return multiplicar(vec_a,vec_b,tam_a-1,tam_b-1,total);
                 
}
}

s3tH

Bueno ya hice otro pequeño avance, pero solo me multiplica los ultimos numero, y no entiendo por k:


#include <stdlib.h>
#include <stdio.h>

int multiplicar(int vec_a[],int vec_b[],int tam_a, int tam_b,int total);

int main()
{
    int vec_a[100], vec_b[100],tam_a,tam_b, i,j, resultado, total;
   
    printf("Ingrese el tamaño del vector A:");
    scanf("%d", &tam_a);
   
    for(i=0;i<tam_a;i++)
    {
            printf("Ingrese elemento [%d]:",i);
            scanf("%d",&vec_a);
            }
           
   
    printf("Ingrese el tamaño del vector B:");
    scanf("%d", &tam_b);
   
    for(j=0;j<tam_b;j++)
    {
            printf("Ingrese elemento [%d]:",j);
            scanf("%d",&vec_b[j]);
            }       
            total=0;
            resultado=multiplicar(vec_a,vec_b,tam_a, tam_b,total);
            printf("La suma de los producto de los elementos del vector es:%d\n", resultado);
           
            system("pause");
   
}


int multiplicar(int vec_a[],int vec_b[],int tam_a, int tam_b,int total)
{
    if(tam_a==1)
   
              return total;
           
           
              else{
             
                 total = total+ (vec_a[tam_a-1] * vec_b[tam_b-1]);
                 
                 
                  return multiplicar(vec_a,vec_b,tam_a-1,tam_b-1,total);
                  }

}

s3tH

Disculpen las molestias, despues de un intento mas ya quedo, de todas formas le dejo mi codigo, para que lo chequen, saludos


#include <stdlib.h>
#include <stdio.h>

int multiplicar(int vec_a[],int vec_b[],int tam_a, int tam_b,int total);

int main()
{
    int vec_a[100], vec_b[100],tam_a,tam_b, i,j, resultado, total;
   
    printf("Ingrese el tamaño del vector A:");
    scanf("%d", &tam_a);
   
    for(i=0;i<tam_a;i++)
    {
            printf("Ingrese elemento [%d]:",i);
            scanf("%d",&vec_a);
            }
           
   
    printf("Ingrese el tamaño del vector B:");
    scanf("%d", &tam_b);
   
    for(j=0;j<tam_b;j++)
    {
            printf("Ingrese elemento [%d]:",j);
            scanf("%d",&vec_b[j]);
            }       
            total=0;
            resultado=multiplicar(vec_a,vec_b,tam_a, tam_b,total);
            printf("La suma de los producto de los elementos del vector es:%d\n", resultado);
           
            system("pause");
   
}


int multiplicar(int vec_a[],int vec_b[],int tam_a, int tam_b,int total)
{
    if(tam_a<1)
   
              return total;
           
           
              else{
             
                 total = total+ (vec_a[tam_a-1] * vec_b[tam_b-1]);
                 
                 
                  return multiplicar(vec_a,vec_b,tam_a-1,tam_b-1,total);
                  }

                 
}

exel

 Hay partes en el codigo que un buen compilador en C/C++ detectaria y por ello no compilaria. Te recomiendo utilizar las restricciones del ANSI C. Lineas como scanf("%d",&vec_a); y lineas que faltan como return 0; en main() son errores muy graves.

No esta mal el codigo, sin embargo te hago una pregunta: ¿y si el tamaño del vector B es menor al tamaño del vector A?

Saludos

s3tH

Cita de: exel en  6 Mayo 2012, 09:56 AM
Hay partes en el codigo que un buen compilador en C/C++ detectaria y por ello no compilaria. Te recomiendo utilizar las restricciones del ANSI C. Lineas como scanf("%d",&vec_a); y lineas que faltan como return 0; en main() son errores muy graves.

No esta mal el codigo, sin embargo te hago una pregunta: ¿y si el tamaño del vector B es menor al tamaño del vector A?

Saludos

Que tal, perdon en mi codigo si aparece, pero no se a que se deba que al copiar y pegar omitio esas partes.

Lo siento, no especifique que una condicion incial del probleme es que ambos vectores heran del mismo tamaño, y si amigo tienes razon aun tiene varios detalles para validar, pero ya estoy en eso, en este caso mi problema solo hera como retornar el valor, saludos