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


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Калькулятoр на bash скриптe.  (Прочитано 6592 раз)

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

Оффлайн Mebroot

  • Автор темы
  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
Калькулятoр на bash скриптe.
« : 01 Декабря 2010, 22:26:23 »
Помогите пожалуйста написать калькулятор на bash скрипте. Или хотя бы подсказать в каком напраление двигаться. Калькулятор должен считать числа любой длины.

Оффлайн smaharbA

  • Участник
  • *
  • Сообщений: 220
    • Просмотр профиля
Re: Калькулятoр на bash скриптe.
« Ответ #1 : 01 Декабря 2010, 22:29:47 »
echo $[2 * 2]
echo '2*2' | bc # но это не совсем шел
Я конечно далек от мысли...(с)

Оффлайн RazrFalcon

  • O_o
  • Старожил
  • *
  • Сообщений: 3129
  • Zombie Mod
    • Просмотр профиля
    • Я на GitHub
Re: Калькулятoр на bash скриптe.
« Ответ #2 : 01 Декабря 2010, 22:33:39 »
Gentoo + KDE, Official Windows Hater
Хотите помочь нашей вики: https://help.ubuntu.ru/wiki/fixme

Оффлайн aliftin

  • Старожил
  • *
  • Сообщений: 1398
    • Просмотр профиля
Re: Калькулятoр на bash скриптe.
« Ответ #3 : 01 Декабря 2010, 22:42:35 »
Через "read"  вводим первое и второе число, затем так же знак. Потом просто проверяете соответствует-ли знак (+, -, * или /) и выполняете действие. У вас в условии есть фраза "любой длинны", если вы имеет ввиду после запятой, то воспользуйтесь этим:
c=$(echo "scale=3; $a/$b" | bc)
Тут "scale" число знаков после запятой. Мне кажется это самый лучший инструмент.
Если мы не можем до чего то дотянуться, мы виним в этом не свой рост, не отсутствие табуретки, а свою цель.

Оффлайн inkblack

  • Старожил
  • *
  • Сообщений: 1216
    • Просмотр профиля
Re: Калькулятoр на bash скриптe.
« Ответ #4 : 01 Декабря 2010, 22:53:20 »
me@my:~$ echo $[1000000000000*2000000000000]
4007528410413793280
- неправильно считает,
me@my:~$ echo 'scale=3; 1000000/1000001'|bc #
.999
- неправильно округляет.

Задача кажется весьма сложной даже для произвольного языка, не говоря уж про  bash.

Попробуйте sudo apt-get install regina-rexx — там всё искаропке с числами любой длины.
Делюсь знаниями, но их у меня мало!

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: Калькулятoр на bash скриптe.
« Ответ #5 : 02 Декабря 2010, 08:46:54 »
Наверное, лучший вариант это скрипт на питоне, вызываемый из баша.
ЗЫ. Или просто питоновский скрипт, если это не радикально.
« Последнее редактирование: 02 Декабря 2010, 08:49:34 от alexander.pronin »

Оффлайн smaharbA

  • Участник
  • *
  • Сообщений: 220
    • Просмотр профиля
Re: Калькулятoр на bash скриптe.
« Ответ #6 : 02 Декабря 2010, 11:14:34 »
inkblack - тупые и жадные адинеснеги это решили даже при бОльших ограничениях переменных
Я конечно далек от мысли...(с)

Оффлайн inkblack

  • Старожил
  • *
  • Сообщений: 1216
    • Просмотр профиля
Re: Калькулятoр на bash скриптe.
« Ответ #7 : 02 Декабря 2010, 15:27:22 »
(Нажмите, чтобы показать/скрыть)
А что, там калькулятор работает с произвольной точностью?
Делюсь знаниями, но их у меня мало!

Оффлайн smaharbA

  • Участник
  • *
  • Сообщений: 220
    • Просмотр профиля
Re: Калькулятoр на bash скриптe.
« Ответ #8 : 02 Декабря 2010, 16:29:28 »
калькулятор не с произвольной

и ответ на не искаропки, а в свете сабжа
Я конечно далек от мысли...(с)

Оффлайн Mebroot

  • Автор темы
  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
Re: Калькулятoр на bash скриптe.
« Ответ #9 : 02 Декабря 2010, 22:49:02 »
http://linuxland.itam.nsc.ru/howto/Bash-Prog-Intro.html
Пункт 10.2
Спасибо.

Есть у кого-нибудь ещё идеи?)

Оффлайн inkblack

  • Старожил
  • *
  • Сообщений: 1216
    • Просмотр профиля
Re: Калькулятoр на bash скриптe.
« Ответ #10 : 02 Декабря 2010, 23:59:03 »
Ну вот, например, как это может выглядеть:
me@my:~/calcu$ ./calcu
> 2+2
4
> fact(2+2)
24
> fact(fact(2+2))
620448401733239439360000
> fact(5)
120
> fact(fact(5))
6.689502913449127057588118054090372586752746333138029810295671352301621E+198
> accu = 200
> fact(fact(5))
6689502913449127057588118054090372586752746333138029810295671352301633557244962989366874165271984981308157637893214090552534408589408121859898481114389650005964960521256960000000000000000000000000000
> quit
me@my:~/calcu$

Правда, не на баше, зато он сам парсит все выражения. И точность может быть любая*), только ее надо указывать явно перед вычислением выражения.
-----------------------------------------------------------------------------------------------------
*) Любая, но возможно не более 999999999 цифр. Существует также техническое ограничение, связанное с объемом доступной памяти.
Делюсь знаниями, но их у меня мало!

Оффлайн Дмитрий Бо

  • Погонщик серверов
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 3549
  • Я не техподдержка, я за порядком слежу
    • Просмотр профиля
Re: Калькулятoр на bash скриптe.
« Ответ #11 : 03 Декабря 2010, 16:46:07 »
sed же! заодно можно тетрис написать :)

Оффлайн inkblack

  • Старожил
  • *
  • Сообщений: 1216
    • Просмотр профиля
Re: Калькулятoр на bash скриптe.
« Ответ #12 : 04 Декабря 2010, 01:30:52 »
Покажите, пожалуйста, примеры на питоне и sed. С учетом того, что «калькулятор должен считать числа любой длины». bc не годится, он неправильно округляет.
Делюсь знаниями, но их у меня мало!

Оффлайн Дмитрий Бо

  • Погонщик серверов
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 3549
  • Я не техподдержка, я за порядком слежу
    • Просмотр профиля
Re: Калькулятoр на bash скриптe.
« Ответ #13 : 04 Декабря 2010, 03:09:24 »
Основы арифметики:
http://drbatty.ru/sed/ch07.html
Пример 7.2. Дальше пиши сам, это ж раздел "Программирование" :)

Немного поясню: вообще-то sed — строковый редактор, и писать на нём калькулятор — извратство, хотя такое уже делали. Этим я хотел намекнуть на... ммм... некоторую бессмысленность задания. Если калькулятор предполагается писать в учебных целях, то ты должен представлять хотя бы на каком языке будешь писать и/или какие алгоритмы использовать. Если такой калькулятор нужен для практических целей, то всё уже написано до нас — надо только выбрать нужный, в крайнем случае, написать bash-враппер для octave.

Оффлайн smaharbA

  • Участник
  • *
  • Сообщений: 220
    • Просмотр профиля
Re: Калькулятoр на bash скриптe.
« Ответ #14 : 04 Декабря 2010, 09:33:55 »
причем тут смысл ?
пример прост - есть шелл (других средств нет) - нужно ссумировать входящие потоком данные
Я конечно далек от мысли...(с)

 

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