2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 Помогите написать функцию
Сообщение08.05.2012, 08:36 


08/05/12
7
требуется на octave написать функцию разложения произвольного числа по разрядам

 Профиль  
                  
 
 Re: Помогите написать функцию
Сообщение08.05.2012, 15:42 
Экс-модератор
Аватара пользователя


23/12/05
12050
Не знаю, что имеется в виду под "произвольного" в данном случае: как, например, разложить $\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 


08/05/12
7
что такое flag?

-- 09.05.2012, 07:31 --

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

 Профиль  
                  
 
 Re: Помогите написать функцию
Сообщение09.05.2012, 08:36 
Экс-модератор
Аватара пользователя


23/12/05
12050
А-а-а, это у Вас учебное задание, а Вы ни в зуб ногой? - Извините, выучить и сдать вместо Вас я не могу и не хочу. Выучите хотя бы какие-то основы - обращайтесь за разъяснением по поводу отдельных непонятных моментов.

 Профиль  
                  
 
 Re: Помогите написать функцию
Сообщение09.05.2012, 08:40 


08/05/12
7
вообще то я понимаю отдельные моменты и смысл задания, просто мне непонятна именно ваша программа, и я сюда обратилась не просто так, а потому что не поняла как его осуществить именно в октаве с чего начинать и т.д., спасибо за помощь

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


11/05/08
32166
Nastya99906 в сообщении #568979 писал(а):
вообще то я понимаю отдельные моменты и смысл задания,

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

 Профиль  
                  
 
 Re: Помогите написать функцию
Сообщение09.05.2012, 12:23 


08/05/12
7
ок, произвольное число -это значит любое, по разрядам ,например:число 444= 4*100+4*10+4*1, вот что значит по разрядам

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


11/05/08
32166
ewert в сообщении #569022 писал(а):
в каком формате требуется получить результат?

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


08/05/12
7
начнем с того что вы понимаете под словом "формат"?

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


11/05/08
32166
Под форматом понимается формат данных. Например, в Вашем случае на выходе функции можно пытаться получать текстовую строку. А можно -- числовой массив, элементами которого являются отдельные разряды. И много чего ещё можно навыдумывать. Пока задача толком не поставлена -- обсуждать её довольно бессмысленно.

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


08/05/12
7
ну я думаю как то глупо немного думать о текстовой строки, конечно же числовой массив

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


13/08/08
14474
Не могу молчать.
Предлагаю обалденный и короткий алгоритм.
Берём массив длиной заведомо превышающей количество разрядов входного числа.
Заполняем его случайными цифрами.
Просчитываем значение массива как изображения числа и сравниваем с входным.
Повторяем заполнение до получения равенства.

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


11/05/08
32166
Ну если массив -- пожалуйста:

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

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

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 13 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group