2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Помогите написать функцию
Сообщение08.05.2012, 08:36 
требуется на octave написать функцию разложения произвольного числа по разрядам

 
 
 
 Re: Помогите написать функцию
Сообщение08.05.2012, 15:42 
Аватара пользователя
Не знаю, что имеется в виду под "произвольного" в данном случае: как, например, разложить $\pi$ или комплексное число и т.д.
Я написал на Matlab, но, думаю, пойдет и под Octave так:

Код:
function razryad=razryad(n)
n=abs(n);
n=num2str(n);
n=strrep(n, '.', '');
n=str2num(n);
flag=1;
i=0;
while flag
if n==0
    flag=0;
else
    i=i+1;
razryad(i)=n-10*floor(n/10);
n=floor(n/10);
end
end
razryad=razryad(end:-1:1);


а дальше модифицируйте (упрощайте или наоборот надстраивайте на это) по своему усмотрению в зависимости от "произвольности" "произвольного числа".

 
 
 
 Re: Помогите написать функцию
Сообщение09.05.2012, 06:20 
что такое flag?

-- 09.05.2012, 07:31 --

и если честно программа не работает и не понятно даже почему и код тоже немного не понятен

 
 
 
 Re: Помогите написать функцию
Сообщение09.05.2012, 08:36 
Аватара пользователя
А-а-а, это у Вас учебное задание, а Вы ни в зуб ногой? - Извините, выучить и сдать вместо Вас я не могу и не хочу. Выучите хотя бы какие-то основы - обращайтесь за разъяснением по поводу отдельных непонятных моментов.

 
 
 
 Re: Помогите написать функцию
Сообщение09.05.2012, 08:40 
вообще то я понимаю отдельные моменты и смысл задания, просто мне непонятна именно ваша программа, и я сюда обратилась не просто так, а потому что не поняла как его осуществить именно в октаве с чего начинать и т.д., спасибо за помощь

 
 
 
 Re: Помогите написать функцию
Сообщение09.05.2012, 12:21 
Nastya99906 в сообщении #568979 писал(а):
вообще то я понимаю отдельные моменты и смысл задания,

Если Вы понимаете смысл задания, то объясните его и нам. Что понимается под "произвольным числом": целое, вещественное или что? И в каком формате требуется получить результат? И что понимается под разрядом, в конце концов: десятичный, двоичный, ...?

 
 
 
 Re: Помогите написать функцию
Сообщение09.05.2012, 12:23 
ок, произвольное число -это значит любое, по разрядам ,например:число 444= 4*100+4*10+4*1, вот что значит по разрядам

 
 
 
 Re: Помогите написать функцию
Сообщение09.05.2012, 12:26 
ewert в сообщении #569022 писал(а):
в каком формате требуется получить результат?

 
 
 
 Re: Помогите написать функцию
Сообщение09.05.2012, 12:33 
начнем с того что вы понимаете под словом "формат"?

 
 
 
 Re: Помогите написать функцию
Сообщение09.05.2012, 12:41 
Под форматом понимается формат данных. Например, в Вашем случае на выходе функции можно пытаться получать текстовую строку. А можно -- числовой массив, элементами которого являются отдельные разряды. И много чего ещё можно навыдумывать. Пока задача толком не поставлена -- обсуждать её довольно бессмысленно.

 
 
 
 Re: Помогите написать функцию
Сообщение09.05.2012, 12:43 
ну я думаю как то глупо немного думать о текстовой строки, конечно же числовой массив

 
 
 
 Re: Помогите написать функцию
Сообщение09.05.2012, 13:06 
Аватара пользователя
Не могу молчать.
Предлагаю обалденный и короткий алгоритм.
Берём массив длиной заведомо превышающей количество разрядов входного числа.
Заполняем его случайными цифрами.
Просчитываем значение массива как изображения числа и сравниваем с входным.
Повторяем заполнение до получения равенства.

 
 
 
 Re: Помогите написать функцию
Сообщение09.05.2012, 13:16 
Ну если массив -- пожалуйста:

Используется синтаксис Matlab M
function z=f(n)
z=[];
while n>0
    z=[mod(n,10), z];
    n=fix(n/10);
end

Это, конечно, если число целое положительное (для обработки нуля нужно добавить условный оператор в первую строчку). Если число любое, то постановка задачи так и непонятна.

 
 
 [ Сообщений: 13 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group