Problème d'affichage [Résolu]

Signaler
Messages postés
16
Date d'inscription
jeudi 21 janvier 2021
Statut
Membre
Dernière intervention
23 février 2021
-
Messages postés
16337
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
16 mai 2021
-
Bonjour,

J'ai un problème d'affichage correct de mon résultat.
La consigne est: il s'agit d'un programme qui lit deux nombres entiers (le début et l'arrivée), ainsi qu'un pas et qui affiche les nombres allant du début à l’arrivée avec le pas donné.
Par exemple, avec les valeurs 10, 30 et 3, le programme devra afficher 10,13,16,19,22,25,28. Le programme devra aussi fonctionner si le décompte est à rebours : avec 25, 15 et 2, il devra afficher 25,23,21,19,17,15. Il est interdit d'utiliser une boucle for. Attention, l'incrément n’est jamais négatif, c'est au programme de déterminer si on augmente ou si on diminue les nombres. Exemple :
Entrez le nombre de départ : 30 Entrez le nombre d'arrivée : 5 Entrez l'incrément : 4
Résultat : 30,26,22,18,14,10,6

J'ai du mal à savoir comment on peut faire en sorte pour que ma dernière valeur n'aille pas pénétrer dans la deuxième boucle (par exemple si on met pour nombre de départ = 10, nombre d'arrivée = 30, et l'incrément = 3. --> ça me donne Résultat: 10,13,16,19,22,25,2831.) Merci.


import java.util.Scanner;
public class TD2_ex4 {

	public static void main(String[] args) {
		int dep, arr, pas;
		Scanner s = new Scanner(System.in);
		System.out.print("Entrer le nombre de départ: ");
		dep = s.nextInt();
		System.out.print("Entrer le nombre d'arrivée: ");
		arr = s.nextInt();
		System.out.print("Entrer l'incrément: ");
		pas = s.nextInt();
		System.out.print("Résultat: ");
		
		while (dep<=arr && !(pas<0)) {
			System.out.print(dep);
			dep+=pas;
			if (dep>arr) {
				break;
			}
			else {
				
			}
			System.out.print(",");
		}
	
		while (dep>=arr && !(pas<0)) {
			System.out.print(dep);
			dep-=pas;
			if (dep<arr) {
				break;
			}
			else {
				System.out.print(",");
			}
		}
		System.out.print(".");
	}
}

1 réponse

Messages postés
16337
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
16 mai 2021
2 829
Bonjour,

Tu devrais te concentrer sur une solution avec une seule boucle, pas deux.

Pour y arriver il faudra notamment que tu ne modifies pas les valeurs saisies au clavier, mais que tu fasses tes calculs à l'aide de variables dédiées au calcul.

Remarque :
!(pas<0)
se simplifie en
pas>=0
(mais ça ne sert à rien dans ton programme...)