Problème d'affichage

Résolu/Fermé
ArmandAs_1998 Messages postés 16 Date d'inscription jeudi 21 janvier 2021 Statut Membre Dernière intervention 20 février 2022 - 24 janv. 2021 à 20:58
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 - 24 janv. 2021 à 21:16
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

KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
24 janv. 2021 à 21:16
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...)
0