Luego clona el vector [31 30 31] mediante una funcion a la que se le pasa el vector y devuelve otro con el clonado.
Y por ultimo invierte el contenido, mediante una funcion a la que se le pasa el vector y devuelve el mismo vector invertido.
Este es el codigo que tengo.
fichero1.c
Código:
#include <stdio.h> #include <stdlib.h> #include "ficheroh.h" int esBisiesto(int anyo){ if(anyo%400==0) return 1; else if (anyo%100==0) return 0; else if (anyo%4==0) return 1; } int numDias(int mes, int anyo){ int num; num=0; switch(mes){ case 1: case 3: case 5: case 7: case 8: case 10: case 12: num = 31; break; case 4: case 6: case 9: case 11: num = 30; break; case 2: num = 28; if(esBisiesto(anyo)==1) num=num+1; break; } return num; } int * clonar(int *a,int tam){ int * temp; int i; i=0; temp =(int*)malloc(tam*sizeof(int)); while(a[i]!=0){ temp[i]=a[i]; i++; } return temp; } int * invertir(int *a, int tam) { int i,j,aux; j=tam-1; for (i=0;i<tam/2;i++) { aux=a[i]; a[i]=a[j]; a[j]=aux; j--; } return a; } int * diasPorMes(int*a,int tam,int anyo){ int i; int *temp; i=0; temp =(int*)malloc(tam*sizeof(int)); while(a[i]!=0){ temp[i]=numDias(a[i],anyo); i++; } return temp; }
ficheroh.h
Código:
fichero2.c, donde esta el main#include <stdio.h> #ifndef _FICHEROH_H #define _FICHEROH_H int esBisiesto(int anyo); int numDias(int mes, int anyo); int * clonar(int *a,int tam); int * invertir(int* a, int tam); int * diasPorMes(int*a, int tam,int anyo); #endif
Código:
#include <stdio.h> #include <stdlib.h> #include <time.h> #include "ficheroh.h" #define LIMITE 12 int main(){ int * vector; int * res; int * clon; int * invertido; int tamano; int anyo; int i; char c; //Preguntar tamaño del array printf("Tamaño del array: "); scanf("%d",&tamano); vector = (int *)malloc(tamano*sizeof(int)); res = (int *)malloc(tamano*sizeof(int)); clon = (int *)malloc(tamano*sizeof(int)); invertido = (int *)malloc(tamano*sizeof(int)); //Inicializar array con numeros aleatorios del 0 al 12 srand((int)time(NULL)); for (i = 0;i<tamano;i++) vector[i] = (int)(rand() % LIMITE); //Ver array creado for(i=0;i<tamano;i++) printf("valor[%d]=%d\n",i,vector[i]); printf("\n"); //Preguntar al usuario año concreto printf("Año: "); scanf("%d",&anyo); //Calcular dias del array creado, mediante funcion diasPorMes res = diasPorMes(vector,tamano,anyo); //Imprimir array calculado printf("Array calculado:\n"); for(i=0;i<tamano;i++) printf("Valor[%d]=%d\n",i,res[i]); //Clonar array calculado clon = clonar(res,tamano); //Invertir el clon invertido = invertir(clon, tamano); printf("Array tras clonar e invertir:\n"); //Imprimir tras invertir for(i=0;i<tamano;i++) printf("Valor[%d]=%d\n",i,invertido[i]); free(vector); free(res); free(clon); free(invertido); scanf("%c", &c); return 0; }
Al ejecutar, el programa da error cuando tiene que hacer el clonado. No soy capaz de encontrar el error, alguien podria ayudarme? gracias