|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre du Club
![]() |
bonjour, mon exercice est :
Comportement attendu Attention, il importe que votre programme respecte strictement les formats et comportements présentés ici. Le programme accepte un nombre décimal suivi d'un retour chariot et affiche la représentation normalisée suivie d'un retour chariot. Si l'entrée ne contient pas un nombre décimal ou contient un nombre décimal mal formé, le programme doit afficher une ligne terminant par 'Erreur' suivi d'un retour chariot. Exemples entrée: 0 sortie: 0 entrée: 5 sortie: 0.5e1 entrée: 100 sortie: 0.1e3 entrée: 0.55 sortie: 0.55 entrée: 0.007 sortie: 0.7e-2 entrée: -10.00 sortie: -0.1e2 entrée: -01020.03040 sortie: -0.10200304e4 Fin exercice NB/ La forme normalisée à utiliser dans ce TP est "0.XXXeYYY" qui peut être précédée du signe moins (-) où : XXX (appelée mantisse) est une séquence de chiffres de 0 à 9 qui ne doit ni commencer ni se terminer par un 0. YYY (appelé exposant) est une séquence de chiffres de 0 à 9 qui ne doit pas commencer par un 0 et qui peut être précédée du signe moins (-). Si le nombre à représenter vaut 0, la forme normalisée est juste "0" (sans signe ni exposant). Si l'exposant vaut zéro, la partie exposant (incluant le 'e') est omise (la forme normalisée est juste "0.XXX" éventuellement précédée du signe moins). Le code que j'ai fait jusqu'à présent est (juste la lecture de l'entrée clavier et tester si un nombre ou pas, reste comment traduire ce nombre souos la forme demandée?): Code :
|
||
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Développeur informatique Inscription : avril 2010 Messages : 388 ![]() |
Bonjour,
Tu veux que l'on fasse l'exercice à ta place, ou bien tu as une question précise, concernant un problème précis ? Mako. |
|
|
00
|
|
|
#3 |
|
Expert Confirmé Sénior
![]() Inscription : septembre 2004 Messages : 5 099 ![]() |
Beuh, dans mon pays, la notation normalisée c'est X.XXXeYYYY
Je ne crois pas qu'on puisse avoir la forme demandée avec des DecimalFormat ou un Formatter. D'ailleurs, vu qu'on ne sait pas à quelle précision afficher la sortie, je ne pense pas non plus qu'on puisse l'afficher après avoir parsé l'entrée sous forme de float ou double. Exemple, le double obtenu en parsant 0.55 vaut en fait 0.5500000000000000444 et des poussières. Tant qu'on ne va pas à cette précision ça va, mais comment décide-t-on à quelle précision on va ? Personnellement je laisserais tomber la notion de flottant, je parserais les nombres sous forme de BigDecimal et me contenterais d'afficher : - signe moins si nécessaire, - 0, - les chiffres de la mantisse, - e et l'exposant correct si différent de zéro. |
|
|
00
|
|
|
#4 |
|
Membre du Club
![]() |
ok merci j'ai trouvé la solution.
|
|
|
00
|
|
|
#5 |
|
Expert Confirmé Sénior
![]() Inscription : septembre 2004 Messages : 5 099 ![]() |
Hum. C'est une question ouverte qui pique la curiosité. Tu ne veux pas partager ? Ou au moins parler de ta solution ?
|
|
|
00
|
|
|
#6 |
|
Membre du Club
![]() |
Pardon, j'ai pas vu ta question.
Bon la solution était simple, je parcours la chaine et je décale le séparateur à gauche et je compte jusqu'à j'arrive à la fin du nombre (qui est string), je concatène toute la chaîne à "0." et enfin je concatène "e" et le nombre de chiffres parcouru à gauche. Merci quand même pour votre intention |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com