Corrigé du TD N°3

publicité
IUT-UMLV :: DUT - INFO :: 1ère Année (2012-2013)
Programmation en Langage C :: Corrigé du TD N°3
===================================================================================================
Fonctions ne renvoyant pas de valeur
==========================================
Exercice 1. (Table de multiplication)
-------------------------------------------------#include <stdio.h>
void Multiples(int n);
int main(void) {
int j;
for (j=1; j<=10; j++) {
Multiples(j);
printf("\n");
}
return 0;
}
void Multiples(int n) {
int i;
for (i=0; i<10; i++) printf("%3d ", n*i);
}
Exercice 2. (Test de primalité)
-------------------------------------------------#include <stdio.h>
void AffichePremier(int n);
int main(void) {
int test;
do {
printf("Entrez un entier positif : ");
scanf("%d", &test);
if (test < 0)
printf("%d est un numbre negatif. (il faut un numbre positif).\n", test);
} while (test < 0);
AffichePremier(test);
return 0;
}
void AffichePremier(int n) {
int i, estPremier = 1;
if (n == 1 || n == 0) estPremier = 0;
for (i = 2; i < n; i++) {
if (n % i == 0) {
estPremier = 0;
break;
}
}
if (estPremier)
printf("\n%d est un nombre premier.\n\n", n);
else
printf("\n%d n'est pas un nombre premier.\n\n", n);
}
Fonctions renvoyant une valeur
==========================================
Exercice 1. (Test de primalité)
-------------------------------------------------#include <stdio.h>
int EstPremier(int n);
void DeuxPremiers(int, int);
int main(void) {
int n1, n2;
do {
printf("Entrez un entier positif : ");
scanf("%d%d", &n1, &n2);
if (n1 < 0 || n2 < 0)
printf("(n1= %d, n2= %d) - Il faut entrer deux numbres positifs).\n", n1, n2);
} while (n1 < 0 || n2 < 0);
DeuxPremiers(n1, n2);
return 0;
}
void DeuxPremiers(int n, int m) {
if (EstPremier(n) && EstPremier(m))
printf("\nLes deux nombres sont premiers.\n\n");
else if (!EstPremier(n) && !EstPremier(m))
printf("\nAucun des nombres n’est premier.\n\n");
else
printf("\nUn seul nombre est premier.\n\n");
}
int EstPremier(int n) {
int i, estPremier = 1;
if (n == 1 || n == 0) estPremier = 0;
for (i = 2; i < n; i++) {
if (n % i == 0) {
estPremier = 0;
break;
}
}
return (estPremier);
}
Exercice 2. (Nombre premier supérieur un entier n)
-------------------------------------------------#include <stdio.h>
int EstPremier(int n);
int PremierSuperieur(int n);
int main(void) {
int n;
do {
printf("Entrez un entier positif : ");
scanf("%d", &n);
if (n < 0)
printf("%d est un numbre negatif. (il faut un numbre positif).\n", n);
} while (n < 0);
printf("Le premier nombre premier superieur ou egal a %d est %d\n", n, PremierSuperieur(n));
return 0;
}
int PremierSuperieur(int n) {
for (;!EstPremier(n); n++);
return (n);
}
int EstPremier(int n) {
int i, estPremier = 1;
if (n == 1 || n == 0) estPremier = 0;
for (i = 2; i < n; i++) {
if (n % i == 0) {
estPremier = 0;
break;
}
}
return (estPremier);
}
Exercice 3. (Liste des nombres premiers)
-------------------------------------------------#include <stdio.h>
int EstPremier(int n);
void PremiersPremiers(int n);
int main(void) {
int n;
do {
printf("Entrez un entier positif : ");
scanf("%d", &n);
if (n < 0)
printf("%d est un numbre negatif. (il faut un numbre positif).\n", n);
} while (n < 0);
PremiersPremiers(n);
return 0;
}
void PremiersPremiers(int n) {
int i;
printf("\nLes nombres premiers inferieurs a %d: ", n);
for (i = 2; i < n; i++)
if (EstPremier(i)) printf("%d ", i);
printf("\n\n");
}
int EstPremier(int n) {
int i, estPremier = 1;
if (n == 1 || n == 0) estPremier = 0;
for (i = 2; i < n; i++) {
if (n % i == 0) {
estPremier = 0;
break;
}
}
return (estPremier);
}
Exercice 4. (Nombres premiers jumeaux)
-------------------------------------------------#include <stdio.h>
int EstPremier(int n);
void Jumeaux(int n);
int main(void) {
int n;
do {
printf("Entrez un entier positif : ");
scanf("%d", &n);
if (n < 0)
printf("%d est un numbre negatif. (il faut un numbre positif).\n", n);
} while (n < 0);
Jumeaux(n);
return 0;
}
void Jumeaux(int n) {
int i;
if (n <= 4)
printf("Pas de couples..\n");
else {
printf("\nLes couples de nombres premiers jumeaux inferieurs a %d: \n", n);
for (i = 2; i < n; i++)
if (EstPremier(i) && EstPremier(i+2)) printf("(%d, %d)\n", i, i+2);
}
}
int EstPremier(int n) {
int i, estPremier = 1;
if (n == 1 || n == 0) estPremier = 0;
for (i = 2; i < n; i++) {
if (n % i == 0) {
estPremier = 0;
break;
}
}
return (estPremier);
}
Exercice 5. (Décomposition en facteurs premiers)
-------------------------------------------------#include <stdio.h>
int EstPremier(int n);
void Decomposition(int n);
int main(void) {
int n;
do {
printf("Entrez un entier positif : ");
scanf("%d", &n);
if (n < 0)
printf("%d est un numbre negatif. (il faut un numbre positif).\n", n);
} while (n < 0);
Decomposition(n);
return 0;
}
void Decomposition(int n) {
int divisor=2, power=0, flag=0;
printf("\nla decomposition en facteurs premiers de %d = ", n);
while (n >= divisor) {
if (n % divisor == 0) {
power += 1;
n = n / divisor;
flag = 1;
}
else {
if (flag) printf("%d^%d * ", divisor, power);
divisor++;
power=0;
flag = 0;
}
}
if (flag) printf("%d^%d", divisor, power);
printf("\n\n");
}
int EstPremier(int n) {
int i, estPremier = 1;
if (n == 1 || n == 0) estPremier = 0;
for (i = 2; i < n; i++) {
if (n % i == 0) {
estPremier = 0;
break;
}
}
return (estPremier);
}
Exercice 6. (Papier, caillou, ciseaux)
-------------------------------------------------#include <stdio.h> int LireInf2(void);
int arbitre(void);
int main(void) {
int j1=0, j2=0;
int i; }
for ( i = 0 ; i < 10 ; i++ )
switch (arbitre()) {
case 1: j1++; break;
case 2: j2++; break;
default: break;
}
printf("\nScores :\n\tJoueur 1: %d\n\tJoueur 2: %d\n\n",j1, j2);
return 0;
int LireInf2(void) {
int i;
}
do {
printf("Entrez votre pari (0, 1, ou, 2): ");
scanf("%d",&i);
if (i < 0 || i > 2)
printf("\nIl faut entrer 0, 1, ou 2 !!!\n\n");
} while (i < 0 || i > 2);
return i;
int arbitre(void) {
int J1, J2;
printf("Codification :\n\tcaillou = 0\n\tpapier = 1\n\tciseau = 2\n");
printf("pari du joueur 1 :");
J1 = LireInf2();
printf("pari du joueur 2 :");
J2 = LireInf2();
}
if (J1==J2) return 0;
if (J1==((J2+1)%3)) return 1;
return 2;
Téléchargement