Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Jak inaczej zapisać warunek?

Ostatnio zmodyfikowano 2021-12-13 22:02
Autor Wiadomość
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ę.

C/C++
float feval( string f, float n )
{
   
if( f == "sin" )
   
{
       
return sin( n );
   
}
   
   
if( f == "cos" )
   
{
       
return cos( n );
   
}
   
   
return 0.0;
}
P-179099
DejaVu
» 2021-12-02 11:56:33
Jeżeli kod działa i spełnia swoje zadanie to zostaw go takim jaki jest.
P-179100
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ą
P-179101
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ą.
C/C++
// Tutaj opisz co ta funkcja robi / do czego służy
float feval( string _type, float _value )
{
   
if( _type == "sin" ) return sin( _value );
   
   
if( _type == "cos" ) return cos( _value );
   
   
return 0.0;
}
P-179102
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.
C/C++
#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;
   
// itd
   
   
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 );
}
P-179136
« 1 »
  Strona 1 z 1