• Aucun résultat trouvé

Documents non autorisés. Le barème est donné seulement à titre indicatif.

N/A
N/A
Protected

Academic year: 2022

Partager "Documents non autorisés. Le barème est donné seulement à titre indicatif."

Copied!
4
0
0

Texte intégral

(1)

Université Paris-Diderot - L1 Novembre 2012

IF1: Introduction à l'Informatique et à la programmation - Devoir sur Table

(Correction)

Documents non autorisés. Le barème est donné seulement à titre indicatif.

Exercice 1 (10 points)

1. Écrire une fonction Java hasard qui génère au hasard un entier entre 1 et 1000.

Correction :

static int hasard(){

return partieEntiere(1000*Math.random())+1;

}

2. Écrire une fonction Java miroir qui prend un entier positif

n

en argument et qui ren- voie son miroir. Ainsi par exemple, l'appel de fonction miroir(98365964) renvoie l'entier 46956389.

Correction :

static int miroir (int n){

int res;

int a = n;

if (n>=0){

res=0;

while (a !=0){

res = res*10 + (a %10);

a = a/10; } return res; } else return -1;

}

3. Écrire un programme Java DevinerMiroir qui génère au hasard un entier

n

entre 1 et 1000, puis fait deviner son miroir à l'utilisateur en précisant, après chaque essai infructueux, si

n

est supérieure ou inférieure au nombre à trouver. Voici un exemple d'exécution:

> java DevinerMiroir

Rentrez un nombre entre 1 et 1000 : 500 Le nombre a trouver est plus grand.

Rentrez un nombre entre 1 et 1000 : 950 Le nombre a trouver est plus grand.

Rentrez un nombre entre 1 et 1000 : 975 Le nombre a trouver est plus petit.

Rentrez un nombre entre 1 et 1000 : 965 Le nombre a trouver est plus grand.

Rentrez un nombre entre 1 et 1000 : 970

Le nombre a trouver est plus petit.

(2)

Rentrez un nombre entre 1 et 1000 : 966 Le nombre a trouver est plus grand.

Rentrez un nombre entre 1 et 1000 : 967 Vous avez trouvé le miroir de 769.

4. Raner le programme précédent pour qu'il ache au nal le nombre total d'essais néces- saires à l'utilisateur pour gagner.

Correction :

import java.util.Scanner;

class DevinerMiroir{

static int partieEntiere(double x){

int e = 0;

while(e <= x) e++;

return e - 1;}

static int hasard(){

return partieEntiere(1000*Math.random())+1;

}

static int miroir (int n){

int res;

int a = n;

if (n>=0){

res=0;

while (a !=0){

res = res*10 + (a %10);

a = a/10; } return res; } else return -1;

}public static void main(String[] args){

int r, essais;

int a,b;

boolean reponse;

a = hasard();

b= miroir(a);

reponse = false;

essais = 0;

while (!reponse){

System.out.print("Rentrez un nombre entre 1 et 1000 : ");

Scanner sc = new Scanner(System.in);

r = sc.nextInt();

essais = essais + 1;

if (r == b){

System.out.println("Vous avez trouve le miroir de "+a+" en "+essais+ " coups");

reponse = true;}

else if (r > b)

System.out.println("Le nombre a trouver est plus petit.");

(3)

else System.out.println("Le nombre a trouver est plus grand.");}

}}

Exercice 2 (10 points) On veut calculer un polynôme de la forme

a0·x0+a1·x1+. . .+an·xn

. 1. Écrire une fonction polynome qui prend en argument une valeur réelle

x

et un tableau

d'entiers

a

contenant les valeurs de

a0, . . . , an

et qui renvoie la valeur du polynôme.

Correction :

public static double polynome(int[] a, double x){

double res=0;

for (int i=0; i<a.length;i++) res=res+(a[i] *Math.pow(x,i));

return res; }

2. Écrire une fonction modifier de type void qui prend en argument un tableau d'entiers

a

et qui modie ce même tableau en multipliant chacun de ses éléments par

5

.

Correction :

public static void modifier(int[] a){

for (int i=0; i<a.length;i++) a[i]= a[i]*5; }

3. Écrire le programme principal qui demande d'abord à l'utilisateur de rentrer un entier

n

, puis de rentrer les

n

valeurs d'un tableau

t

, et enn la valeur de

y

.

Le programme imprime ensuite le résultat de polynome

(t, y)

, puis modie le tableau

t

en utilisant la fonction modifier, puis imprime à nouveau polynome(t, y).

Correction :

import java.util.*;

public class Polynome{

public static double polynome(int[] a, double x){

double res=0;

for (int i=0; i<a.length;i++) res=res+(a[i] *Math.pow(x,i));

return res;}

public static void modifier(int[] a){

for (int i=0; i<a.length;i++) a[i]= a[i]*5; }

public static void main(String[] args){

Scanner sc = new Scanner(System.in);

System.out.print("Taille tableau : ");

int n=sc.nextInt();

(4)

int[] t= new int[n];

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

System.out.print("Un element : ");

t[i]=sc.nextInt();}

System.out.print("Valeur de y : ");

int y=sc.nextInt();

System.out.println("Resultat : "+polynome(t,y));

modifier(t);

System.out.println("Resultat : "+polynome(t,y)); } }

4. Donner un exemple d'exécution du programme principal.

Références

Documents relatifs

3. Au bout d’un moment, la force électromotrice de la pile est E=0.45V.. Dans un récipient maintenu à 25 °C, on introduit initialement une solution aqueuse de peroxyde

Expliquer la réversibilité d’un électrolyseur PEM, si les flux de gaz sont réversibles (réservoirs de stockage H 2 et O 2 ). Q7)Soit un électrolyseur PEM ayant N cell = 28

Question 2 (4 points) : Décrire un exemple d'instanciation de ce système présentant les différents agents logiciels nécessaires, les rôles qu'ils jouent au sein des

Dans le contexte d’une simulation multiagent, expliquez brièvement deux techniques d’exécution différentes (ou algorithmes différents) permettant d’exécuter

a- Quelle est la masse moléculaire moyenne en poids du mélange en fonction de la masse moléculaire initiale du polymère?. b- Quelle est la masse moléculaire moyenne en nombre du

Écrire une fonction compresser qui prend en argument un tableau d'entiers a et qui renvoie comme résultat un tableau qui contient les éléments de a mais qui est privé de son plus

On conclut que les points A', Ge , I sont alignés si et seulement si le triangle ABC est isocèle en A ou rectangle

[r]