Université d'Orléans Licence Maths & PC & STIC 1ère année SCL1S1IO01-Java1 Année scolaire 2005-2006 Feuille de Travaux Dirigés n° 2 Exercice 1 clavier. Ecrire un programme qui calcule la somme des n premiers entiers, n étant saisi au Exercice 2 Ecrire un programme qui permet de saisir deux entiers x et n, puis qui calcule xn par multiplications successives. Exercice 3 Ecrire un programme qui étant donné un entier positif ou nul, calcule la factorielle de cet entier. Si l’entier est strictement négatif, on demandera à l’utilisateur de saisir un nouvel entier. Puis étant donnés deux nombres p et q calcule Cpq. Rappel : La factorielle de n, notée n!, est : n ! = 1 * 2 * … * n La combinaison de q de p est : Cpq.= p!/(q!*(p-q) !) Exercice 4 Ecrire un programme qui permet de retrouver le maximum et le minimum d’une liste de nombres positifs saisis par l’utilisateur. La fin de la liste est indiquée par un nombre négatif. La longueur de la liste n’est pas limitée. Exemple : 7 2 20 15 2 6 5 -1. Le maximum est 20, le minimum est 2. Exercice 5 Ecrire un programme qui renverse un entier saisi au clavier. Par exemple si l’on saisi 1234, le programme affiche 4321. Exercice 6 Saisir la longueur et la largeur d’un rectangle et afficher à l’écran le rectangle formé du caractère *. Modifier le programme pour qu’il affiche seulement le contour du rectangle. Exercice 7 Ecrire un programme qui affiche la table de multiplication de 1 à 10. Exercice 8 Nombre parfait Ecrire un programme qui détermine si un nombre est parfait. Un nombre est parfait s’il est égal à la somme de ses diviseurs. Par exemple, 28 est parfait car 28 = 1 + 2 + 4 + 7 + 14. Puis affiche tous les nombres parfaits entre 1 et 100. Exercice 9 Nombre premier Ecrire un programme qui détermine si un nombre est premier. Un nombre est premier si ses seuls diviseurs sont 1 et lui-même. Exercice 10 - Indiquer la valeur de x à la fin de ces boucles, ainsi que le nombre d’itérations effectuées. - Remplacer toutes les boucles par des boucles while. 1. 2. 3. x = 2; for (int i = 1; i<=10; i++) { x = x +2;} i = 1; x = 1; do { x = i; i++; } while (i <= 10); x = 1; i = 1; do { x = x + 2; 4. 5. i++; } while (i < 5); x = 0; i = 1; do { x = x + 2; i++; } while (i > x); x = 2; i = 1; do { x = x + 2; i = i + 1; } while (i <= x); Exercice 11 Ecrire un programme qui étant donnés le N° de jour (1,…,7) et l’heur (de 0 à 24) affiche le jour correspondant et le nombre d’heurs écoulées depuis le début de la semaine. Si le jour ou l’heur n’est pas valide il redemande la saisie jusqu’à avoir une valeur valide. Exercice 12 Calcul du PGCD Le plus grand diviseur commun (PGCD) de deux entiers positifs a et b, avec a > b, est tel que PGCD(a,b) = PGCD(b, a mod b) et si b = 0 alors PGCD(a,b) = a Utiliser ces informations pour écrire un programme qui calcul le PGCD de deux entiers strictement positifs (on recommencera la saisie des nombres jusqu’à ce qu’ils soient bien strictement positifs). Exercice 13 Suite de Fibonacci La suite de Fibonacci est définie par : u0 = 1 u1 = 1 u n+2 = u n+1 + u n , avec n > 0 Ecrire un programme qui étant donné un entier n positif, donne le nième terme de la suite de Fibonacci. Exercice 14 Le nombre 5 est un entier pythagoricien car il existe deux autres entiers, en l’occurrence 3 et 4, tels que 5² = 4² + 3². Ecrire un programme qui recherche tous les entiers pythagoriciens compris entre 0 et 100. Exercice 15 Le jeu du nombre mystérieux Un entier est entré par le joueur A. Le joueur B doit ensuite retrouver ce nombre. Il entre un nombre. Si ce n’est pas le bon, l’ordinateur indique si le nombre donné par B est trop petit ou trop grand. B a le droit à 10 essais pour trouver le nombre de A. A la fin de la partie, l’ordinateur propose de recommencer une nouvelle partie. Si B décline l’offre, le programme affiche le nombre total de parties jouées et le nombre de parties gagnées par B. Exercice 16 Ecrire un programme qui pour un n donné : • Si n est strictement positif, saisit au clavier n nombre(s) strictement positif(s) a1, a2,…,an tel que ∀ai, 0<ai<4 ; affiche la moyenne (n1*1+n2*2+n3*3)/n sachant que ni est le nombre d’apparitions de i parmi le(s) n nombre(s) saisi(s). • Si n est négatif, affiche -1.