Jak inaczej zapisać warunek?
Ostatnio zmodyfikowano 2021-12-13 22:02
robertos18 Temat założony przez niniejszego użytkownika |
Jak inaczej zapisać warunek? » 2021-12-02 10:44:54 Hej, ma ktoś może pomysł jak inaczej zapisać poniższy kod? Bo wydaje mi się on mało profesjonalny. Chyba, ze uważacie, że ten kod jest jak najbardziej prawidłowy to go zostawię. float feval( string f, float n ) { if( f == "sin" ) { return sin( n ); } if( f == "cos" ) { return cos( n ); } return 0.0; }
|
|
DejaVu |
» 2021-12-02 11:56:33 Jeżeli kod działa i spełnia swoje zadanie to zostaw go takim jaki jest. |
|
robertos18 Temat założony przez niniejszego użytkownika |
» 2021-12-02 12:09:51 bardziej z ciekawości się pytam, bo szukam ciekawszych alternatyw o ile w ogole istnieją |
|
DejaVu |
» 2021-12-02 13:34:42 Kwestia co implementujesz. Równie dobrze możesz skrócić funckję, aby była po prostu bardziej zwięzła. Powinieneś też nazywać zmienne, aby niosły informację do czego one służą/jakie dane w nich są. float feval( string _type, float _value ) { if( _type == "sin" ) return sin( _value ); if( _type == "cos" ) return cos( _value ); return 0.0; } |
|
pekfos |
» 2021-12-13 22:02:15 szukam ciekawszych alternatyw o ile w ogole istnieją To może wskaźniki na funkcje? Możesz użyć tablicy struktur, ale dla większej liczby opcji wyszukiwanie w mapie może być szybsze niż sekwencja ifów. #include <iostream> #include <string> #include <cmath> #include <map>
int main() { std::map < std::string, float( * )( float ) > funkcje; funkcje[ "sin" ] = std::sin; funkcje[ "cos" ] = std::cos; auto oblicz =[ & funkcje ]( const std::string & f, float arg ) { std::cout << f << "(" << arg << ") = " << funkcje.at( f )( arg ) << '\n'; }; oblicz( "sin", 1.2f ); oblicz( "cos", 1.2f ); } |
|
« 1 » |