Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/03/2016, 05:00
Casert
 
Fecha de Ingreso: marzo-2016
Mensajes: 3
Antigüedad: 8 años
Puntos: 0
Duda: Contar elementos vector dentro de función.

Hola buenas, el objetivo de la función operar con un vector(tamaño l) y un entero(k), que son los datos recibidos, y devolver un vector (tamaño l*k-k).
El caso es que para crear el nuevo vector y asignarle memoria necesito saber el tamaño del vector inicial y no se como poder recorrerlo para ir contándolo dentro de la función.
Por otra parte, al usar dentro de la función malloc(), ¿La memoria asignada hay que liberarla con free() en algún momento?.
Se supone que el programa pedirá introducir un vector sin especificar tamaño por lo que no se conocerá el tamaño.
Introduciendo un valor en longv1 parece que el programa funciona.
Código C:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. double *operaVector(int k, double *vector1);
  5.  
  6. int main(){
  7.     int i, k, longv2;
  8.     double vector1[]={3,2,5,4}, *vector2;
  9.     printf("Introduce el valor de k: ");
  10.     scanf("%d",&k);
  11.     longv2=longv1*k-k;
  12.     vector2=operaVector(k,vector1);
  13.     for(i=0;i<longv2;i++)
  14.     printf("El elemento numero %d del nuevo vector es: %lf\n",i+1,*(vector2+i));
  15.     return 0;
  16. }
  17.  
  18. double *operaVector(int k, double *vector1){
  19.     int i, longv2;
  20.     longv2=longv1*k-k;
  21.     double *vector2=malloc(longv2*sizeof(double));
  22.     if (vector2==NULL){
  23.         puts("Error reservando memoria");
  24.         exit(EXIT_FAILURE);
  25.     }
  26.     for(i=0;i<longv2;i++)
  27.         *(vector2+i)=*(vector1+i)*0.5+i;
  28.     return vector2;
  29. }
Espero que alguien me pueda ayudar, soy nuevo en el lenguaje C.