10/11/2006, 17:52
|
| | 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 |