Quel est l'affichage produit par le programme suivant :
public class Exo11 {
public static void main(String[] args) {
int k = 2;
for (int j = 1; j < 5; j++) {
k = k + 1;
System.out.printf("%d %d%n", j, k);
k = k - j;
}
System.out.println(k);
boolean b = true;
int x = 20;
while (x > 1) {
b = b && (x > 4);
System.out.printf("%b%n", b);
x = x/2;
if(!b) {
b = !b;
}
System.out.printf("%d%n", x);
}
}
}
On obtient l'affichage suivant :
1 3 2 3 3 2 4 0 -4 true 10 true 5 true 2 false 1
Quel est l'affichage produit par le programme suivant :
import java.util.Arrays;
public class Exo21 {
public static void main(String[] args) {
int[] toto = { 12, 3, 4, 7, -4 };
System.out.printf("%s%n", Arrays.toString(toto));
System.out.printf("%s%n", toto);
int j = 0;
for (int x : toto) {
System.out.printf("[%d] %d, ", x, j);
j = j + x;
}
System.out.println(j);
int[] foo = new int[toto.length - 1];
System.out.printf("%s%n", Arrays.toString(foo));
int k = 1;
while (k - 1 < foo.length) {
foo[k - 1] = toto[toto.length - k] + k;
k++;
}
System.out.printf("%s%n", Arrays.toString(foo));
}
}
On obtient l'affichage suivant :
[12, 3, 4, 7, -4] [I@7d4991ad [12] 0, [3] 12, [4] 15, [7] 19, [-4] 26, 22 [0, 0, 0, 0] [-3, 9, 7, 7]
Quel est l'affichage produit par le programme suivant :
import java.util.Arrays;
public class Exo31 {
public static void main(String[] args) {
int[] a = { 1, 2, 3 };
int[] b = a;
int[] c = new int[a.length];
for (int i = 0; i < a.length; i++) {
c[i] = a[i] + 1;
b[i] = a[i] - 1;
}
System.out.printf("%s%n", Arrays.toString(a));
System.out.printf("%s%n", Arrays.toString(b));
System.out.printf("%s%n", Arrays.toString(c));
}
}
On obtient l'affichage suivant :
[0, 1, 2] [0, 1, 2] [2, 3, 4]
Écrire un programme complet qui réalise les opérations suivantes :
u_1 = 0.0 u_2 = 1.0 u_3 = 2.0
La suite \((u_j)_{j\geq 1}\) est donnée par :
\begin{align*} u_1&=0\\ u_{2m}&=m+u_{2m-1}\times y&\text{pour tout }m\geq 1\\ u_{2m+1}&=u_{2m}-u_{2m-1}+y&\text{pour tout }m\geq 1 \end{align*}Une solution possible sans tableau est la suivante :
import java.util.Scanner;
public class ExoP11 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int k = 0;
while (k <= 0) {
System.out.print("Donnez une valeur entière pour k >0 : ");
k = scan.nextInt();
}
System.out.print("Donnez une valeur réelle pour y : ");
double y = scan.nextDouble();
double uminus2 = 0;
double uminus1 = 0;
double u = 0;
System.out.printf("u_1 = %f%n", u);
for (int j = 2; j <= k; j++) {
if (j % 2 == 0) {
u = j / 2 + y * uminus1;
} else {
u = uminus1 - uminus2 + y;
}
uminus2 = uminus1;
uminus1 = u;
System.out.printf("u_%d = %f%n", j, u);
}
scan.close();
}
}
Il est bien sûr possible d'utiliser un tableau pour stocker les valeurs de \(u\), mais il faut être attentif au décalage de numérotation.
Écrire un programme qui réalise les opérations suivantes :
tab
de longueur 3 ;tab2
de longueur \(3k\) contenant \(k\) copies du tableau
tab
;tab2
la valeur \(i\) (donc 0
à la première, 1 à la deuxième, etc.) ;tab2
résultat sous la forme indiquée ci-dessous.Si l'utilisateur entre les chiffres 1, 2, 3, dans cet ordre, puis donne \(k=3\), on doit donc obtenir un tableau à 9 cases, contenant d'abord 1, 2, 3, 1, 2, 3, 1, 2, et 3, après l'étape 4, puis 1, 3, 5, 4, 6, 8, 7, 9, et 11 après l'étape 5. On l'affichera sous la forme
{_1_3_5_} {_4_6_8_} {_7_9_11_}
Attention, l'affichage doit se faire impérativement à partir du tableau final, pas en calculant les valeurs à afficher pendant l'affichage lui-même.
Une solution possible est donnée par le programme suivant :
import java.util.Scanner;
public class ExoP21 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int[] tab = new int[3];
for (int i = 0; i < tab.length; i++) {
int val = -1;
while (val < 0 || val > 9) {
System.out.printf("Donnez un chiffre pour tab[%d] : ", i);
val = scan.nextInt();
}
tab[i] = val;
}
System.out.print("Donnez un entier k : ");
int k = scan.nextInt();
int[] tab2 = new int[k * tab.length];
for (int i = 0; i < tab2.length; i++) {
tab2[i] = tab[i % tab.length];
}
for (int i = 0; i < tab2.length; i++) {
tab2[i] += i;
}
int pos = 0;
for (int i = 0; i < k; i++) {
System.out.print("{_");
for(int j=0;j<tab.length;j++) {
System.out.printf("%d_",tab2[pos]);
pos++;
}
System.out.println("}");
}
scan.close();
}
}