Форум программистов, компьютерный форум, киберфорум
Shell, Bash
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 06.06.2014
Сообщений: 16
1

Калькулятор

23.12.2014, 21:36. Показов 1651. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет! В общем есть вот такой сценарий:
Bash
1
2
3
4
5
6
7
res=$1
shift
while [[ $# -ge 2 ]] ; do
res=$(($res$1$2))
shift 2
done
echo $res
Задумано, что это калькулятор. Он запускается с подобными аргументами: calc.sh 1 + 2 \* 3 + 3 / 4.
Но если ему написать calc.sh 1+2 и тому подобное, он просто напишет 1+2 и всё, как и должен. Нужно модифицировать сценарий так, чтобы считал и без пробелов.
Я придумал вот такой способ, но проблема в том он запускается и ничего не делает и зацикливается. Это можно отменить сочетанием Ctrl + Z.
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/bin/bash
if [[ $# == 1 ]]
string=$1
then
        res=${string:0}
        while [[ true ]] ; do
                res=$(($res${string:1}${string:2}))
                string=${string#[1-9+][1-9+]}
                if [[ ${#res} == 0 ]]
                then
                        echo $res
                        exit 0
                fi
        done
fi
res=$1
shift
while [[ $# -ge 2 ]] ; do
        res=$(($res$1$2))
        shift 2
done
echo $res
exit 0
Понимаю что проблема очень тупая, но пожалуйста подскажите как можно исправить мой код, чтобы заработал. Или, если проще, как исправить начальный скрипт калькулятора. Извините, но времени осталось мало, а работа плохо идёт.

Добавлено через 3 часа 40 минут
Updt: нашёл у себя косяк и чуть переделал. Кто разбирается и может потестить прошу помощи (у меня дома линукс мышь и клаву не видит).
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/bin/bash
string=$1
if [[ $# == 1 ]]
then
        res=${string:0}
        while [[ true ]] ; do
                res=$(($res${string:1}${string:2}))
                string=${string#[1-9+][1-9+][1-9+]}
                if [[ ${#string} == 0 ]]
                then
                        echo $res
                        exit 0
                fi
        done
else
        res=$1
        shift
        while [[ $# -ge 2 ]] ; do
                res=$(($res$1$2))
                shift 2
        done
        echo $res
        exit 0
fi
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.12.2014, 21:36
Ответы с готовыми решениями:

Написать калькулятор на bash
Помогите с написанием скрипта: Напишите калькулятор на bash. При запуске ваш скрипт должен ожидать...

Создать калькулятор на bash
как создать на bin bash

Создать элементарный калькулятор
Создать элементарный калькулятор на Linux

Калькулятор на Bash. Почему не работает?
Пробовал через терминал в линуксе, такие же ошибки/// это cywin, не суть. Вот Код: #!/bin/bash ...

1
0 / 0 / 0
Регистрация: 06.06.2014
Сообщений: 16
25.12.2014, 22:47  [ТС] 2
Помогите, пожалуйста! Проблема всё ещё актуальна.
0
25.12.2014, 22:47
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.12.2014, 22:47
Помогаю со студенческими работами здесь

Как преобразовать обычный калькулятор в калькулятор использующий класс стек?
#include <iostream> int main(){ int a = 0; int b = 0; char operation; ...

Простой калькулятор и калькулятор с парсингом
Ребят я совсем не давно только начал изучать сишку, решил написать простенький калькулятор который...

Калькулятор
Где в калькуляторе находится функция перевода из прямого кода в дополнительный и обратно?

Калькулятор на JS
Доброго времени суток, подскажите пожалуйста, начал разбираться с калькулятором, делаю по примеру,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru