cosa devo considerare, se devo fare un programma per convertire in numeri romani un numero in ingresso compreso tra 1 e 3000?
cosa devo considerare, se devo fare un programma per convertire in numeri romani un numero in ingresso compreso tra 1 e 3000?
prova a pensare a come lo faresti a mano, poi scrivi del codice e se non ti funziona postalo per correzioni![]()
è proprio quello il problema: non so come scriverlo come pseudoalgoritmo, e quindi neppure l'algoritmo...
Anche se la cosa mi sembra assurda, però è l'unica soluzione plausibile alla quale sono giunto.
Ti consiglio di fare uno switch con case da 1 a 3000![]()
![]()
![]()
Originariamente inviato da groucho92
Anche se la cosa mi sembra assurda, però è l'unica soluzione plausibile alla quale sono giunto.
Ti consiglio di fare uno switch con case da 1 a 3000![]()
![]()
![]()
![]()
Amaro C++, il gusto pieno dell'undefined behavior.
Qualche settimana ho fatto pure io un esercizio simile,Originariamente inviato da groucho92
Anche se la cosa mi sembra assurda, però è l'unica soluzione plausibile alla quale sono giunto.
Ti consiglio di fare uno switch con case da 1 a 3000![]()
![]()
![]()
qualche case è necessario ma da qui a scriverne 3000...
Utilizza piuttosto dei cicli, ad esempio per il numero "III" devi stampare 3 volte il carattere 'I'.
non puo usare i cicli, almeno che non scomponga i numeri in somme, come appunto il sistema di numeri romano... quindi per esempio dividendo per cento trovi le centinaia e con uno switch le stampi a dovere, poi con le decine e infine con le unità...
beh ho dimenticato migliaia ma si capisce xD
secondo me è l'unica soluzione accettabile ù-ù
comunque ciao![]()
Ironizzavo XD!Originariamente inviato da MItaly
![]()
0k, ma il problema si pone quando si passa ai numeri tipo 48 e 52: come si fa a dire a un computer di aggiungere "II" prima del numero per fare la differenza, altrimenti per l'addizione?Originariamente inviato da Scara95
non puo usare i cicli, almeno che non scomponga i numeri in somme, come appunto il sistema di numeri romano... quindi per esempio dividendo per cento trovi le centinaia e con uno switch le stampi a dovere, poi con le decine e infine con le unità...
beh ho dimenticato migliaia ma si capisce xD
secondo me è l'unica soluzione accettabile ù-ù
comunque ciao![]()
come dire <<scrivi IIL e LII>>?
Quindi utilizzi tre switch diversi, uno per le decine, uno per le centinaia e uno per le migliaia.Originariamente inviato da Scara95
non puo usare i cicli, almeno che non scomponga i numeri in somme, come appunto il sistema di numeri romano... quindi per esempio dividendo per cento trovi le centinaia e con uno switch le stampi a dovere, poi con le decine e infine con le unità...
beh ho dimenticato migliaia ma si capisce xD
secondo me è l'unica soluzione accettabile ù-ù
comunque ciao![]()
Quello che ho fatto io è qualcosa di simile, ho sottratto piuttosto che dividere e ho utilizzato un unico costrutto switch.
Prendendo ad esempio il numero 48 come chiesto da spode...
finché numero > 0
se il numero è maggiore di 10
stampo 10
sottraggo 10 al numero
questo per stampare quattro volte il carattere 'X', dopodiché risolvo il numero 8 e cosi via.
Questa è solo la mia soluzione, sicuramente ne esisto altre e di migliori.