Probleme java
Fermé
adriano
-
22 sept. 2010 à 04:39
varfendell Messages postés 3259 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 8 février 2020 - 23 sept. 2010 à 09:20
varfendell Messages postés 3259 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 8 février 2020 - 23 sept. 2010 à 09:20
A voir également:
- Probleme java
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
- Java décompiler - Télécharger - Langages
2 réponses
varfendell
Messages postés
3259
Date d'inscription
jeudi 27 décembre 2007
Statut
Membre
Dernière intervention
8 février 2020
707
22 sept. 2010 à 10:25
22 sept. 2010 à 10:25
Bonjour,
Je veut bien te donner un coup de main, mais pas le faire a ta place:
--> tu code, et quand tu as un problème tu demande un coup de main.
Pour commencer, je vais te fournir un exemple d'algorithme a suivre pour ton problème que tu devra implémenter en java (puisque apparemment tu veut coder en java)
Je veut bien te donner un coup de main, mais pas le faire a ta place:
--> tu code, et quand tu as un problème tu demande un coup de main.
Pour commencer, je vais te fournir un exemple d'algorithme a suivre pour ton problème que tu devra implémenter en java (puisque apparemment tu veut coder en java)
int min; int max int nombre; boolean bool nombre = saisir(); si (nombre < min || nombre > 4999) { afficher("nombre hors limite, choisir entre 1 et 4999=) }else si (nombre n'est pas un int) { afficher("entrée invalide, choisir un nombre") }else { //ici l'algorithme /* c''est simple, il va consister a retirer a chaque fois la valeur de la lettre tant que le resultat reste positif, et passez au suivant. Par exemple 1999 = MCMXCIX ==> 1999 - 1000 = 999 > 0 donc on affiche deja M puis 999 - 1000 = -1 < 0, donc on passe a CM 999 - 900 = 99 > 0 on a donc MCM puis 99 - 999 = -900 < 0 etc... bool = true while (bool) { nombre = nombre - 1000; if (nombre < 0) { nombre = nombre + 1000; bool = false }else { affiche("M") } } bool = true while (bool) { nombre = nombre - 900; if (nombre < 0) { nombre = nombre + 900; bool = false }else { affiche("CM") } } bool = true while (bool) { nombre = nombre - 500; if (nombre < 0) { nombre = nombre + 500; bool = false }else { affiche("D") } } bool = true while (bool) { nombre = nombre - 400; if (nombre < 0) { nombre = nombre + 400; bool = false }else { affiche("CD") } } bool = true while (bool) { nombre = nombre - 100; if (nombre < 0) { nombre = nombre + 100; bool = false }else { affiche("C") } } bool = true while (bool) { nombre = nombre - 90; if (nombre < 0) { nombre = nombre + 90; bool = false }else { affiche("XC") } } bool = true while (bool) { nombre = nombre - 50; if (nombre < 0) { nombre = nombre + 50; bool = false }else { affiche("L") } } bool = true while (bool) { nombre = nombre - 40; if (nombre < 0) { nombre = nombre + 40; bool = false }else { affiche("XL") } } bool = true while (bool) { nombre = nombre - 10; if (nombre < 0) { nombre = nombre + 10; bool = false }else { affiche("X") } } bool = true while (bool) { nombre = nombre - 9; if (nombre < 0) { nombre = nombre + 9; bool = false }else { affiche("M") } } bool = true while (bool) { nombre = nombre - 5; if (nombre < 0) { nombre = nombre + 5; bool = false }else { affiche("IX") } } bool = true while (bool) { nombre = nombre - 4; if (nombre < 0) { nombre = nombre + 4; bool = false }else { affiche("IV") } } bool = true while (bool) { nombre = nombre - 1; if (nombre < 0) { nombre = nombre + 1; bool = false }else { affiche("I") } } }
MrSlave
Messages postés
2587
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
26 août 2011
146
22 sept. 2010 à 11:41
22 sept. 2010 à 11:41
Moi j'aurai plus décomposé le nombre.
Par exemple pour 3541, on prend le premier chiffre, on regarde sa correspondance dans un tableau par exemple, puis on prend le 2eme chiffre, etc ...
Par exemple pour 3541, on prend le premier chiffre, on regarde sa correspondance dans un tableau par exemple, puis on prend le 2eme chiffre, etc ...
varfendell
Messages postés
3259
Date d'inscription
jeudi 27 décembre 2007
Statut
Membre
Dernière intervention
8 février 2020
707
22 sept. 2010 à 11:47
22 sept. 2010 à 11:47
tu aurais eu des problème mon pti slave, par exemple pour 8, tu aurais fait comment? et 3? sachant que sa augmenterait la complexité de l'algo vu que tu devra refaire le même procéder jusqu'à 4 fois (mille/cent/dix/unité), et si il y a pas de millier, ni de centaine, ni de dizaine?
bref, beaucoup plus de paramètre à prendre en compte
bref, beaucoup plus de paramètre à prendre en compte
merci beaucoup, sa ma beaucoup aider,
mais j ai une question, par rapport au code que tu as donnés,
pk par exemple
bool = true
while (bool)
{
nombre = nombre - 1000;
if (nombre < 0)
{
nombre = nombre + 1000;
bool = false
}else
{
affiche("M")
}
}
on ecrit nombre = nombre + 1000, bool = false, je ne comprend pas, parce que si je l enleve sa ne fonctionne plus de la meme facon, mais je comprend pas parce que nombre ne va jamais tomber negatif si je met une condition avant decrire tous le code.
while (nombreEntre < 1 || nombreEntre > 4999){
System.out.println("Nombre entrer hors limite");
nombreEntre = Clavier.lireInt();
}
merci beaucoup ;)
mais j ai une question, par rapport au code que tu as donnés,
pk par exemple
bool = true
while (bool)
{
nombre = nombre - 1000;
if (nombre < 0)
{
nombre = nombre + 1000;
bool = false
}else
{
affiche("M")
}
}
on ecrit nombre = nombre + 1000, bool = false, je ne comprend pas, parce que si je l enleve sa ne fonctionne plus de la meme facon, mais je comprend pas parce que nombre ne va jamais tomber negatif si je met une condition avant decrire tous le code.
while (nombreEntre < 1 || nombreEntre > 4999){
System.out.println("Nombre entrer hors limite");
nombreEntre = Clavier.lireInt();
}
merci beaucoup ;)
varfendell
Messages postés
3259
Date d'inscription
jeudi 27 décembre 2007
Statut
Membre
Dernière intervention
8 février 2020
707
23 sept. 2010 à 09:20
23 sept. 2010 à 09:20
en faite, imagine que tu ai 900. le retour doit etre CM. donc la première boucle doit rien donner, et la seconde doit le mettre a zero:
si on suis la maniere de faire de mon code on aura:
nombre = 900 - 1000 = -100
=> nombre < 0 donc
nombre = -100 + 1000 = 900 (on le remet comme avant)
bool = false (on sort de la boucle while pour afficher le M)
(on rentre dans celle pour afficher MC)
nombre = 900 - 900 = 0
nombre n'est pas < 0 mais = 0, donc on entre dans le else)
afficher (CM)
nombre = 0 - 900 = -900
nombre < 0 donc on sort de la boucle afficher CM:
nombre = -900 + 900 = 0
bool = false
et toute les autre boucle vont etre sauter car nombre = 0
et a la fin tu n'aura plus que CM d'affiché
nombre n'est pas fixe, ce n'est pas parce que tu met une condition au début de ta boucle que dans toute la boucle cette variable va satisfaire cette condition. La variable ne va satisfaire la condition de la boucle que en entrant.
si on suis la maniere de faire de mon code on aura:
nombre = 900 - 1000 = -100
=> nombre < 0 donc
nombre = -100 + 1000 = 900 (on le remet comme avant)
bool = false (on sort de la boucle while pour afficher le M)
(on rentre dans celle pour afficher MC)
nombre = 900 - 900 = 0
nombre n'est pas < 0 mais = 0, donc on entre dans le else)
afficher (CM)
nombre = 0 - 900 = -900
nombre < 0 donc on sort de la boucle afficher CM:
nombre = -900 + 900 = 0
bool = false
et toute les autre boucle vont etre sauter car nombre = 0
et a la fin tu n'aura plus que CM d'affiché
nombre n'est pas fixe, ce n'est pas parce que tu met une condition au début de ta boucle que dans toute la boucle cette variable va satisfaire cette condition. La variable ne va satisfaire la condition de la boucle que en entrant.