Задача
Три сопротивления [latex]{R}_{1}{,R}_{2},{{R}_{3}}[/latex] соединены параллельно. Найти сопротивление цепи.
Входные данные
В единственной строке задано три числа — сопротивления трех резисторов.
Выходные данные
Вывести число — сопротивление цепи.
Код
1 2 3 4 5 6 7 8 9 10 |
#include <iostream> #include <cmath> using namespace std; int main() { double R1,R2,R3; //задаем тип переменных cin>>R1>>R2>>R3; //вводим сопротивления 3-х резисторов cout<<round((R1*R2*R3)/(R1*R2+R1*R3+R2*R3)*1000)/1000; //находим сопротивление по формуле и округляем до 3 знаков после запятой return 0; } |
Тесты
№ | Входные данные | Выходные данные |
1 | 1 2 3 | 0.545 |
2 | 2 2 2 | 0.667 |
3 | 12 7 8 | 2.847 |
4 | 2 3 6 | 1 |
5 | 0.2 0.5 0.7 | 0.119 |
Решение
Сначала задаем 3 переменные, которые мы вводим с клавиатуры — напряжение на каждом резисторе. Находим сопротивление цепи по формуле [latex]\frac{{R}_{1}\cdot {R}_{2}\cdot {{R}_{3}}}{{R}_{1}\cdot{R}_{2}+{R}_{1}\cdot {R}_{3}+{R}_{2}\cdot {R}_{3}}[/latex]. Затем округляем до 3 точек после запятой используя библиотеку [latex]cmath[/latex] и функцию [latex]round[/latex].
Ссылка на код здесь.
— Вы не привели условие задачи полностью.
— «ML10″ не является ключевым словом.
— Не нужно выполнять проверку корректности введенных данных. В данном случае.
— А если проверяете, то сообщение об этом нужно отправлять в cerr, а не в cout.
— Вас ничего не смущает в этой части кода » * 1000) / 1000″?
— Сделайте обозначения такими как в условии задачи [latex]R_1, R_2, R_3[/latex]
— Почему у Вас сопротивление не может равняться нулю?
Спасибо за замечания. Сопротивление не может равняться нулю потому, что в формуле используется «деление на сопротивление.» round(a*1000)/1000 — округление до 3-х знаков после запятой.
То, что Вы делите на ноль проблема Вашей формулы, а не недостаток устройства мира. Вы ведь не станете отрицать наличие проводников? Без них не работал бы Ваш компьютер. А есть ещё и сверхпроводники.
Я хочу сказать, что нужно поставить закрывающую скобку в формуле и упростить полученное выражение. Глядишь — делить и не придётся.
Формулу исправил. Теперь правильно?
К сожалению, нет.
– Вы не привели условие задачи полностью.
– Сделайте обозначения такими как в условии задачи [latex]R_1, R_2, R_3[/latex]
— Единственную формулу нужно записать именно как формулу. Т.е. R=… Используйте нижние индексы, математический знак умножения, а не «звёздочку», черту дроби и т.п.
— По округлению. Можно оставить как есть или использовать cout.precision(3);
— В таблице тестов пропущен №4
— Нет ссылки на код в ideone.com или cpp.sh.
Я исправил все указанные выше замечания. Теперь правильно?
Гарантировать не могу. Но ошибок не вижу.
Зачтено.