Проблемы с переключателем / корпусом
У меня есть несколько проблем, я создал программу calculatir для моих студентов, чтобы посмотреть на нее, чтобы получить представление о процедурном программировании.
Проблемы, с которыми я сталкиваюсь, связаны с тем, что вычисления не работают правильно, когда вызываются функции/процедуры, и я не могу получить результаты отображения для отображения ответа.
Пожалуйста, не стесняйтесь изменять код, чтобы он работал, но, пожалуйста, добавляйте к нему комментарии.
Я пытался решить большую часть этого вечера, глядя на разные подходы без радости.
Спасибо
<pre> #include <iostream> double a, b; double calResult; char showMenu(void); void addCal(void); void subCal(void); void mulCal(void); void divCal(void); void displayResult(void); //void clearBuffer(void); int main() { char menu; std::cout << "Welcome to a basic C++ calculator\nEnter in two numbers you wish to perform a calculation on.\nThen select the option you which to perform\n\n"; std::cout << "Enter first number: "; std::cin >> a; std::cout << "Enter second number: "; std::cin >> b; do { menu = showMenu(); switch (menu) { case 1: addCal(); //clearBuffer(); break; case 2: subCal(); //clearBuffer(); break; case 3: mulCal(); //clearBuffer(); break; case 4: divCal(); //clearBuffer(); break; } displayResult(); std::cout << "\n"; } while (menu != 'X' && menu != 'x'); { std::cout << "Thank you!\nGoodbye!"; } } char showMenu(void) { char option; std::cout << "Please select a calculation option.\n"; std::cout << "1 - Addition\n"; std::cout << "2 - Subtraction\n"; std::cout << "3 - Multiplication\n"; std::cout << "4 - Division\n"; std::cout << "X - eXit\n\n"; std::cout << "Enter choice (1,2,3,4 or X): "; std::cin >> option; return option; } void addCal(void) { double add; add = a + b; add = calResult; } void subCal(void) { double sub; sub = a - b; sub = calResult; } void mulCal(void) { double mul; mul = a * b; mul = calResult; } void divCal(void) { double div; div = a / b; div = calResult; } void displayResult(void) { std::cout << "The anwser is: ", calResult; } /*void clearBuffer(void) { while (getchar() != '\n'); }*/
Что я уже пробовал:
Я пытался выводить операторы в каждой функции/процедуре, но они не отображаются после завершения вычисления, поэтому мне пришлось создать функцию отображения.
Я также попытался выделить результаты из add, sub, mul и div в новую переменную, которая будет использоваться в результате отображения, но из-за того, что вычисления не работают, она возвращает значение 0.0000000 (используется break для проверки).
Stefan_Lang
Когда я учился в университете, я обнаружил, что слишком сложные примеры не очень хороши, когда все, что вы хотите показать, - это одна языковая функция или концепция программирования.
Попробуйте ограничить примеры кода максимум 10-15 строками кода, иначе вашим студентам будет трудно определить, какие части действительно имеют отношение к тому, что они пытаются изучить. Все, что выходит за рамки этого, отвлекает от реальной темы.
Я хорошо знаю, что вы не можете составить осмысленные примеры кода всего за 10-15 строк. Но в этом нет необходимости. Вы можете оставить значимые вещи для упражнений.
P.S.: Я мог бы также добавить, что примеры кода не требуются для фактического запуска, хотя, конечно, это хорошая идея, чтобы убедиться, что по крайней мере сегмент, который вы показываете своим студентам, делает то, что он должен делать.