elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Funciones y Proyectos en C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Funciones y Proyectos en C  (Leído 1,479 veces)
TheShocker

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Funciones y Proyectos en C
« en: 15 Marzo 2015, 17:59 pm »

Buenas a todos, estoy haciendo un proyecto divido en varios archivos. Uno con las funciones, el .h, y el main.

El caso, es que el programa tiene hacer la suma de dos vectores y el producto escalar pero al compilarlo y ejecutarlo me salen erroneos los resultados.

No sé si fallo en las funciones o en la forma de invocarlo. Si alguien puede ayudarme se lo agradecería.



Parte de las funciones:

Código:
float suma_vectores(float *v1, float *v2, int dim){
     
      int i;
      float vsuma[DIMMAX];
        for (i=0; i < dim; i++)
            vsuma[i] += v1[i] + v2[i];   
           
            return vsuma[i];
           
     
}

     
float producto_vectores(float *v1, float *v2, int dim){
        float prod_escalar = 0;
        int i;
        for (i=0; i < dim; i++)
            prod_escalar += v1[i] * v2[i];
           
            return prod_escalar;
           
            }


Parte de la invocación:
Código:
 modulov1 = modulo_vector(vector1, diml);
     modulov2 = modulo_vector(vector2, diml);
     
     
     vsuma[DIMMAX] = suma_vectores(vector1, vector2,diml);
     
     prod_escalar = producto_vectores(vector1, vector2, diml);
 
    /* Resultados
       ---------------------------------------
    */
       puts("\nVectores introducidos:");
       
       puts("\nPrimer vector: ");
       escribir_vector(vector1,diml);

       puts("\n\nSegundo vector: ");
       escribir_vector(vector2,diml);
       
       printf("\n");
       
       
       printf("Módulo del primer  vector: %f\n", modulov1);
       printf("Módulo del segundo vector: %f\n", modulov2);

       puts("\nVector suma:");
       escribir_vector(vsuma,diml);
       

       puts("\nProducto escalar:");
       printf("V1 x V2 = %f\n", prod_escalar);

       printf("\n\n");


En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Funciones y Proyectos en C
« Respuesta #1 en: 15 Marzo 2015, 20:29 pm »

El código fuente que publicas tiene bastantes errores y la primera recomendación es: consigue un curso o libro de calidad, recomendaciones sobre ellos las puedes consultar mediante el motor de búsqueda de los foros.

Algunos de los errores son:

* En la función "suma_vectores" utilizas el operador "+=" cuando debería ser "+".
* Esa misma función retorna "vsuma[ i ]" con "i" igual a dim pero ese elemento no tiene un valor asignado.
* En la invocación de la función tratas de inicializar el array "vsuma" con el valor de retorno de la función "suma_vectores", eso no es posible ya que una función no puede retornar un array.

Debes cambiar la aproximación y modificar la función de suma de vectores para que acepte cuatro argumentos: las direcciones base de los dos arrays, el numero de elementos en ambos y la dirección base del array de resultados (la suma).

Poco mas o menos así:
Código
  1. /* Declaracion de variables */
  2. float a[NUM_ELEM];
  3. float b[NUM_ELEM];
  4. float suma[NUM_ELEM];
  5.  
  6. /* ... */
  7.  
  8. /* Invocacion */
  9. suma_vectores(a, b, NUM_ELEM, suma);
  10.  
  11. /* ... */
  12.  
  13. /* Definicion */
  14. void suma_vectores(float *a, float *b, int num_elem, float *suma)
  15. {
  16.   int i;
  17.  
  18.   for (i = 0; i < num_elem; i++)
  19.      suma[i] = a[i] + b[i];
  20. }

Un saludo


En línea

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
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
proyectos con pic
Electrónica
julyos 1 4,224 Último mensaje 26 Abril 2005, 07:01 am
por + enrique ZP
microcontroladores y proyectos.
Electrónica
lu8emw 1 2,952 Último mensaje 4 Septiembre 2006, 23:05 pm
por logger02
[C] Problema con Struct en funciones que llaman a otras funciones
Programación C/C++
‭lipman 9 23,604 Último mensaje 19 Mayo 2011, 23:39 pm
por Littlehorse
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines