LINUX.ORG.RU

Сложное циклическое вычисление.

 


0

1

Гуру, всем добра. Стали в быту нужны определённые вычисления. Пример

(x:100*0.65)+у=b

Всё просто. И достаточно обычного калькулятора. Но. Беда в том, что значение b после первого вычисления должно стать новым х и вычисление повторяется вновь и вновь определённое колличество раз. Ну, цикл в общем, с каким то значением колличества раз. И всё бы ничего, да вот х и у с числом циклов меняются. И не имея скрипта я это считаю на калькуляторе. Заколебался если честно.

Вопрос….есть ли програмка в консоли желательно или скрипт - калькулятор такой, который решает такие задачи? Программирую простые алгоритмы и задачи для AVR МК на асме. И как такое сделать там знаю. Но изучить быстро как это сделать на bash, просто не успеваю. Нет…сделаю конечно…изучу. Но блин…нужно уже сейчас иначе убиться можно постоянно так считать. Может есть примерчик? А на его основе я попробую своё сделать. Знаю, что вопрос странный, потому, что это явно что-то простейшее, но поверьте не зная язык bash понять быстро, как это сделать - трудно. Спасибо, тем кто отзовётся.

(x:100*0.65)+у=b

В смысле, x[n+1] = x[n] / 100 * 0.65 + y?

х и у с числом циклов меняются

А как меняется y? Нет ли для этого выражения нерекурсивной формулы? (Для представленного Вами - есть.)

Вопрос….есть ли програмка в консоли желательно или скрипт - калькулятор такой, который решает такие задачи?

bc есть в POSIX, т.е. более-менее везде. bc -l включает десятичные дроби.

x = 1.2
y = 3.4
n = 10
for(i = 0; i < n; ++i) {
 b = x/100*0.65 + y
 b # печатает
 x = b
}
anonymous
()
Ответ на: комментарий от ya-betmen

Да. Bash лучше всего, конечно. У меня есть постоянный доступ удалённый к консоли линукс. Сейчас пытаюсь понять как результат простого вычисления присвоить какой-то переменной. Читаю. Если у кого-то будет какой-то пример буду очень благодарен.

uriukti
() автор топика
Ответ на: комментарий от anonymous

Да. Я должен задавать сам х и у. И некое число циклов пусть будет - с. Затем b должна присвоиться к х и счёт по новой. А - с инкрементируется на 1. После окончания результат вычислений.

uriukti
() автор топика
Ответ на: комментарий от uriukti

Я должен задавать сам х и у.

В приведённой выше программе для bc это делать можно, в том числе, внутри цикла.

И некое число циклов пусть будет - с.

В приведённой выше программе для bc эта переменная называется n, но Вы вольны её переименовать.

Затем b должна присвоиться к х и счёт по новой. А - с инкрементируется на 1. После окончания результат вычислений.

Если хотите видеть результат только после всех вычислений, вынесите помеченную комментарием # печатает строку за пределы цикла.

anonymous
()
Ответ на: комментарий от anonymous

Тьфу блин. Вы отвечаете с опережением. ))) Да. Спасибо. Попробую отпишусь. Кажется это я и искал!!!

uriukti
() автор топика
Ответ на: комментарий от uriukti

Кажется понииаю.

А я Вас, кажется, перестаю.

А как это на цикл поместить?

Вот эту фразу не понимаю. Выше приведена ссылка на документацию к bc. Цикл for выполняет всё, что находится между {}, n раз.

То, что для bc?

Вот эту фразу совершенно не понимаю. Запустите bc -l и впечатайте туда приведённую выше программу. Экспериментируйте.

anonymous
()
Ответ на: комментарий от anonymous

Да. Отлично всё работаает!!! Именно как необходимо. Да, в формуле действительно была ошибка с переменной - у, вы верно заметили.) Я всё поправил и программа работает как надо! Вы очень ценную информацию дали мне. Огромное спасибо!!!

uriukti
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.