Conversion d'un nombre en chaine de caractère
Fermé
tenohthree
Messages postés
50
Date d'inscription
dimanche 1 novembre 2009
Statut
Membre
Dernière intervention
1 janvier 2010
-
1 nov. 2009 à 17:00
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 - 6 nov. 2009 à 16:12
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 - 6 nov. 2009 à 16:12
A voir également:
- Convertir chaine de caractere en entier algorithme
- Caractère ascii - Guide
- Caractere speciaux - Guide
- Caractère spéciaux - Guide
- Convertir youtube en mp3 avec audacity - Guide
- Chaine tnt gratuite sur mobile - Guide
4 réponses
Dynamix
Messages postés
202
Date d'inscription
dimanche 22 mars 2009
Statut
Membre
Dernière intervention
30 avril 2011
76
1 nov. 2009 à 17:14
1 nov. 2009 à 17:14
C'est un peu lourd mais tu pourrais par exemple balayer ta chaîne de caractères (à l'aide d'un pointeur) et par l'intermédiaire d'un switch faire un truc du genre "si le caractère = '5' alors le chiffre = 5".
Pacorabanix
Messages postés
3248
Date d'inscription
jeudi 23 août 2007
Statut
Membre
Dernière intervention
19 mai 2013
661
1 nov. 2009 à 17:20
1 nov. 2009 à 17:20
le code en lui-même sera assez gros (comme ça à vue de pif au moins une bonne centaine de lignes ou plus), mais la démarche est relativement simple.
En fait tu cherches à comprendre l'algorithme qui lirait une chaine.
Mais le problème est que vu la langue française il va y avoir plein de cas et de sous-cas.
D'abord, comme fais-tu toi même pour transcrire un nombre ecrit en français en un nombre écrit en chiffres ?
Je te proposes d'essayer toi même (avec une feuille de papier) de trouver des règles générales et l'ordre dans lequel tu dois faire les choses.
Essaye avec :
un
deux
trois
dix
treize
quatorze
quize
dix-sept
dix-huit
dix-neuf
vingt
vingt et un
vingt deux
vingt trois
trente cinq
quarante neuf
soixante
soixante-dix
soixante et onze
soixante treize
soixante dix huit
cent
cent un
cent treize
quatre cent cinquante huit
quatre cent quatre-vingt dix
Tu pourras voir qu'il faut que ton programme aprenne tout d'abord à "repérer" certains "mots ou groupes de mots" comme "quatre-vingt" ou "treize" ou "deux".
Ensuite il doit souvent ignorer des "espaces" ou des "et", ou les tirets "-" mais pas tout le temps (comme dans quatre-vingt")
Perso je ne suis pas en France mais dans un pays où on dit "septante" pour soixante-dix et "nonante" pour quatre-vingt-dix (et même "huitante" ou "octante" pour quatre-vingt) ce qui simplifie ENORMEMENT les choses ^^. Peut-être essaye déjà de faire un algorithme qui ne prend pas en compte cette histoire de "quatre-vingt" ou de "soixante-dix". Ce sera plus clair pour réfléchir.
En fait tu cherches à comprendre l'algorithme qui lirait une chaine.
Mais le problème est que vu la langue française il va y avoir plein de cas et de sous-cas.
D'abord, comme fais-tu toi même pour transcrire un nombre ecrit en français en un nombre écrit en chiffres ?
Je te proposes d'essayer toi même (avec une feuille de papier) de trouver des règles générales et l'ordre dans lequel tu dois faire les choses.
Essaye avec :
un
deux
trois
dix
treize
quatorze
quize
dix-sept
dix-huit
dix-neuf
vingt
vingt et un
vingt deux
vingt trois
trente cinq
quarante neuf
soixante
soixante-dix
soixante et onze
soixante treize
soixante dix huit
cent
cent un
cent treize
quatre cent cinquante huit
quatre cent quatre-vingt dix
Tu pourras voir qu'il faut que ton programme aprenne tout d'abord à "repérer" certains "mots ou groupes de mots" comme "quatre-vingt" ou "treize" ou "deux".
Ensuite il doit souvent ignorer des "espaces" ou des "et", ou les tirets "-" mais pas tout le temps (comme dans quatre-vingt")
Perso je ne suis pas en France mais dans un pays où on dit "septante" pour soixante-dix et "nonante" pour quatre-vingt-dix (et même "huitante" ou "octante" pour quatre-vingt) ce qui simplifie ENORMEMENT les choses ^^. Peut-être essaye déjà de faire un algorithme qui ne prend pas en compte cette histoire de "quatre-vingt" ou de "soixante-dix". Ce sera plus clair pour réfléchir.
tenohthree
Messages postés
50
Date d'inscription
dimanche 1 novembre 2009
Statut
Membre
Dernière intervention
1 janvier 2010
1 nov. 2009 à 17:01
1 nov. 2009 à 17:01
je vous informe que le programmation est en C
tenohthree
Messages postés
50
Date d'inscription
dimanche 1 novembre 2009
Statut
Membre
Dernière intervention
1 janvier 2010
3 nov. 2009 à 21:42
3 nov. 2009 à 21:42
on peut pas utiliser switch pour un chaine de caractère il n'accepte que 2 caractères au maximum
Pacorabanix
Messages postés
3248
Date d'inscription
jeudi 23 août 2007
Statut
Membre
Dernière intervention
19 mai 2013
661
3 nov. 2009 à 21:44
3 nov. 2009 à 21:44
ce n'est pas le problème. tu pourras utiliser des if...else imbriqués et/ou à la suite.
tenohthree
Messages postés
50
Date d'inscription
dimanche 1 novembre 2009
Statut
Membre
Dernière intervention
1 janvier 2010
>
Pacorabanix
Messages postés
3248
Date d'inscription
jeudi 23 août 2007
Statut
Membre
Dernière intervention
19 mai 2013
5 nov. 2009 à 17:03
5 nov. 2009 à 17:03
ça devient plus compliqué
Pacorabanix
Messages postés
3248
Date d'inscription
jeudi 23 août 2007
Statut
Membre
Dernière intervention
19 mai 2013
661
>
tenohthree
Messages postés
50
Date d'inscription
dimanche 1 novembre 2009
Statut
Membre
Dernière intervention
1 janvier 2010
6 nov. 2009 à 16:12
6 nov. 2009 à 16:12
en général, décortiquer une phrase (ou une expression) est relativement difficile.
Il est habituel de faire appel à la récursivité dans ce genre de cas :
tu lis la fin (ex: "treize"), tu additionne le résultat (qui est 13) avec ta fonction appliquée sur le reste de la chaine ("mille deux-cent" par exemple). Le deux-cent est évalué en 200, puis on appelle la fonction sur ce qu'il reste, "mille" qui est évalué en 1000.
Résultat : tu ne dois savoir évaluer que les petits mots de fin de phrase exactement, et le reste est repassé dans la machine.
Mais je ne sais pas si tu as vu la récursion ou pas.
Il est habituel de faire appel à la récursivité dans ce genre de cas :
tu lis la fin (ex: "treize"), tu additionne le résultat (qui est 13) avec ta fonction appliquée sur le reste de la chaine ("mille deux-cent" par exemple). Le deux-cent est évalué en 200, puis on appelle la fonction sur ce qu'il reste, "mille" qui est évalué en 1000.
Résultat : tu ne dois savoir évaluer que les petits mots de fin de phrase exactement, et le reste est repassé dans la machine.
Mais je ne sais pas si tu as vu la récursion ou pas.