how can i convert an integer to an array in this function?

function a=get_array_num(n)
end
requirments:
1.no loops,if,recurion or logical operatos
2.no num2str or str2num
3.length_of(n)=number of digits in "n" (help function)
i think maybe logspace is useful here...but how?

8 comentarios

That does not define any return value "a".
The only way that you can meaningfully have length(n) be the same as the number of digits in n, is if n is a scalar value (length 1) with a single digit.
function r = length_of(n)
if n < 10
r = 1 ;
else
r = 1 + length_of(n/10) ;
end
end
Image Analyst
Image Analyst el 31 de Mzo. de 2013
Editada: Image Analyst el 31 de Mzo. de 2013
That would mean your "a" (now called "r") is an array of 1 - not really much of an array. Besides - that code uses recursion, which is not allowed.
Zaza
Zaza el 31 de Mzo. de 2013
Editada: Zaza el 31 de Mzo. de 2013
"a" is not "r" and vice versa
the function "length_of(n)" is known and can be used in the function "get_array_num(n)"
Zaza
Zaza el 31 de Mzo. de 2013
true
i forgot to mention that "length_of(n)" is recursive regardless of "get_array_num(n)"
Why is length_of(0) 1 instead of 0? Why is length_of(-23) 1 instead of 3?
Zaza
Zaza el 1 de Abr. de 2013
sorry again
suppose n>0 with no leading zeros
Jan
Jan el 2 de Abr. de 2013
For length_of() the log10 function would be much smarter.

Iniciar sesión para comentar.

Respuestas (1)

How about
a = zeros(n);
or
a = n * ones(1, 10);
or something similar? There is an infinite variety of arrays you could make that would full those requirements, though requirement #3 is not well explained at all (no idea what it even means).

16 comentarios

I see nothing in the requirements that the output must have any relationship to the input.
True, so there are even more infinite ways to answer. This is so poorly described, even with additional comments, that I don't even know how to help anymore.
Zaza
Zaza el 1 de Abr. de 2013
Editada: Zaza el 1 de Abr. de 2013
there are no infinite ways to answer and i'm sorry if it's described poorly.
the help function is given and that's it. of course the main function must meet the conditions.
You have not indicated what the result of the function is to be.
Zaza
Zaza el 1 de Abr. de 2013
for example:
n=8427
a=[8 4 2 7]
strN = num2str(n) % Convert to string.
a = strN - '0' % Convert characters to separate numbers.
num2str() was prohibited in the assignment.
What a stupid requirement. Then use sprintf() as the "loophole":
strN = sprintf('%d',n)
a = strN - '0'
Zaza
Zaza el 1 de Abr. de 2013
Editada: Zaza el 1 de Abr. de 2013
i read the assigmnet again and it said no use of any functions that convert from numbers to strings and vice versa so i guess it's not legal to use _sprintf() _but thanks anyway
Perhaps you should post the exact assignment.
I did it in 5 lines with a for loop, rem(), floor(), and finally fliplr() to reverse the last digits.
  1. for
  2. call rem
  3. reassign n
  4. end
  5. call fliplr
I'm sure you don't want me to just give you the answer outright (because you could be considered as not doing your own work) so give that a try.
The requirements include 'no loops'
Ha! I give up. Who wants to work like that? I hate it when they say to use MATLAB but don't let you use any of the power of it. I don't see the point. I don't see any way, off the top of my head, to march along the digits of your integer if you can't use strings, loops of any type, or recursion if your integer is of unknown length. Of course if you know it's always 4 digits, then you can just write the contents of the for loop 4 times. Good luck with it though. If something strikes me, I'll post a hint.
I can do it in one smallish line, once given the length_of function. Loops may have been prohibited but ":" has not been.
Zaza
Zaza el 2 de Abr. de 2013
may i have a clue how to do it with the colon operator?
Jan
Jan el 2 de Abr. de 2013
@Zaza: It consumed some time and energy to bring you to post an explicit example. We get some parts of the problem distributed to the question and over several comments. Therefore an efficient answer is impossible.
Please edit the original question and insert all available information. Then show us, what you have tried so far, because of course we are not going to solve your homework: you couldn't submit it anymore without cheating!

Iniciar sesión para comentar.

Categorías

Etiquetas

Preguntada:

el 31 de Mzo. de 2013

Community Treasure Hunt

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

Start Hunting!

Translated by