Ver Mensaje Individual
  #3 (permalink)  
Antiguo 10/11/2006, 17:52
Nivel7
 
Fecha de Ingreso: abril-2006
Ubicación: Acapulco Gro. México
Mensajes: 483
Antigüedad: 18 años, 8 meses
Puntos: 2
con respecto a las funciones clonar y diasPorMes puedo ver:

a pesar de pasar el tamaño del vector el bucle while esta condicionado por la búsqueda de un 0 en el vector, esto es valido con cadenas de caracteres en este caso no estoy seguro de que estés usando un delimitador 0 en tus vectores generados aleatoriamente.
lo correcto seria usar como limite del bucle el tamaño del vector.
ejemplo:
for(i = 0; i < tam; i++);

Tambien, estas retornan un puntero el cual fue reservado dentro de la función, por tanto estas funciones delegan responsabilidades al receptor.
sin embargo tu reservas memoria previo a su uso:

res = (int *)malloc(tamano*sizeof(int));
clon = (int *)malloc(tamano*sizeof(int));

y luego haces esto:

//Calcular dias del array creado, mediante funcion diasPorMes
res = diasPorMes(vector,tamano,anyo);

//Clonar array calculado
clon = clonar(res,tamano);

al hacer esto, olvidas que las funciones reservarán memoria para estos punteros.

no es necesario reservar la memoria o de lo contrario eliminarla antes de usar la funciones.(si es que estos punteros(vectores) se usaran antes).

free(res);
res = diasPorMes(vector,tamano,anyo);
free(clon);
clon = clonar(res,tamano);

sin olvidar liberar también al final.


Tu función invertir podría funcionar de forma similar a como funcionan las funciones clonar y diasPorMes, para evitar:

Modificar el vector pasado como parámetro y que dos punteros apunten al mismo vector.
Ya que después de llamar a la función invertir, tanto clon como invertido contienen lo mismo.


Saludos.

Última edición por Nivel7; 10/11/2006 a las 17:59