Précédent   Forum des professionnels en informatique > Systèmes > Autres systèmes > Unix
Unix Forum d'entraide sur les systèmes Unix et dérivés (*BSD, AIX, etc.). Avant de poster ->F.A.Q BSD F.A.Q. Aix
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/12/2010, 14h25   #1
Invité de passage
 
Inscription : décembre 2010
Messages : 6
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 6
Points : 0
Points : 0
Par défaut conversion des chiffres en lettres

bonjour,

s'il vous plait si quelqu'un peut m'aider dans un script shell qui permet de convertir un chiffre passé en paramètre compris entre 0 à 1000 en lettres!!! merciii d'avance
sinda1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2010, 15h08   #2
Membre Expert
 
Avatar de jlliagre
 
Inscription : juin 2007
Messages : 964
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2007
Messages : 964
Points : 1 362
Points : 1 362
C'est à dire ? Un chiffre est un caractère comme les autres.
__________________
ɹǝsn *sıɹɐlos*
jlliagre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2010, 19h34   #3
Invité de passage
 
Inscription : décembre 2010
Messages : 6
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 6
Points : 0
Points : 0
cad un nombre de type entier compris entre 0 et 1000.merci d'avance
sinda1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2010, 20h05   #4
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 534
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2006
Messages : 3 534
Points : 7 741
Points : 7 741
la solution que tu cherches est une encapsulation de syntaxes

Code :
1
2
3
4
5
6
7
switch $VAR
case
valeur) action
;;
valeur2) action
;;
esac
et ainsi de suite

1 = un
2 = deux

la seule difficulté c'est de gérer les dizaines, centaines et milliers mais la solution est d'encapsuler dans l'ordre
4 caractères de long = millier + centaines + dizaine + unité
3 = centaine + dizaine + unité
2 = dizaine + unité
1 = unités

n'oublies pas de gérer les les pluriels !!!! spéciaux sur les nombres
frp31 est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 21/12/2010, 20h26   #5
Invité de passage
 
Inscription : décembre 2010
Messages : 6
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 6
Points : 0
Points : 0
merciiiiii
sinda1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2010, 20h38   #6
Invité de passage
 
Inscription : décembre 2010
Messages : 3
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 3
Points : 1
Points : 1
voici un petit exemple pour expliquer ce qui se passe au juste :
Code :
1
2
3
4
5
6
a=123  #entier
b=$a" 4"  #affiche 123 4 donc "b" est désormais une chaîne
c=${b/ /}  #affiche 1234 et "c" est une chaine

#pour éliminer le "4" tu n'a qu'à faire :
d=${c/4/}  #et voilà d="123" une chaine
tu devra donc utiliser des variables auxilières dans ton script, par exemple :
Code :
aux=${numéro de l'argument} #puis suivre la méthode dessus (pas nécessairement à la lettre) :D
enfin, pas de quoi sinda wrabi m3ak dans ton script
tboy86 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2010, 21h21   #7
Invité de passage
 
Inscription : décembre 2010
Messages : 6
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 6
Points : 0
Points : 0
en fait,j'ai mal citer le probleme apparement

le script shell que je veux,il faut que je lui donne un entier entre 0 et 1000: par exple je lui donne 232 et il dois me rendre "deux cent trente deux" voilà

mercii pour ceux qui m'ont repondu et j'epere que j'aurai une reponse qui va m'aider car j'en arrive pas à le faire sachant que je suis encore debutante e programmation shell..
sinda1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 02h18   #8
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 534
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2006
Messages : 3 534
Points : 7 741
Points : 7 741
la réponse je l'ai donné après à toi de faire le script maintenant y'a plus rien à faire à part le rédiger.

manifestement tu n'a pas compris alors je reprend
tu découpe la chaine de chiffres 232 par exemple en 2,3,2
tu genre le dernier (unité)
Code :
1
2
3
2)
lastchar="deux"
;;
puis le chiffre des dizaine
Code :
1
2
3
4
3)
dizaine="trente"
;;
et ainsi de suite de droite à gauche d'où l'imbrication des structures switch

puis les centaines
Code :
1
2
3
4
2)
centaine="deux cent"
;;
après tu gère l'affichage du résultat
Code :
resultat=$millier" "$centaine" "$dizaine" "$unite
tu affiche avec un echo $resultat ça donne bien "deux cent trente deux"

là je peux pas aller plus loin sans le faire completement à ta place...
frp31 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 22/12/2010, 11h03   #9
Responsable Modération
 
Avatar de ok.Idriss
 
Homme Idriss Neumann
Consultant en SSII et étudiant au CNAM Paris (ingénieur SI)
Inscription : février 2009
Messages : 1 971
Détails du profil
Informations personnelles :
Nom : Homme Idriss Neumann
Âge : 21
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Consultant en SSII et étudiant au CNAM Paris (ingénieur SI)

Informations forums :
Inscription : février 2009
Messages : 1 971
Points : 5 956
Points : 5 956
Bonjour.

Apparemment, ce genre d'exercice est à la mode depuis quelques temps. Plusieurs sujets ont déjà été postés (et pourront peut être t'inspirer, même si ce n'est pas le même langage) :

http://www.developpez.net/forums/d10.../script-shell/ (forum Linux)
http://www.developpez.net/forums/d85...sformer-cpp-c/ (forum C)
http://www.developpez.net/forums/d85...nombre-11-a19/ (forum C)

Après, il serait bien de présenter un début de solution même si ça ne fonctionne pas.

Cordialement,
Idriss
ok.Idriss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 17h28   #10
Membre Expert
 
Homme
Ingénieur développement logiciels
Inscription : octobre 2008
Messages : 1 375
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : octobre 2008
Messages : 1 375
Points : 2 034
Points : 2 034
Bon courage pour gérer les "s" et les tirets.
matafan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 21h28   #11
Invité de passage
 
Inscription : décembre 2010
Messages : 6
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 6
Points : 0
Points : 0
bonjour,

mercii infiniment, j'ai réussi hmdlh grâce à vous de rédiger le script et ça s'exécute sans aucun problème, vraiment mercii pour tous les gens qui m'ont répondu...

cordialement
sinda1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h47.


 
 
 
 
Partenaires

Hébergement Web