Sto cercando di capire come convertire numeri romani in numeri interi. Questa è una parte del mio codice. Quando chiedo all'utente di inserire M mostra 1000, ma quando chiedo all'utente di inserire un numero romano come VM, non mi dà 995 ma 1005. Questo perché sto dicendo al mio programma di fare proprio questo.Sto cercando di capire come convertire numeri romani in numeri interi
Quello che sto cercando di capire è come posso guardare avanti e fargli sapere quando sta aggiungendo o sottraendo numeri romani.
Come iniziare a fare questo?
class Roman
{
public int inprogress = 0;
public Roman(string roman)
{
char temp = 'Z';
int length;
length = roman.Length;
for (int i = 0; i < length; i++)
{
temp = roman[i];
if (temp == 'M')
{
inprogress = inprogress + 1000;
}
if (temp == 'D')
{
inprogress = inprogress + 500;
}
if (temp == 'C')
{
inprogress = inprogress + 100;
}
if (temp == 'L')
{
inprogress = inprogress + 50;
}
if (temp == 'X')
{
inprogress = inprogress + 10;
}
if (temp == 'V')
{
inprogress = inprogress + 5;
}
if (temp == 'I')
{
inprogress = inprogress + 1;
}
}
}
}
il soggetto è "convertire interi in numeri romani", ma il codice sta mostrando "la conversione di numeri romani in numeri interi". Quale stai chiedendo veramente? (Sono contrari.) Per favore [modifica] la tua domanda e chiarisci che cosa stai chiedendo. –
Un piccolo consiglio: quando si programma una soluzione come questa, sarà più facile capire come risolvere il problema, POI codificare quella soluzione. Prendi un pezzo di carta e cerca di trovare un modo per calcolare correttamente i numeri romani per alcuni campioni (usando solo numeri e cose, non stai scrivendo il codice sulla carta!). Quindi, codifica questa soluzione. –
Puoi spiegare che cosa stai guardando 'guarda avanti' e potrei essere anliante per aiutarti? Ps. Stai facendo unsecurity se controlli, utilizzare switch/case o cambiare tutte le istruzioni if ma il primo a 'else' se '. –