I am trying to create a function that converts double digits between 21 and 39 into its english phrase.
I think I have the beginning of the code that sets the integer parameter but I do not know what to do next. This is what I have so far:
function S = Convert_to_words(number)
ones = {'', 'One', 'Two', 'Three', 'Four', 'Five', 'Six', 'Seven', 'Eight', 'Nine'};
tens = {'', '', 'ERROR', 'Twenty', 'Thirty'};
end

10 commentaires

[tens{tens_digit+1}, ones{ones_digit+1}]
Britnie Casillas
Britnie Casillas le 15 Nov 2019
When I add this to the function, it says I get an error.
Matt J
Matt J le 15 Nov 2019
Modifié(e) : Matt J le 15 Nov 2019
It is entirely possible that you got an error, depending on what you did to generate tens_digit and ones_digit. But how would we offer advice on that without seeing what you did, and the error message that you got?
function S = num2words(number)
ones_digit = {'', 'One', 'Two', 'Three', 'Four', 'Five', 'Six', 'Seven', 'Eight', 'Nine'};
tens_digit = {'', '', 'ERROR', 'Twenty', 'Thirty'};
[tens{tens_digit+1}, {ones_digit+1}];
end
when I type it into the command window:
>> num2words(21)
Undefined function or variable 'tens'.
Error in num2words (line 4)
[tens{tens_digit+1}, {ones_digit+1}];
Matt J
Matt J le 15 Nov 2019
Modifié(e) : Matt J le 15 Nov 2019
Well, one problem is that Walter's advice was based on your initial code where tens and ones were (a) provided by you and (b) equal to lists of string that you've now renamed to something else.
ones= {'', 'One', 'Two', 'Three', 'Four', 'Five', 'Six', 'Seven', 'Eight', 'Nine'};
tens = {'', '', 'ERROR', 'Twenty', 'Thirty'};
In your latest code however, tens and ones are no longer provided, but you still try to use them the same way as in Walter's suggestion. Another problem is that you are not using the input variable number anywhere.
So youre saying instead of doing:
function S = num2words(number)
ones = {'', 'One', 'Two', 'Three', 'Four', 'Five', 'Six', 'Seven', 'Eight', 'Nine'};
tens = {'', '', 'ERROR', 'Twenty', 'Thirty'};
[tens{tens_digit + 1}, ones{ones_digit + 1}];
end
I should do?
[tens{tens_digit+1}, ones{ones_digit+1}]
even when I go back to my original function and add Walters:
function S = convert_to_words(number)
ones= {'', 'One', 'Two', 'Three', 'Four', 'Five', 'Six', 'Seven', 'Eight', 'Nine'};
tens = {'', '', 'ERROR', 'Twenty', 'Thirty'};
[tens{tens_digits + 1}, ones{ones_digits + 1}];
end
and when i type it into the command window
>> convert_to_words(21)
Undefined function or variable 'tens_digits'.
Error in convert_to_words (line 5)
[tens{tens_digits + 1}, ones{ones_digits + 1}];
Matt J
Matt J le 16 Nov 2019
Well, the error message is telling you the problem. You haven't created the variables tens_digits or one_digits. You were supposed to derive them from number. That was the piece of your homework that Walter left for you to do.
Britnie Casillas
Britnie Casillas le 16 Nov 2019
wouldnt the tens_digits and one_digits be the same variables as the ones and tens? What do you mean derive them from number?
Stephen23
Stephen23 le 16 Nov 2019
"wouldnt the tens_digits and one_digits be the same variables as the ones and tens? "
No.
tens ans ones are cell arrays of character vectors.
tens_digits and one_digits should be numeric values of the digits in the given number (which by adding one to (because MATLAB indexing starts from one) can be used as indices into ones and tens).
"What do you mean derive them from number? "
You need to get the digits from number, as numeric values.

Connectez-vous pour commenter.

 Réponse acceptée

Matt J
Matt J le 16 Nov 2019

0 votes

As a further hint, consider the following version, which is almost what you want
function S = convert_to_words(number)
ones= {'', 'One', 'Two', 'Three', 'Four', 'Five', 'Six', 'Seven', 'Eight', 'Nine'};
tens = {'','ERROR', 'Twenty-', 'Thirty-'};
tens_digit=3;
ones_digit=4;
S=[tens{tens_digit + 1}, ones{ones_digit + 1}];
end
It works very reliably on the number 34,
>> S=convert_to_words(34)
S =
'Thirty-Four'
Your job is to get it to work for everything else.

2 commentaires

Britnie Casillas
Britnie Casillas le 16 Nov 2019
Thank you very much
Walter Roberson
Walter Roberson le 16 Nov 2019
However 30 exactly is going to output something that ends in a hyphen when it shouldn't.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

Community Treasure Hunt

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

Start Hunting!

Translated by