/*! \file q5.c

 *  \author EISTI
 *  \version 0.1
 *
 *  \brief normalise un tableau
 *
 */

#include <stdio.h>
#include <stdlib.h>
#define N 5

/*! \fn void afficheTab(int tailleT, int t[])
 *  \author EISTI
 *  \version 0.1
 *  \date Fri Jan 15 15:57:52 2010
 *
 *  \brief Affiche un tableau d'entier
 *
 *  \param tailleT taille du tableau
 *  \param t[] tableau à afficher
 *
 */
void afficheTab(int tailleT, int t[]) {

  int i;

  for(i=0;i<tailleT;i++){
    printf("| %d ",t[i]);
  }
  printf("|\n ");

}


/*! \fn int* concat(int tailleT1, int t1[], int tailleT2, int t2[])
 *  \author EISTI
 *  \version 0.1
 *  \date Fri Jan 15 16:01:05 2010
 *
 *  \brief Récupère la valeur maximum d'un tableau
 *
 *  \param tailleT1 taille du tableau 1
 *  \param t1[] tableau1
 *  \param tailleT2 taille du tableau 2
 *  \param t2[] tableau2 
 *  \param *tailleRes[] pointeur vers la taille du tableau resultat
 *
 *  \return le tableau concatene
 */

int* concat(int tailleT1, int t1[], int tailleT2, int t2[], int* tailleRes) {

  int i, j, *tRes;

	*tailleRes = 2*N;	//calcul de la taille du tableau resultat
	tRes=malloc(*tailleRes*sizeof(int)); //allocation de la memoire

	if(tRes!=NULL){// si l'allocation résussit
		//copie du 1er tableau dans le tableau résultat
		for(i=0;i<tailleT1;i++){
			tRes[i] = t1[i];
		}
		//copie du 2e tableau dans le tableau résultat
		for(j=0;j<tailleT2;j++){
			tRes[i+j] = t2[j];
		}
		//on retourne la taille du tableau cree pour l'afficher
		return(tRes);
	}else{
		// erreur d'allocation, on quitte le programme
		perror("Erreur d'allocation mémoire");
		exit(-1);
	}
}


/*! \fn int main (int argc, char** argv)
 *  \author EISTI
 *  \version 0.1
 *  \date Fri Jan 15 15:29:37 2010
 *
 *  \brief Fonction principale
 *
 *
 * \param argc : Nombre d'argument
 * \param argv : Tableau des arguments
 * \return 0 : le programme doit se terminer normalement
 *
 * \remarks 
 */
int main(int argc, char** argv){
  int t1[N],t2[N],i,*tRes,tailleRes;

  //saisie du 1er tableau
  for(i=0;i<5;i++){
    printf("\nSaisissez la valeur de la case %d : ",i);
    scanf("%d",&t1[i]);
  }

  //saisie du 2e tableau
  for(i=0;i<5;i++){
    printf("\nSaisissez la valeur de la case %d : ",i);
    scanf("%d",&t2[i]);
  }

	//affichage des tableaux saisis
  printf("\n Votre saisie 1 : \n ");
  afficheTab(5,t1);
  printf("\n Votre saisie 2 : \n ");
  afficheTab(5,t2);
  //concatenation
  tRes = concat(5,t1,5,t2,&tailleRes);
  printf("\n Résultat : \n ");
  // affichage du tableau normalise
  afficheTab(tailleRes,tRes);
	//quitte la fonction
	return (EXIT_SUCCESS);
}
