/************************************/
/******** exo 1 feuille 7 td *******/
/***********************************/
#include <stdio.h>

/*question a */
int jour(int n)
{
  return( (n+4) %7 );
}

/*question b*/
/*on suppose j entre 1 et 7 compris */
int affiche_jour(int j)
{
  if (j==1) {printf("lundi \n");};
  if (j==2) {printf("mardi \n");};
  if (j==3) {printf("mercredi \n");};
  if (j==4) {printf("jeudi \n");};
  if (j==5) {printf("vendredi \n");};
  if (j==6) {printf("samedi \n");};
  if (j==0) {printf("dimanche \n");}
}

/*question c*/
void demande_affiche_jour(void)
{
  int n;
  printf("Donnez le jour \n");
  scanf("%d",&n);
  affiche_jour(jour(n));
}

/*question d*/
int jourGen(int j,int n)
{
  return ((n+(j-1)) %7 );
}

int main(void)
{
  printf("%d\n",jour(18)); /*affiche 1*/
  affiche_jour(0); /*affiche dimanche*/
  demande_affiche_jour(); /* pour 18, affiche lundi*/
  affiche_jour(jourGen(6,18)); /*affiche lundi*/
  return 0;
}
/************************************/
/******** exo 2 feuille 7 td *******/
/***********************************/
#include<stdio.h>

int main(void)
{
  int i; int j; int k;
  
  for (i=0;i<=9;i=i+1)
    {
      for (j=0;j<=9;j=j+1)
	{
	  k = i-j;
	  if (k>=0) {printf("(%d,%d,%d) ",i,j,k);}
	}
	  printf("\n");
    }
  return 0;
}
/* Rsultat :  */
/* (0,0,0)  */
/* (1,0,1) (1,1,0)  */
/* (2,0,2) (2,1,1) (2,2,0)  */
/* (3,0,3) (3,1,2) (3,2,1) (3,3,0)  */
/* (4,0,4) (4,1,3) (4,2,2) (4,3,1) (4,4,0)  */
/* (5,0,5) (5,1,4) (5,2,3) (5,3,2) (5,4,1) (5,5,0)  */
/* (6,0,6) (6,1,5) (6,2,4) (6,3,3) (6,4,2) (6,5,1) (6,6,0)  */
/* (7,0,7) (7,1,6) (7,2,5) (7,3,4) (7,4,3) (7,5,2) (7,6,1) (7,7,0)  */
/* (8,0,8) (8,1,7) (8,2,6) (8,3,5) (8,4,4) (8,5,3) (8,6,2) (8,7,1) (8,8,0)  */
/* (9,0,9) (9,1,8) (9,2,7) (9,3,6) (9,4,5) (9,5,4) (9,6,3) (9,7,2) (9,8,1) (9,9,0)  */

/************************************/
/******** exo 3 feuille 7 td *******/
/***********************************/
#include<stdio.h>
#include<stdlib.h>

void exo_a(void)
{
  char c;
  int cpt = 0;
  
  c = getchar();
  while(c != '#')
    {
      cpt = cpt+1;
      c = getchar();
    }
  printf("le nombre de caractres lus diff de '#' est %d\n",cpt);
}

void exo_b(void)
{
  char c;
  char m ; /*memoire du dernier char different lu*/

  c = getchar();
  m = c;
  while(c != '#')
    {
      if (m!=c) 
	{
	  m = c; printf("%c",m);
	}
      c = getchar();
    }
  printf("\n");
}

void exo_c(void)
{
  char c;
  int cpt = 0;
  char m ; 

  c = getchar(); /*attention "entree" compte comme un caractere*/
  while (c != '#')
    {
      m = c;
      cpt = 0;
      while (c == m)
	{
	  cpt = cpt +1;
	  c = getchar();
	}
      if (c != '#') {printf("%d%c",cpt,m);}   
    }
  printf("%d%c\n",cpt,m);
}

int main(void)
{
  exo_a();
/* ceci est une phrase# */
/* le nombre de caractres lus diff de '#' est 19 */

  exo_b();
/* aaaaaaaaaaaaaaaaaaaaaaaaazzerttttttty# */
/* azerty */

  exo_c();
/* azeeeeeerrttyyu# */
/* 1a1z6e2r2t2y1u */

  return 0;
}
/************************************/
/******** exo 4 feuille 7 td *******/
/***********************************/
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define MAX 10

/*tire un entier au hasard entre inf et sup COMPRIS*/
int hasard(int inf,int sup)
{
  int rando = rand();

  return (inf + (rando % (sup - inf +1)));
}

/*initialisation du tableau pour test*/
int initTab(int u[MAX])
{
  int i;
  for (i=0;i<MAX;i++)
    {
      u[i] = hasard(0,2*MAX);
    }  
}

/*visualisation du tableau t*/
void visuTab(int t[MAX])
{
  int i;
  printf("[");
  for (i=0;i<=MAX-2;i=i+1)
    {
      printf(" %d ,",t[i]);;
    }
  printf(" %d ]\n",t[MAX-1]);
}

/*a la ieme boucle, mem stocke le max du sous tableau u[0..i]*/
int maxTab(int u[MAX])
{
  int mem = u[0];
  int i;
  for (i=1;i<MAX;i++)
    {
      if (u[i]>mem) {mem = u[i];};
    }
  return mem;
}

/*maxi case a case*/
/*mem stocke le max global*/
/*pour chaque case, je compare a[i] et b[i], puis le + gros a la var mem */
int max_case_a_case(int a[MAX], int b[MAX], int c[MAX])
{
  int mem = a[0];
  int i;

  for (i=0;i<MAX;i++)
    {
      if (a[i]>b[i]) 
	{c[i] = a[i];}
      else
	{c[i] = b[i];};
      if (c[i]>mem) {mem = c[i];}
    }
  return mem;
}

int main(void)
{
  int res;
  int tab1[MAX];  int tab2[MAX]; int tab3[MAX];
  srand(time(NULL));

  initTab(tab1); initTab(tab2);
  visuTab(tab1); visuTab(tab2);

  printf("Max du tableau 1 : %d\n",maxTab(tab1));
  printf("Max du tableau 2 : %d\n",maxTab(tab2));
  res = max_case_a_case(tab1,tab2,tab3);
  printf("Le max global est : %d\n",res);
  visuTab(tab3);  

  return 0;
}
/* [ 7 , 12 , 5 , 6 , 2 , 8 , 2 , 11 , 2 , 10 ] */
/* [ 4 , 13 , 20 , 12 , 1 , 3 , 18 , 20 , 4 , 19 ] */
/* Max du tableau 1 : 12 */
/* Max du tableau 2 : 20 */
/* Le max global est : 20 */
/* [ 7 , 13 , 20 , 12 , 2 , 8 , 18 , 20 , 4 , 19 ] */

