Effacer les filtres
Effacer les filtres

*** Write a function called roman2 that takes a string input representing an integer between 1 and 399 inclusive using Roman numerals and returns the Arabic equivalent as a uint16. If the input is illegal, or its value is larger than 399, roman2 retu

5 vues (au cours des 30 derniers jours)
function num = roman(rom)
romans = { 'I' 'II' 'III' 'IV' 'V' 'VI' 'VII' 'VIII' 'IX' 'X' ...
'XI' 'XII' 'XIII' 'XIV' 'XV' 'XVI' 'XVII' 'XVIII' 'XIX' 'XX' 'XXX'...
'XL' 'L' 'LX' 'LXX' 'LXXX' 'XC' 'C' 'CX' 'CXX' 'CXX' 'CXL' 'CL' 'CLX' ...
'CLXX' 'CLXXX' 'CXC' 'CC' 'CCX' 'CCXX' 'CCXXX' 'CCXL' 'CCL' 'CCLX' ...
'CCLXX' 'CCLXXX' 'CCXC' 'CCC' 'CCCX' 'CCCXX' 'CCCXXX' 'CCCXL' 'CCCL' ...
'CCCLX' 'CCCLXX' 'CCCLXXX' 'CCCXC' 'CCCXCIX' 'CD' };
num = uint16(0);
for ii = 1:399
if strcmp(rom,romans{ii})
num = uint16(ii);
break
end
end
end
error
Feedback: Your function performed correctly for argument(s) 'I'
Feedback: Your function performed correctly for argument(s) 'V'
Feedback: Your function performed correctly for argument(s) 'X'
Feedback: Your function made an error for argument(s) 'C'
Your solution is _not_ correct.

Réponses (1)

Stephen23
Stephen23 le 15 Juin 2015
Modifié(e) : Stephen23 le 15 Juin 2015
Your algorithm could work, but it is not yet complete...
If you want to get the numeric value for any of the 399 required possible inputs, then your look-up cell array romans will have to have (atleast) 399 elements in it. Currently it has 59 elements in it, and the string 'C' is only in position 28... so when it (correctly!) matches 'C' it returns that value: 28. Where should 'C' be located to get the correct output?
While you could extend this cell array to contains all 399 elements, this would not be the easiest to program and is quite likely to be buggy: how would you fill in all the other strings? By hand?
Perhaps instead you should consider the meaning of the letters, and how they are arranged...

Catégories

En savoir plus sur Data Types dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by