CHIFFRES ROMAINS

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 - 13 mai 2005 à 13:35
theodu68 Messages postés 1 Date d'inscription mercredi 25 mai 2011 Statut Membre Dernière intervention 28 mai 2011 - 28 mai 2011 à 19:12
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/31354-chiffres-romains

theodu68 Messages postés 1 Date d'inscription mercredi 25 mai 2011 Statut Membre Dernière intervention 28 mai 2011
28 mai 2011 à 19:12
Je n'arrive pas à télécharger le zip. : (
detays Messages postés 4 Date d'inscription samedi 16 octobre 2004 Statut Membre Dernière intervention 27 juin 2005
27 juin 2005 à 21:07
Tu as oublié d'inclure string.h c'est pas grave mais c'est plus sympa sans Warnings.9/10
detays Messages postés 4 Date d'inscription samedi 16 octobre 2004 Statut Membre Dernière intervention 27 juin 2005
27 juin 2005 à 21:06
Tu as oublié d'inclure string.h c'est pas grave mais c'est plus sympa sans Warnings.9/10
detays Messages postés 4 Date d'inscription samedi 16 octobre 2004 Statut Membre Dernière intervention 27 juin 2005
27 juin 2005 à 21:05
Tu as oublié d'inclure string.h c'est pas grave mais c'est plus sympa sans Warnings.9/10
kenjimax Messages postés 82 Date d'inscription dimanche 3 août 2003 Statut Membre Dernière intervention 10 août 2007
18 mai 2005 à 22:00
Un petit tableau dynamique pour ne pas avoir de limitations de nombres...facile à mettre en place avec un petit :
int* donnees;
donnees = new int[nbr_de_chiffres];
cs_magma Messages postés 198 Date d'inscription vendredi 4 avril 2003 Statut Membre Dernière intervention 18 mars 2011
14 mai 2005 à 16:01
Regardez la mise à jour ...
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
14 mai 2005 à 13:29
J'ai dit qu'on vérifie au début que tous les caractères sont des chiffres
cs_krust Messages postés 140 Date d'inscription mercredi 3 juillet 2002 Statut Membre Dernière intervention 19 novembre 2006
14 mai 2005 à 11:37
Je ne pense pas que ce soit la meilleur solution, car il suffit que l'utilisateur fasse en erreure de saisie (autre que 1-9) pour que le programme plante.
Exemple : Si il tape ":", i sera égale à 10 et le pointeur pointera on ne sait où (En fait il pointera sur l'address indiqué dans le prochaine dword en mémoire).

Ceci dit, je ne fais que regarder la partie de code dans les commentaires, si les entrés sont traitées avant ça devrait fonctionner.
cs_krust Messages postés 140 Date d'inscription mercredi 3 juillet 2002 Statut Membre Dernière intervention 19 novembre 2006
14 mai 2005 à 11:37
Je ne pense pas que ce soit la meilleur solution, car il suffit que l'utilisateur fasse en erreure de saisie (autre que 1-9) pour que le programme plante.
Exemple : Si il tape ":", i sera égale à 10 et le pointeur pointera on ne sait où (En fait il pointera sur l'address indiqué dans le prochaine dword en mémoire).

Ceci dit, je ne fais que regarder la partie de code dans les commentaires, si les entrés sont traitées avant ça devrait fonctionner.
cs_Urgo Messages postés 780 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 16 avril 2009 1
13 mai 2005 à 20:50
char* s[] = {"", "I", "II", ..., "IX"}; // avec le dernier guillemet que le monde aura remarqué :)
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
13 mai 2005 à 13:45
Plutot:

char* s[] = {"", "I", "II", ..., "IX};
strcat(rom, s[dec[i] - '0']);
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
13 mai 2005 à 13:35
Pour des raisons de lisibilité, tu devrais remplacer tes if...else if...else if... par un switch
Pour avoir un code plus rapide, tu peux même utiliser un tableau:

if(dec[i] == '0') strcat(rom, "");
else if(dec[i] == '1') strcat(rom, "I");
else if(dec[i] == '2') strcat(rom, "II");
else if(dec[i] == '3') strcat(rom, "III");
else if(dec[i] == '4') strcat(rom, "IV");
else if(dec[i] == '5') strcat(rom, "V");
else if(dec[i] == '6') strcat(rom, "VI");
else if(dec[i] == '7') strcat(rom, "VII");
else if(dec[i] == '8') strcat(rom, "VIII");
else if(dec[i] == '9') strcat(rom, "IX");

Tu peux remplacer ca par

char* s[] = {"I", "II", ..., "IX};
strcat(rom, s[i - '0']);

Au début tu vérifie que tous les caractères sont bien des chiffres puisque tu ne peux plus le faire la