/******* Feuille 3 bis correction *********/
/********  LG le 30/09/2004  *************/


/*----------------------------------------------*/
/*for, exo1*/
/*----------------------------------------------*/

#include <stdio.h>

int puissance (int x, int k)
{
  int tmp = x;
  int i;

  for (i=2;i<=k;i=i+1)
    {
      tmp = tmp * x ;
    }
  return (tmp);
}


int main(void)
{

  printf("%d \n",puissance(4,2));

  return 0;
}
/*----------------------------------------------*/
/*for, exo2*/
/*----------------------------------------------*/
#include <stdio.h>


int suivant (int u)
{
  return (2+3*u);
}


int main(void)
{
  int i;
  int tmp = 3;
  /*impression du premier*/
  printf("%d \n",tmp);
  
  /*a chaque fois, calculer, puis imprimer*/
  for (i=2;i<=10;i=i+1)
    {
      tmp = suivant(tmp);
      printf("%d \n",tmp);
    };
  return 0;
}
/*----------------------------------------------*/
/*for, exo3*/
/*----------------------------------------------*/

#include <stdio.h>


int suivant (int a,int b)
{
  return (a+b);
}


int main(void)
{
  int i;
  int courant;
  int dernier = 1;
  int avant_dernier = 0;
  /*impression des premiers*/
  printf("%d \n",dernier);
  printf("%d \n",avant_dernier);
  
  /*a chaque fois, calculer, puis imprimer*/
  /* j'imprime F_i pour i de 0  10 soit les 11 iers*/

  for (i=2;i<=10;i=i+1)
    {
      courant = suivant(avant_dernier,dernier);
      avant_dernier = dernier;
      dernier = courant;

      printf("%d \n",courant);
    };
  return 0;
}
/*----------------------------------------------*/
/*for, exos 4 et 5*/
/*----------------------------------------------*/

#include <stdio.h>

int sommation (int n)
{
  int tmp=0; 
  int i;
  /* au tour de boucle numero i, tmp contient la somme de 1  i*/
  
  for (i=1;i<=n;i=i+1)
    {
      tmp = tmp +i;
    };
  return (tmp);
}

int sommationdouble (int n)
{
  int tmp=0;
  int i,j;

  /*au tour de boucle numero i, on calcule la somme de j=1  i*/

  for (i=1;i<=n;i=i+1)
    {
      for (j=1;j<=i;j=j+1)
	{
	  tmp = tmp +i+j;
	};
    };
  return (tmp);
}


int main(void)
{
  printf("%d\n",sommation(4)); /*imprime 10*/

  printf("%d\n",sommationdouble(3)); 
  /*imprime 24, qui est bien 2 + (2+1) + (2+2) + (3+1) + (3+2) + (3+3)*/

  return 0;
}
/*----------------------------------------------*/
/*while, exo1*/
/*----------------------------------------------*/

#include <stdio.h>

int suivant (int u)
{
  return (2+3*u);
}


int main(void)
{
  int tmp = 3;
  int borne;
  int c = 0;

  printf("Donnez moi une borne suprieure \n");
  scanf("%d",&borne);

  /*on sait que la boucle s'arrete car fonction croissante*/
  while (tmp <=borne)
    { 
      printf("%d \n",tmp);
      tmp = suivant(tmp);
      c = c+1;
    }

  printf("Nombre de tours %d\n",c);
  return 0;
}
/*----------------------------------------------*/
/*while, exo2*/
/*----------------------------------------------*/

#include <stdio.h>


int main(void)
{
  int i=3;
  int borne;

  printf("Donnez moi une borne suprieure \n");
  scanf("%d",&borne);

  /*on sait que la boucle s'arrete car fonction croissante*/
  while (i <= borne)
    { 
      if ((i%3 ==0) &&(i%5 ==0))
	{printf("%d \n",i);};
      i=i+1;
    }

  return 0;
}
/*----------------------------------------------*/
/*while exo3*/
/*----------------------------------------------*/

#include<stdio.h>
#define VRAI 1
#define FAUX 0

int sommationdouble (int n)
{
  int tmp=0;
  int i,j;

  for (i=1;i<=n;i=i+1)
    {
      for (j=1;j<=i;j=j+1)
	{
	  tmp = tmp +i+j;
	};
    };
  return (tmp);
}

int main (void)
{
  int tmp;
  int n=0;
  int continuer = VRAI;

  /*la boucle s'arrte ds que l'on dpasse 1000*/
  while (continuer)
    {
      tmp = sommationdouble(n);
      if (tmp >= 1000) {continuer = FAUX;};
      n = n+1;
    }

  printf("l'indice est %d\n",n-1);
  return 0;
}

/* Remarque : on calcule beaucoup trop de sommes, on pourrait amliorer  */
/* ca en se demandant comment on obtient une somme pour n+1  partir d'une */
/* somme pour n. A faire ! */


/*----------------------------------------------*/
/*while exo4*/
/*----------------------------------------------*/


#include<stdio.h>
#define VRAI 1
#define FAUX 0

int sommationdouble (int n)
{
  int tmp=0;
  int i,j;

  for (i=1;i<=n;i=i+1)
    {
      for (j=1;j<=i;j=j+1)
	{
	  tmp = tmp +i+j;
	};
    };
  return (tmp);
}

int main (void)
{
  int sommerecettes = 0;
  int sommedepenses = 0;
  int bilan,rep;
  int continuer = VRAI;
   
  /*la boucle s'arrte ds que l'on rcupre 0*/
  while (continuer)
    {
      scanf("%d",&rep);

      if (rep<0) 
	{
	  sommedepenses = sommedepenses - rep;
	}
      else
	{
	  if (rep>0)
	    {
	      sommerecettes = sommerecettes + rep;
	    }
	  else
	    {continuer = FAUX;}
	};      
    }
  
  bilan = sommerecettes - sommedepenses;
  printf("Recettes : %d, dpenses : %d donc bilan est %d\n",sommerecettes,sommedepenses,bilan);
  return 0;
}
