/******* Feuille 3 bis correction *********/ /******** LG le 30/09/2004 *************/ /*----------------------------------------------*/ /*for, exo1*/ /*----------------------------------------------*/ #include 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 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 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 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 int suivant (int u) { return (2+3*u); } int main(void) { int tmp = 3; int borne; int c = 0; printf("Donnez moi une borne supérieure \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 int main(void) { int i=3; int borne; printf("Donnez moi une borne supérieure \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 #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'arrête dès que l'on dépasse 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 améliorer */ /* ca en se demandant comment on obtient une somme pour n+1 à partir d'une */ /* somme pour n. A faire ! */ /*----------------------------------------------*/ /*while exo4*/ /*----------------------------------------------*/ #include #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'arrête dès que l'on récupère 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, dépenses : %d donc bilan est %d\n",sommerecettes,sommedepenses,bilan); return 0; }