Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Aiuto!!!!
Forum - C/C++ - Aiuto!!!!

Avatar
Mat87 (Normal User)
Newbie


Messaggi: 4
Iscritto: 22/09/2009

Segnala al moderatore
Postato alle 16:41
Lunedì, 28/09/2009
ciao a tutti!! dovrei fare una funzione che traduce un numero romano in lettera, es:
II ->  secondo     non so da che parte cominciare, qualcuno sa darmi una mano???
Qualunque consiglio è ben accetto. Grazie!!

PM Quote
Avatar
LittleHacker (Member)
Guru


Messaggi: 1033
Iscritto: 28/04/2009

Segnala al moderatore
Postato alle 16:58
Lunedì, 28/09/2009
Testo quotato

Postato originariamente da Mat87:

ciao a tutti!! dovrei fare una funzione che traduce un numero romano in lettera, es:
II ->  secondo     non so da che parte cominciare, qualcuno sa darmi una mano???
Qualunque consiglio è ben accetto. Grazie!!



Beh potresti fare:
Codice sorgente - presumibilmente C/C++

  1. void converti(char numero_romano, char numero_arabo)
  2. {
  3. if(numero_romano == "I")
  4. {
  5. numero_arabo = "1";
  6. }
  7. return numero_arabo;
  8. }


e così via...però mi sembra un pò complicata la faccenda perchè ad ogni numero romano poi devi corrispondegli un numero...aspetta che cerco un pò...:k:

Ultima modifica effettuata da LittleHacker il 28/09/2009 alle 17:04
PM Quote
Avatar
LittleHacker (Member)
Guru


Messaggi: 1033
Iscritto: 28/04/2009

Segnala al moderatore
Postato alle 17:03
Lunedì, 28/09/2009
Ecco qui è fatto con visual c++:
Codice sorgente - presumibilmente C#

  1. class NumeriRomani {
  2.  
  3. /*
  4. * Questa funzione converte un numero decimale in un numero romano
  5. *
  6. * I = 1
  7. * II = 2
  8. * III = 3
  9. * IV = 4
  10. * V = 5
  11. * X = 10
  12. * L = 50
  13. * C = 100
  14. * D = 500
  15. * M = 1000
  16. *
  17. * */
  18. public static String converti(int numeroDaConvertire) {
  19. int numeroM = 0;
  20. int numeroD = 0;
  21. int numeroC = 0;
  22. int numeroL = 0;
  23. int numeroX = 0;
  24. int numeroV = 0;
  25. int numeroI = 0;
  26. int resto;
  27. int i;
  28. String numeroRomano = "";
  29.  
  30. //quante M
  31. numeroM = numeroDaConvertire/1000;
  32. resto = numeroDaConvertire%1000;
  33. //quante D
  34. numeroD = resto/500;
  35. resto = resto%500;
  36. //quante C
  37. numeroC = resto/100;
  38. resto = resto%100;
  39. //quante L
  40. numeroL = resto/50;
  41. resto = resto%50;
  42. //quante X
  43. numeroX = resto/10;
  44. resto = resto%10;
  45. //quante V
  46. numeroV = resto/5;
  47. resto = resto%5;
  48. //quante I
  49. numeroI = resto;
  50.  
  51. for(i=0; i<numeroM; i++) {
  52. numeroRomano = numeroRomano+"M";
  53. }
  54.  
  55. //ci può stare al massimo una D
  56. if (numeroD > 0) {
  57. numeroRomano = numeroRomano+"D";
  58. }
  59.  
  60. //centinaia
  61. if (numeroC>3 && numeroC != 0) {
  62. numeroRomano = numeroRomano+"CD"; //400
  63. } else
  64. for(i=0;i<numeroC; i++)
  65. numeroRomano = numeroRomano+"C";
  66.  
  67. //ci può stare al massimo una L
  68. if (numeroL > 0) {
  69. numeroRomano = numeroRomano+"L";
  70. }
  71.  
  72. //decine
  73. if (numeroX>3 && numeroX != 0) {
  74. numeroRomano = numeroRomano+"XL"; //40
  75. } else
  76. for(i=0;i<numeroX; i++)
  77. numeroRomano = numeroRomano+"X";
  78.  
  79. //ci può stare al massimo una V
  80. if (numeroV > 0) {
  81. numeroRomano = numeroRomano+"V";
  82. }
  83.  
  84. //unità
  85. if (numeroI>3 && numeroI != 0) {
  86. numeroRomano = numeroRomano+"IV"; //4
  87. } else
  88. for(i=0;i<numeroI; i++)
  89. numeroRomano = numeroRomano+"I";
  90.  
  91. return numeroRomano;
  92. }
  93.  
  94. public static void main(String[] args) {
  95. String numeroRomano = converti(1444);
  96.  
  97. System.out.println(numeroRomano);
  98. }
  99. }


:k:

Molto più facile questo:
Codice sorgente - presumibilmente C#

  1. string numeri_romani(unsigned int x)
  2. {
  3. struct cifra {
  4. unsigned int num;
  5. string str;
  6. };
  7. cifra vett[] = {{1000, "M"}, {900, "CM"}, {500, "D"}, {400, "CD"},
  8. {100, "C"}, {90, "XC"}, {50, "L"}, {40, "XL"},
  9. {10, "X"}, {9, "IX"}, {5, "V"}, {4, "IV"}, {1, "I"}};
  10. if(x == 0)
  11. return "0";
  12.  
  13. string str = "";
  14. int i = 0;
  15. while(x > 0)
  16. {
  17. if((x / vett[i].num) == 0)
  18. ++i;
  19. else
  20. {
  21. str += vett[i].str;
  22. x -= vett[i].num;
  23. }
  24. }
  25. return str;
  26. }


Ultima modifica effettuata da LittleHacker il 28/09/2009 alle 17:06
PM Quote
Avatar
Mat87 (Normal User)
Newbie


Messaggi: 4
Iscritto: 22/09/2009

Segnala al moderatore
Postato alle 17:38
Lunedì, 28/09/2009
Ciao,scusate, forse non mi sono spiegato bene.... io dovrei convertire un NUMERO ROMANO(V)  in LETTERE(Quinto). comunque utilizzo codice c++.
Grazie mille per le risposte comunque. Se mi sapete dire di più mi sareste di grande aiuto
:)

PM Quote
Avatar
LittleHacker (Member)
Guru


Messaggi: 1033
Iscritto: 28/04/2009

Segnala al moderatore
Postato alle 17:59
Lunedì, 28/09/2009
Da cifre romane a parole si che si può...ho visto un topic in questo sito e in questa sezione utilizza la funzione cerca del sito...:k:

PM Quote