LINUX.ORG.RU

Помогите заставить работать калькулятор на C++

 


1

2

АХТУНГ ДАЛЬШЕ ВЫ МОЖЕТЕ УВИДЕТЬ И БЫДЛОКОД И ИНДУЙССКИЙ КОД!! Я вас предупреждал! Нужно заставить работать вот этот калькулятор Вот его первоначальный вариант. Коротко расскажу с чего всё началось... Итак, я решил скомпилировать его первоначальный вариант под GNU/Linux с помощью g++ и он заработал. Затем я захотел сделать так echo «2/2» | ./calc. И он стал бесконечно выдавать ответ, тогда я сделал так. И оно заработало(почти так как нужно)! Теперь при echo «2/2» | ./calc оно выдавало один ответ, а раньше оно засерало весь терминал... ВНЕЗАПНО НО! При выполнении программы ./calc и вводе 2/2 оно выдаёт ответ и закрывается. Что в принципе логично так как при вызове return 0 завершается функция, а так как она одна (main) то завершается вся программа (это может быть неверно так как я нуб и невероятно туп). Ну думаю понятно что нужно сделать с ним заставить его выдавать результат один раз и завершаться при echo «2/2» | ./calc и заставить его завершается при ./calc при введении exit. Я прошу вас мне помочь. Пожалуйста! П.С И прошу вас объяснять ваши изменения (так как я нуб).

https://pastebin.com/hXemK0QP

В строке

/if (((num_1 <= 0 || num_1 >= 0) && (num_2 <= 0 || num_2 >= 0) && (b == '+' || b == '*' || b == '%' || b == '-' || b == '/'))) {
лишний символ в начале строки - '/'.

Затем ошибки в строке

calc(num_1, num_2, b);
Функция работает с указателями, вот и передавать ей надо адреса переменных:
calc(&num_1, &num_2, &b);

Вот и всё.

saahriktu ★★★★★
()
Последнее исправление: saahriktu (всего исправлений: 3)
Ответ на: комментарий от saahriktu

Спасибо! Оно собралась и заработала! Но из неё всё ещё нельзя выйти по команде exit и она всё ещё выдаёт результат(то что она выдаёт результат так и должно быть но она не должна завершаться до ввода exit) и автоматически завершается при её выполнении в терминале ./calc и вводе 2/2 (2/2 взято в качестве примера действия). Вот кстати тот вариант который компилируется и которой нужно доработать по моей идеи, сказанной выше. Пожалуйста помогите доработать, в замен Вы получите ничего в материальном плане, и ОГРОМНУЮ БЛАГОДАРНОСТЬ от скромного меня, И БУДЕТЕ ВКЛЮЧЕНЫ В СПИСОК АВТОРОВ ЭТО ЧУДО ПРОГРАММЫ. Заранее спасибо, если поможете конечно!

blbulyandavbulyan
() автор топика

Вот его первоначальный вариант.

В первоначальном варианте добавь после cin >> num_1;

if (cin.fail()) return 0;

Тогда если прочитана не цифра (введён «exit») или закончился ввод (при запуске через echo), то программа просто будет завершаться.

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

СПАСИБО!!!!!!!!!! Заработало так как надо! СПАСИБО ОГРОМНОЕ ВЫ БУДЕТЕ ВКЛЮЧЕНЫ В СПИСОК СОАВТОРОВ ЭТОГО ТВОРЕНИЯ! И да не подскажете как собрать установочный пакет под Ubuntu и Debian и как добавить это всё дело в репозитории? И какую GPL лицензию лучше всего выбрать? Какую версию? Я премного благодарен!

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

И да не подскажете как собрать установочный пакет под Ubuntu и Debian и как добавить это всё дело в репозитории?

Э-э-э, ну в Debian не знаю, кто этот пакет-то возьмёт, но в Ubuntu есть PPA. (только если свой репозиторий создавать для Debian)
С другой стороны, а зачем пакет? По заданию так надо что ли?
Документация по PPA (на русском): http://help.ubuntu.ru/wiki/создание_ppa

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