ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
11 июля
372218 Топик полностью
fk0, легенда (29.11.2012 06:48 - 06:53, просмотров: 109) ответил leon_ на Каких только нет математических действий в калькуляторах и языках программирования, а действия || (которое соответствует например значению двух, соединённых параллельно резисторов) нет. Ну сколько ещё можно терпеть такое безобразие? :-)
Не терпи, как-то так:  #include <iostream> #include <limits> using namespace std; struct resistor { double val; resistor(double val) { this->val=val; } resistor(void) { this->val=numeric_limits<double>::signaling_NaN(); } resistor& operator||(const resistor &b) { return *new resistor(1/(1/this->val+1/b.val)); } resistor& operator-(const resistor &b) { return *new resistor(this->val+b.val); } resistor& operator=(double val) { this->val=val; return *this; } }; ostream& operator<<(ostream &s, const resistor &r) { if (r.val!=r.val || r.val<0) throw r.val; if (r.val<1e3) s<<r.val<<"ohm"; else if (r.val<1e6) s<<r.val/1e3<<"k"; else if (r.val<1e9) s<<r.val/1e6<<"M"; else s<<r.val/1e9<<"G"; return s; } int main() { resistor R1(2e3), R2; R2=3e3; resistor R3=R1||R2; cout << "R1||R2=" << R3 << "\n"; cout << "R1-R2=" << (R1-R2) << "\n"; return 0; }
[ZX]