Serie1correction Partielle

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 11

JAVA année 2016

CP 2 – série n°1

Exercices sur les conditionnelles, le contrôle de flot et les méthodes statiques

Exercice 1

Écrire un programme Ex0101.java qui lit 3 nombres au clavier, les classes dans l'ordre croissant
et les affiche du plus petit au plus grand sur la console.

C:\JAVA\TP1>java Ex0101
1er nombre : 14
2ème nombre : 10
3ème nombre : 17
les nombres dans l'ordre croissant : 10 14 17
C:\JAVA\TP1>
import java.util.Scanner;

public class Ex0101 {

public static void main(String args[]){

Scanner sc = new Scanner(System.in);


int a1, a2, a3;

System.out.println("Entrez le nombre 1 ");


a1 = sc.nextInt();

System.out.println("Entrez le nombre 2 ");


a2 = sc.nextInt();

System.out.println("Entrez le nombre 3 ");


a3 = sc.nextInt();

int max, min, mil; //max, min et le nombre du milieu

/* on commence les comparaisons */


/* on compare le 1er et le 2eme */
if (a1>a2) {
max = a1;
mil = a2;
} else {
mil = a1;
max = a2;
}

/* on compare le plus grand (entre le 1er et le 2eme) et a3 */


if (max > a3)
/* on compare le milieu et a3 */
if (mil > a3)
min = a3;
else {
int perm;

perm = mil;
mil = a3;
min = perm;
}
else {
min = mil;
mil = max;
max = a3;
}

System.out.println("Les 3 nombres dans l'ordre croissant sont : " + min + " " + mil + " " +
max);
}
}

Exercice 2

Écrire un programme qui lit au clavier une suite de nombres réels positifs ou nuls (correspondant à
des notes), terminée par la valeur -1, et calcule la moyenne olympique de ces valeurs, c'est à dire la
moyenne des notes sans prendre en compte la note la plus élevée ni la note la moins élevée.
Exemple de trace d'exécution (en gras les valeurs introduites par l'utilisateur):
C:\JAVA\TP1>java Ex0102
donnez une note ( >=0 ou -1 pour arrêter): 9.6
donnez une note ( >=0 ou -1 pour arrêter): 9.7
donnez une note ( >=0 ou -1 pour arrêter): 10.0
donnez une note ( >=0 ou -1 pour arrêter): 9.8
donnez une note ( >=0 ou -1 pour arrêter): 9.2
donnez une note ( >=0 ou -1 pour arrêter): 9.9
donnez une note ( >=0 ou -1 pour arrêter): -1
La note la plus élevée (10.0)et la note plus basse (9.2) ont été
retirées
La moyenne olympique est : 9.75
C:\JAVA\TP1>

import java.util.Scanner;
public class Ex0102 {

public static void main(String args[]){

Scanner sc = new Scanner(System.in);


float nb, max, min;
float somme = 0.0f;
int nbVal = 0;

System.out.println("Donnez une note ");


nb = sc.nextFloat();
max = min = nb;

while (nb != -1){

nbVal++;
if (nb > max)
max = nb;
if (nb < min)
min = nb;
somme = somme + nb;

System.out.println("Donnez une note ");


nb = sc.nextFloat();

System.out.println("La note la plus élevée ("+ max+ ") et la note la plus basse ("+ min +" ) ont
été retirées");

somme = somme - max - min;

System.out.println("La moyenne olympique est : "+ somme/ (float) nbVal);

}
}
Exercice 3
Écrire un programme affiche un motif triangulaire dont la taille est fixée par une valeur lue au
clavier.
Exemple de trace d'exécution (en gras les valeurs introduites par l'utilisateur):
C:\JAVA\TP1>java Ex0103
donnez taille du motif : 7

*
**
***
****
*****
******
*******

import java.util.Scanner;

public class Ex0103 {

public static void main(String args[]){

Scanner sc = new Scanner(System.in);


int taille, lignes, colonnes;

System.out.print("Entrez la taille du motif ");


taille = sc.nextInt();

for(lignes = 1; lignes <= taille; lignes++){

for( colonnes = 1; colonnes <= lignes; colonnes++)


System.out.print("*");
System.out.println("");
}
}
}

Exercice 4
Exercice 5
La suite de Fibonacci est définie par la formule de récurrence suivante:
u1 = 1
u2 = 2
un = un-1 + un-2 ( n >= 3).
Écrire un programme Ex0105.java qui permet de calculer le nième terme de la suite de Fibonacci,
n étant fixé par l'utilisateur.
import java.util.Scanner;

public class Ex0105 {

public static void main(String args[]){

Scanner sc = new Scanner(System.in);


int i, u, v, w; // u premier terme, v deuxième terme de la suite
u = 0;
v = 1;
w = u + v;

System.out.print("Donnez le rang de la suite ");


int rang;
rang = sc.nextInt();

for(i = 0; i < rang; i++){


w = u + v;
v = u;
u = w;
}

System.out.println("Le terme de rang " + rang + " est " + w);

}
}

Exercice 6
Un nombre est n premier s'il a seulement deux diviseurs : 1 et n.
Écrire un programme Ex0106.java qui permet de tester si un nombre introduit par l'utilisateur est
premier ou non.
Exemple de trace d'exécution (en gras les valeurs introduites par l'utilisateur):
C:\JAVA\TP1>java Ex0106
donnez un entier positif : 7
7 est un nombre premier

Voulez-vous essayer un autre nombre O/N ? o

donnez un entier positif : 25


25 n'est pas un nombre premier, il est divisible par 5

Voulez-vous essayer un autre nombre O/N ? n


Au revoir
C:\JAVA\TP1>

import java.util.Scanner;

public class Ex0106 {

public static void main(String args[]){

Scanner sc = new Scanner(System.in);

System.out.print("Entrez un entier ");

int n, i;

n = sc.nextInt();

/* vérification pour savoir si n est premier */

boolean est_premier = true;

for(i = 2; i < n; i++)

if ( (n % i) == 0) // si i divise n, i n'est pas premier

est_premier = false;

if (est_premier)
System.out.println(n + " est premier");

else

System.out.println(n + " n'est pas premier");

Exercice 7
Le jeu consiste à découvrir par essais successifs le prix d'un lot . Pour chaque essai, le joueur reçoit
un message : "Trop grand", "Trop petit" ou "BRAVO ! Vous avez trouvé en K essais". Le jeu est fini
quand le joueur a trouvé le prix du lot.
On propose d'écrire un programme JAVA Ex0107.java qui joue le rôle de meneur de jeu ;
l'exécution de ce programme vous fera tenir le rôle du joueur. Le programme Ex0107 doit définir
le prix du lot en tirant un entier aléatoire entre 1 et 1000 et dialoguer avec le joueur pendant le jeu.
Pour choisir un nombre au hasard on utilisera la méthode random de la classe Math qui retourne
un réel (double) tiré au hasard et de manière uniforme dans l'intervalle [0 1].
exemple :
double x;
x = Math.random();
exemple d'exécution du programme Ex0107
eudoxe%java Ex0107
Le but est de chercher un prix entre 0 et 1000
Tapez un prix : 566
Trop grand
Tapez un prix : 400
Trop grand
Tapez un prix : 150
Trop petit
Tapez un prix : 200
Trop petit
Tapez un prix : 214
BRAVO ! Vous avez gagné en 5 essais

import java.util.Scanner;

public class Ex0107 {

public static void main(String args[]){

Scanner sc = new Scanner(System.in);


double x;
int prix, essai;
x = Math.random(); // valeur aléatoire entre 0 et 1
x = x *1000.0;

int v;
v = (int) x; // transformation de x en entier

System.out.println("Le but est de trouver un prix entre 0 et 1000");


System.out.print("Entrez un prix ");
prix = sc.nextInt();
essai = 1;

while (v != prix){

if (prix > v)
System.out.println("Trop grand");
else
System.out.println("Trop petit");

System.out.print("Entrez un prix ");


prix = sc.nextInt();
essai++;
}

System.out.println("Bravo ! Vous avez trouvé le prix de " + v + " en " + essai + " essais.");

}
}

Exercice 8

Écrire un programme JAVA Ex0108.java permettant de calculer et d'afficher la valeur de xn où


x et n sont respectivement un réel (double) et un entier introduits au clavier.
Pour effectuer ce calcul on ne fera pas appel aux fonctions de la classe Math (pow ou exp et log),
mais on utilisera des instructions itératives (for, while ou do while). Le programme devra
permettre de traiter tous les cas possibles : n = 0, n > 0 et n < 0 avec X réel négatif, positif ou nul.
Rappelons que :
On pourra organiser le calcul de la façon suivante :

• X^0 = 1 pour X > 0,


• 0^0 = 1 par convention,
• X^0 n'est pas défini pour X < 0,
• 0^n = 0 pour n > 0,
• 0^n n'est pas défini pour n < 0.

import java.util.Scanner;

public class Ex0108 {

public static void main(String args[]){

/* programme de calcul de puissance */


Scanner sc = new Scanner(System.in);

double x;
int n;

System.out.print("Entrez x ");
x = sc.nextDouble();

System.out.print("Entrez n ");
n = sc.nextInt();

if (n == 0){
/* cas où n = 0 */
if (x >= 0.0)
System.out.println(1);
else
System.out.println("non défini");
} else {
/* cas ou n différent de 0 */

if (n > 0) {
int i;
double produit = 1.0;

for(i = 0; i < n; i++)


produit = produit*x;

System.out.println(produit);
} else {
/* cas où n < 0 */

if (x == 0.0) {
System.out.println("non défini");
} else {
int i;
double produit = 1.0;

for(i = 0; i < -n; i++)


produit = produit*x;

produit = 1.0/produit;

System.out.println(produit);
}
}
}
}

Vous aimerez peut-être aussi