Условие задачи:
Даны два действительных числа [latex]a[/latex] и [latex]b[/latex]. Получить их сумму, разность и произведение.
Код №1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#include <iostream> #include <cmath> using namespace std; int main() { long double a, b, sum; char z; cin >> a >> z >> b; if (z == '+') { sum = a + b; } else if (z== '-') { sum = a - b; } else if (z == '*') { sum = a * b; } cout << a << z << b << "= " << sum << endl; return 0; } |
Тесты
a | z | b | sum |
5 | + | 6 | 11 |
7 | — | 8 | -1 |
9 | * | 11 | 99 |
Решение №1
Для создания данной программы я описал 4 переменных: [latex]a[/latex], [latex]b[/latex], [latex]z[/latex], sum. Для переменных [latex]a[/latex], [latex]b[/latex], [latex]sum[/latex] я взял тип переменных «long double» — так как не указано какие числа должны быть. Символом z мы обозначим переменную в типе «char» — так как мне надо указать знак операции. Для вычисления суммы надо ввести знак операции «+», для разности «-» и для произведения «*» выглядит все примерно так мы вводим (первое число «[latex]a[/latex]») (знак «[latex]z[/latex]» ) (второе число «[latex]b[/latex]») и получаем (ответ «[latex]sum[/latex]»).
Код №2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
#include <iostream> #include <cmath> using namespace std; int main() { long double a, b, sum; char z; cin >> a >> z >> b; if (z == '+') { sum = a + b; } else if (z== '-') { sum = a - b; } else if (z == '*') { sum = a * b; } else if (z == '/') { if (b==0){ cout << "You can't divide by zero"<< endl; return 0; } sum = a / b; } else if (z == '%') { if (b==0){ cout << "You can't take remainder of the division by zero"<< endl; return 0; } sum= fmod (a,b); }else if (z == '^') { sum=pow(a,b); } cout << a <<" "<< z <<" "<< b << " = " << sum << endl; return 0; } |
Решение №2
Это не то, что просили сделать изначально, но я думаю это тоже будет интересно.
Отличие от первого кода состоит в том, что я добавил дополнительные команды, а именно: деления «/», возведения в степень «^» и остаток от деления «%».
Во время создания программы я столкнулся с ситуациями которые очень важны и их легко пропустить. Когда выполняется деление на число или вычисляться остаток от деления надо обязательно сделать поверку является ли второе число нулем или нет, если да то надо вывести сообщение о том, что нельзя делить на ноль в другом случае делим на второе число.
Ссылки
Условие задачи;
Код программы №1 на Ideone.com;
Код программы №2 на Ideone.com;
Поскольку вариантов операторов существует довольно много и они могут присутствовать в произвольном наборе, здесь лучше подойдет не
а
Можно эту задачу решить изящнее с помощью ссылок на функции, но вам это, скорее всего, еще не рассказывали.
Если я не ошибаюсь то в switch нельзя использовать тип переменных char.
А что легче и быстрее: набрать две строчки кода и проверить или дожидаться ответа в комментариях?
Конечно, можно.
— Обязательно прочтите свой текст. В нём много опечаток и неправильных речевых оборотов. Например, переменные не берутся в тип. Тип переменной выбирается.
— Переменные лучше не созДавать, а описывать.
— Нет необходимости копировать текст пояснения дважды (со всеми ошибками). Просто укажите в чём отличие.
— Старайтесь не делать абзацев и переходов на новую строку в середине предложения.
— Посмотрите на википедии статью про пробел.
— Математические символы и формулы следует набирать в latex.
— Вы забыли про ключевые слова (теги).
– Обязательно прочтите свой текст. В нём есть неправильные речевые обороты. Например, «Переменную z в тип переменных…».
– Все математические символы и формулы следует набирать в latex.
– Пожалуйста, разберитесь с отступами в программе. Некоторые возможные варианты описаны здесь.
– Пожалуйста, удалите эти ключевые слова «ML1, Даны два действительных числа a и b. Получить их сумму, Радомир Сиденко, разность и произведение., Сиденко» и добавьте эти «сумма», «разность», «произведение».
– Я не возражаю против Вашей трактовки задачи, но изначально предполагалось, что Вы напишите решение в одну строку текста (тема-то линейные программы):
Пожалуйста, напишите все ли замечания Вам понятны.
— Посмотрите внимательно на код №1 и оформите второй такими же отступами.
— Посмотрите внимательно на код №1 и внесите аналогичные изменения во второй код.
— Обратите внимание как оформлены [latex]a[/latex] и [latex]b[/latex] в первой строке условия. Делайте также в остальных своих программах.
— Для остатка от деления тоже нужно проверять на 0.
— Для вычисления остатка от деления действительных чисел используется функция fmod.
— После запятых нужно ставить пробелы.
— Пожалуйста, добавьте в нужных местах текста необходимые знаки препинания. Например, перед «что» и «но».
— Разбейте текст на предложения точками.
— С учётом функции fmod() текст про «Для операции остаток от деления нельзя использовать тип данных double… » лучше убрать.
– Пожалуйста, добавьте ключевые слова “сумма”, “разность”, “произведение”.
Спасибо, доработал.
Зачтено.
Хотя это первая задача и предполагалось всего пара строчек решения: