Bonjours, je suis étudiants et j'ai eu un cours de java, j'ai raté l'examen de janvier et doit le repasser en septembre. J'ai essayé de résoudre 2 examens ( 5 questions au total) et je souhaiterai avoir un avis sur mes réponses.
Merci
Juin 2006
Problème 1.
Ecrivez une méthode, plusLongueSequenceCroissante, qui reçoit comme argument d’entrée un tableau à une dimension d’entiers v et qui renvoie en sortie un nombre entier contenant la longueur de la plus longue sous-séquence strictement croissante et dont tous les éléments sont strictement plus grands que la moyenne des valeurs du tableau v.
Exemple :
Soit le tableau v :
4 6 5 20 31 40 5 6 9
La moyenne est 14 et la méthode renverra 3, la longueur de la sous-séquence strictement croissante dont les valeurs sont >14 : 20, 31, 40.
Signature de la méthode :Exercice 1 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part public int plusLongueSequenceCroissante(int[] v)
Problème 2.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 public class ex1 { public int plusLongueSeqenceCroissante(int[] v) { double m; int v; int c; int s; for ( int i=0; i< v.length ; i++) { v = v +i; c++; } m + v/c for ( int i=0; i< v.length ; i++) { if ( i > m && i < i+1) { s++; } } system.out.println ( "La longueur de la plus longue séquence croissante est :" + s) } }
Ecrivez une méthode Java, moyenneVoisins, qui reçoit comme argument d’entrée un tableau carré (M1) à deux dimensions contenant des réels, et qui renvoie en sortie un nouveau tableau à deux dimensions M2 contenant les éléments de M1 qui ont été remplacés par la moyenne avec leurs voisins horizontaux et verticaux. Par exemple (attention, cet exemple n’a rien à voir avec l’autre exemple illustré ci-dessous), l’élément M2[2][3] = (M1[2][3] + M1[1][3] + M1[3][3] + M1[2][2] + M1[2][4])/5 et l’élément M2[0][3] = (M1[0][3] + M1[1][3] + M1[0][2] + M1[0][4])/4. Notez qu’un élément du tableau est considéré comme voisin de lui-même et intervient donc dans le calcul. En d’autres termes, à partir de chaque élément (i, j) de la matrice M1, nous calculons l’élément (i, j) correspondant de la matrice M2 (M2[i][j]) en prenant la moyenne des valeurs M1[i][j] des voisins immédiats de (i, j) situés sur la même ligne i et sur la même colonne j.
Exemple :
Soit le tableau M1:
Le voisinage de l’élément (2, 2) est indiqué en gris; la moyenne est donc calculée sur ces 5 éléments et vaut 15/5. La méthode renverra M2 :1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4
Signature de la méthode : public double[][] moyenneVoisins(double[][] M1)4/3 5/4 5/4 4/3
8/4 10/5 10/5 8/4
12/4 15/5 15/5 12/4
11/3 15/4 15/4 11/3
Exercice 2 :
Janvier 2006
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 public class ex2 { public static void main(String[ ] args) { double [ ] [ ] scores = new double [i][j]; new double [i][j] = M1; M2[i][j]= average (M1[i][j] + M1[i-1][j] + M1[i+1][j] + M1[i][j+1]+M1[i][j+1])); } public double[ ][ ] moyenneVoisin(double [ ][ ] M1) { for (double i = 0; i =< M2.length; i++) { for(double j = 0; j =< M2[0].length; j++) { System.out.println("M2[i][j]"); } } } }
Problème 1
Ecrivez une méthode, minimaLocaux, qui reçoit comme argument d’entrée un tableau à une dimension d’entiers v et qui renvoie en sortie un nouveau tableau à une dimension contenant les indices (débutant à 0 pour le premier élément) de tous les « minima locaux » du tableau v. Un élément vi du tableau v sera considéré comme minimum local s’il est strictement plus petit que ses éléments voisins (voisin de gauche et de droite). En d’autres termes, le ième élément vi est un minimum local si vi–1 > vi < vi+1. Notez que le premier et le dernier élément du tableau ne seront jamais minimum local.
Exemple
Soit le tableau v :
La méthode renverra le tableau d’indices {2,5}.12 36 18 20 3 -1 5 6 1
Signature de la méthode : public int[] minimaLocaux(int[] v)
Exercice 1 :
Problème 2
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 public class ex1 { public int[] minimaLocaux (int[] v) { int[] s = new int []; for (int i=0; i <= v.lenght; i++) { if ( i-1 > i && i < i+1) { for (int i=0; i <= s.lenght; i++) { s=i; } } } for (int i=0; i <= s.lenght; i++) { system.out.println ("les indices des minimas locaux sont:" s); } } }
Ecrivez une méthode Java, vectorToMatrix, qui reçoit comme argument d’entrée un tableau à une dimension d’entiers v = {l1, l2, l3, l4,…, ln–1, ln} et qui renvoie en sortie une matrice carrée Mat (tableau à deux dimensions), de nombre de lignes et de colonnes égal à la taille du tableau v et contenant les éléments de v répartis de la manière suivante :
Notez que la matrice est carrée et symmétrique et qu’il y a moyen de résoudre le problème à l’aide d’une double boucle. Nous déconseillons donc fortement l’utilisation de plus de deux boucles.l1 l2 l3 l4 … ln
l2 l2 l3 l4 … ln
l3 l3 l3 l4 … ln
l4 l4 l4 l4 … ln
… … … … … ln
ln ln ln ln ln ln
Exemple :
Soit le tableau v :
La méthode renverra en sortie la matrice suivante :12 7 4 23 1
Signature de la méthode : public int[][] vectorToMatrix(int[] v)12 7 4 23 1
7 7 4 23 1
4 4 4 23 1
23 23 23 23 1
1 1 1 1 1
Exercice 2 :
Problème 3
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 public class ex2 { public int[][] vectorToMatrix(int[] v) { int[] scores = new int[5] (12, 7, 4, 23, 1); int[] scores = new int [v.length]; if(v.length != v[0].length; i++) { System.out.println("La matrice n'est pas carrée, un vecteur nul est envoyé"); } else { for(int i=0 ; i<v.length; i++) { for(int j = i; j < v[0].length; j ++) { scores [i] += v[i][j]; } } } return(v); } }
Une société de marketing récolte des informations concernant des modèles de voiture : leur prix, leur poids, etc. Dans le logiciel utilisé, les objets de type Voiture sont mémorisés dans un tableau à deux dimensions (non carré) V, chaque ligne du tableau correspondant à un constructeur automobile (Volkswagen, Nissan, etc) et chaque élément de la ligne à un modèle du constructeur. Le prix d’une voiture peut s’obtenir à l’aide de la méthode accesseur getPrice qui renvoie un « double ». Attention, tous les éléments du tableau ne contiennent pas nécessairement un objet – il faudra tester si l’élément est vide ou non.
Voici un exemple de tableau V contenant des objets de type Voiture :
Cette société de marketing est intéressée par une sélection des voitures très chères (prix élevé). Dès lors, nous vous demandons d’écrire une méthode, getMostExpensive, qui, à partir du tableau de voitures V, renvoie un ArrayList contenant tous les objets de type Voiture « très chère ». Une voiture sera considérée comme « très chère » si son prix excède de plus de deux écart-types le prix moyen des voitures enregistrées dans V (pi > 2s + m; voir ci-dessous pour la définition des variables). Rappelons ici la formule d’estimation de l’écart-type :polo golf fox jetta passat
micra almera primera
corolla avensis celica
twingo clio kangoo mégane espace
n
s = √ (( 1/(n-1) ∑[pi – m]²)
i=1
où m est la moyenne des prix, pi est le prix de la voiture i, et n est le nombre total de voitures.
Pour plus de clarté, nous vous conseillons d’écrire, en plus de la méthode principale getMostExpensive, deux méthodes séparées qui calculent, respectivement, la moyenne et l’écart-type des prix sur base du tableau V, et d’utiliser ces méthodes dans la méthode principale. Vous pouvez considérer que ces méthodes sont définies« statiques ».
Signature de la méthode principale : non communiquée.
Exercice 3 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 import java.util.ArrayList; public class ex3 { public static double [] getMostExpensive ( double[][] v) { ArrayList cher = new ArrayList(); int p; string nom; double e = e.ecart-type; double m = m.moyenne; for (double i=0; i <= v.length; i++) && (double j=0; j <= v.length; j++)) { if( ij == null ) { ij++; } else { p = ij.getprice ; nom = ij; } if ( p > 2*s + m) { cher.add ( nom ); } } system.out.println (cher); } public static double moyenne ( double[][] v) { int c; int p; double m; for (double i=0; i <= v.length; i++) && (double j=0; j <= v.length; j++)) { if( ij == null) { ij++; } else { c++; p = p+ij.getPrice; } } m=p/c; } public static double ecart-type ( double[][] v) { int n; int p; double s; double m = m.moyenne; double e; for (double i=0; i <= v.length; i++) && (double j=0; j <= v.length; j++)) { if( ij == null ) { ij++; } else { n = c.moyenne; p = ij.getPrice; s = s + ((p-m) * (p-m)); } } e = Math.sqrt (1/(n-1) * s); } }
Partager