Vous êtes sur la page 1sur 5

Informatique S2 Université Paris 1

L1 MASS Panthéon-Sorbonne

Correction du TD n°3
Algorithmie, boucles et fonctions

Exercice 1.
#include <stdio.h>
#include <math.h>
int main(){
int x1, x2, y1, y2, i, j;
float dist;
printf("Entrez les coordonnées entières de x = (x1,x2):");
scanf("%i %i",&x1,&x2);
printf("Entrez les coordonnées entières de y = (y1,y2):");
scanf("%i %i",&y1,&y2);
dist = sqrt((y1-x1)*(y1-x1) + (y2-x2)*(y2-x2));
printf("La distance entre les 2 points est : %g\n",dist);
// Affichage des points dans le repère
for (j=9;j>=0;j--){
printf("%i|",j);
for (i=0;i<=9;i++){
if (x1==i && x2==j) printf("*");
else if (y1==i && y2==j) printf("*");
else printf(" ");
}
printf("\n");
}
// affichage de la barre horizontale
printf(" +");
for (i=1;i<=9;i++) printf("--");
printf("\n");
// affichage des chiffres horizontaux
printf(" ");
for (i=1;i<=9;i++) printf(" %i",i);
printf("\n");
return 0;
}

Exercice 2.

#include <stdio.h>
// Calcule et dessine sin(x) pour x \in [a,b]
int main(){
int i,n;
float a=-3,b=3,x,y,pas;
pas = 0.5;
x = a;
while (x <= b){
y = x - x*x*x/6 + x*x*x*x*x/120 - x*x*x*x*x*x*x/5040;
// Version affichage texte

13
//printf("%f \t %f \t %i\n",x,y,(int)(10*y));
// Version affichage graphique
n = (int)(10*(y+1));
printf("%1.1f|",x);
for(i=1;i<n;i++) printf(" ");
printf("*\n");
x += pas;
}
return 0;
}

Exercice 3.
#include <stdio.h>
char typedeconversion(){
char op;
printf("Quel type de conversion (C/F) ?");
scanf("%c",&op);
return op;
}
float recuptemperature(){
float t;
printf("Entrez une température :");
scanf("%f",&t);
return t;
}
float convFtoC(float f){
float c;
c = (f - 32) * 5 / 9;
return c;
}
float convCtoF(float t){
float f;
f = c * 9 / 5 + 32;
return f;
}
void afficheresultat(float t){
printf("Le résultat est : %f\n",t);
}
int main(){
char op;
float t1, t2;
op = typedeconversion();
t1 = recuptemperature();
if (op == ’C’) t2 = convFtoC(t1);
else t2 = convCtoF(t1);
afficheresultat(t2);
return 0;
}

Exercice 4.
#include <stdio.h>
float puissance(float x, int n){

14
// Cette fonction calcule x^n
float p=1;
int i;
for (i=1;i<=n;i++) p *= x; // p = p * x
return p;
}
float puissancerec(float x, int n){
// Cette fonction calcule x^n de manière récursive
float p;
if (n==0) p = 1;
else p = x * puissancerec(x,n-1);
return p;
}
int main(){
float x,r;
int n;
// Récupération des valeurs de x et n
printf("x = ");
scanf("%f",&x);
printf("n = ");
scanf("%i",&n);
// calcul et affichage du résultat
r = puissance(x,n);
printf("%g^%i = %g \n",x,n,r);
return 0;
}

Exercice 5.
float absol(float x){
if (x < 0) return -x;
else return x;
}
float racine(float a){
// Cette fonction calcule sqrt(a)
float s1=1, s2;
s2 = 0.5 * (s1 + a / s1);
while (absol(s2 - s1) >= 1e-1){
s1 = s2; // s2 devient l’ancien
s2 = 0.5 * (s1 + a / s1);
}
return s2;
}
int main(){
float a, sq;
// Récupération des valeurs de x et n
printf("a = ");
scanf("%f",&a);
// calcul et affichage du résultat
sq = racine(a);
printf("La racine de %g = %g \n",a,sq);
return 0;
}

15
Exercice 6.
#include <stdio.h>
int main() {
int a,b,c,delta;
float x,x1,x2;
printf("Entrez les valeurs des paramètres : \n");
scanf("%i %i %i", &a,&b,&c);
/* Lecture des valeurs des variables a, b et c */
if (a==0) {
printf("Ce n’est pas une équation du second degrés!\n");
x = - c / b;
printf("La solution de %i x + %i = 0 est %f .\n",b,c,x);
}
else {
delta = b*b-4*a*c;
if (delta > 0) {
x1 = -(b+racine(delta))/(2*a);
x2 = (-b+racine(delta))/(2*a);
printf("L’équation %i x^2 + %i x + %i = 0 ", a,b,c);
printf("a deux solutions réelles : %f et %f .\n", x1,x2);
}
else {
if (delta==0) {
x = -b/(2*a);
printf("L’équation %i x^2 + %i x + %i = 0 ",a,b,c);
printf("a une solution réelle double : %f .\n", x);
}
else {
printf("L’équation %i x^2 + %i x + %i = 0 ",a,b,c);
printf("n’a pas de solutions réelles.\n");
}
}
}
}

Exercice 7.
#include <stdio.h>

int fact(int n){


// Cette fonction calcule n!
if (n == 0) return 1;
else return n * fact(n-1);
}

void polynome(int n){


int k, alpha;
printf("(a+b)^%i = ",n);
for (k=0;k<=n;k++){
alpha = fact(n) / (fact(k) * fact(n-k));
printf("%i a^%i b^%i",alpha,n-k,k);
if (k!=n) printf(" + ");
else printf("\n");

16
}
}

int main(){
int n;
printf("Entrez la valeur de n : ");
scanf("%i",&n);
polynome(n);
return 0;
}

17

Vous aimerez peut-être aussi