Exercice langage C: Programmes plus complexes

Travail à Faire:

  • Ecrire un programme qui affiche sur écran la table des codes ASCII des caractères compris entre 1 et 128.
  • Ecrire le programme de résolution  de l’équation AX² +BX + C = 0 dans R en étudiant tous les cas possibles. 

Le plus grand commun diviseur (PGCD) de deux entiers A et B est le plus grand entier qui divise à la fois A et B

  • Ecrire un programme qui calcule le PGCD de deux entiers :
  1. en utilisant la méthode PGCD(A,B) = PGCD(B,A-B) si A > B et PGCD(A,B) = PGCD(A,B-A) si A < B.
  2. en utilisant le célèbre algorithme d’EUCLIDE : PGCD(A,B) = PGCD(B,A mod B) si A>=B PGCD(A,B) = PGCD(A,B mod A) si A<=B PGCD(A,0) = A où A mod B désigne le reste de la division entière entre A et B.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
1)


/* Affichage de la table ASCII */
#include 

int main()
{
	int car;

	for (car=0; car<32; car++)
	{
		printf("%3d - \'%c\'", car+32, car+32);
		printf("%3d - \'%c\'", car+64, car+64);
		printf("%3d - \'%c\'\n", car+96, car+96);
	}
	return 0;
}

2)


/* Resolution d'une equation du second degre */
#include 
#include 

int main()
{
	double a, b, c, d;
	printf(" a: "); scanf("%lf", &a);
	printf(" b: "); scanf("%lf", &b);
	printf(" c: "); scanf("%lf", &c);

	if (a==0.0)
	{
		if (b==0.0)
		{
			if (c==0.0)
			{
				printf("Infinite de solutions\n");
			}
			else
			{
				printf("Pas de solutions\n");
			}
		}
		else
		{
			printf("Racine unique : %f\n", -c/b);
		}
	}
	else
	{
		d = b*b - 4*a*c;
		if (d==0.0)
		{
			printf("Racine unique : %f\n", -b/2*a);
		}
		else if (d>0.0)
		{
			printf("Deux racines reelles :\n");
			printf("x1 = %f\n", (-b + sqrt(d))/2*a);
			printf("x2 = %f\n", (-b - sqrt(d))/2*a);
		}
		else /* d
		{
			printf("Deux racines complexes :\n");
			printf("x1 = %f + i x %f\n", -b/2*a,  sqrt(-d)/2*a);
			printf("x2 = %f - i x %f\n", -b/2*a, -sqrt(-d)/2*a);
		}
	}
	return 0;
}

 



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
/* Calcul du PGCD de deux entiers
 * Methode des soustractions successives
 * Par convention, pgcd(x,0) = x */

#include 

int main()
{
	int a, b;
	printf(" a: "); scanf("%d", &a);
	printf(" b: "); scanf("%d", &b);

	printf("pgcd(%d,%d) = ", a, b);
	if (a == 0)
	{
		printf("%d\n", b);
	}
	else if (b == 0) 
	{
		printf("%d\n", a);
	}
	else 
	{
		while (a != b)
		{
			if (a > b)
			{
				a = a - b;
			}
			else
			{
				b = b - a;
			}
		}

		printf("%d\n", a);
	}

	return 0;
}


3) b


/* Calcul du PGCD de deux entiers
 * Methode des modulos successifs
 * Par convention, pgcd(x,0) = x */

#include 

int main()
{
	int a, b;
	printf(" a: "); scanf("%d", &a);
	printf(" b: "); scanf("%d", &b);

	printf("pgcd(%d,%d) = ", a, b);
	if (a == 0)
	{
		printf("%d\n", b);
	}
	else if (b == 0) 
	{
		printf("%d\n", a);
	}
	else 
	{
		while (a != 0 && b != 0)
		{
			if (a >= b)
			{
				a = a % b;
			}
			else
			{
				b = b % a;
			}
		}

		if (b == 0)
		{
			printf("%d\n", a);
		}
		else
		{
			printf("%d\n", b);
		}
	}

	return 0;
}