Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Помощь в написании скрипта на shell  (Прочитано 1443 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн mrceye

  • Автор темы
  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
В универе дали следующее задание:

Написать консольную программу для табулирования функции (например, sin(x)) на отрезке [a,b] с шагом h=(b-a)/1000000 с хранением значений таблицы в массиве. Проанализировать скорость работы программы при выводе на экран каждого элемента массива, каждого сотого, каждого десятитысячного.

Собственно у меня получился следующий код:

#!/bin/bash
a=$1
b=$2
h=$(echo "("$2"-"$1")/1000000" | bc -lq)

x=$a
i=0

while (($x >= $h)); do
x=$(echo "s("$x")" | bc -lq)
mas[$i]=$x
echo ${mas[$i]}
i=$((i+1))
done

При выполнении получаю следующую ошибку:

dim@home-pc:~$ bash prog.sh 1 2
prog.sh: строка 9: ((: 1 >= .00000100000000000000: ошибка синтаксиса: ожидается операнд (error token is ".00000100000000000000")

Как я понял проблема в программе bc, так как она возвращает значение вида .xxx, хотя может быть ошибаюсь. Какие могут быть способы для решения этой проблемы? Или может быть стоит стоит воспользоваться какой-нибудь другой программой для расчета?

Заранее спасибо за помощь!  :)

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Re: Помощь в написании скрипта на shell
« Ответ #1 : 31 Марта 2010, 11:41:07 »
У bash-а целочисленная арифметика, он не понимает floating point.
гугль по словам bash floating-point arithmetic выдает несколько вариантов решения проблемы.

Да, а bash - это Ваш выбор или условие задачи?
Просто я бы что-нибудь позаковыристей выбрал. R при возможности :).

awk тоже неплохо справляется:
$ awk 'BEGIN {if(1>=0.1)print 10/4}'
2.5

Про perl, python, ruby вообще молчу (они в стандартной поставке)
« Последнее редактирование: 31 Марта 2010, 11:49:19 от wl »
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

Оффлайн mrceye

  • Автор темы
  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Re: Помощь в написании скрипта на shell
« Ответ #2 : 31 Марта 2010, 12:17:01 »
Да, bash — условие задачи.
Хм, пожалуй попробую awk. Спасибо за помощь :)

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: Помощь в написании скрипта на shell
« Ответ #3 : 31 Марта 2010, 12:22:55 »
Просто я бы что-нибудь позаковыристей выбрал. R при возможности :).
Какая жесть. :idiot2:

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Re: Помощь в написании скрипта на shell
« Ответ #4 : 31 Марта 2010, 13:50:18 »
Просто я бы что-нибудь позаковыристей выбрал. R при возможности :).
Какая жесть. :idiot2:

Не надо грязи! R мне на прошлом месте работы 6 лет служил верой и правдой, будучи основной рабочей лошадкой.
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

 

Страница сгенерирована за 0.05 секунд. Запросов: 25.