jak wywołać funkcję w strukturze
Ostatnio zmodyfikowano 2021-11-22 18:45
nanoant20 Temat założony przez niniejszego użytkownika |
jak wywołać funkcję w strukturze » 2021-11-22 18:25:47 nie wiem jak wywołać funkcję linijka z którą ma problem float wynik = data[choice-1].funkcja(temp); <-- how to call functions poniżej listing #include <iostream> #include <vector> #include <iomanip> #include <limits> #include <algorithm> #include <cstring> #include <cmath> #include <chrono> #include <thread>
using namespace std;
typedef struct { int id; string opis; float tmp; float funkcja( float ); char jednostka; } Item;
float FtoC( float ); float CtoF( float ); int sprawdz_czy_liczba(); void czysc_strumien(); void wykonaj_konwersje( vector < Item >, int );
int main() { float temp { 0 }; vector < Item > data = { { 1, "Z Celsjuszy na Fahrenheita", CtoF( temp ), 'F' }, { 2, "Z Fahrenheita na Celsjusze", FtoC( temp ), 'C' } }; cout << "Wybierz " << endl; for( auto Item: data ) { cout << Item.id << " " << Item.opis << endl; } bool infinity = true; for(; infinity; ) { cout << "Wybierz dzialanie : "; int choice { sprawdz_czy_liczba() }; switch( choice ) { case 1: wykonaj_konwersje( data, choice ); break; case 2: wykonaj_konwersje( data, choice ); break; case 3: cout << "\n\t\t\tKoniec programu. Bye!"; infinity = false; break; default: cout << "\tMozesz wybrac tylko od 1 do 3" << "\n\n"; break; } } getchar(); return 0; }
float CtoF( float temp ) { return float( temp ) * 9 / 5 + 32; } float FtoC( float temp ) { return( float( temp ) - 32 ) * 5 / 9; } int sprawdz_czy_liczba() { int x; while( !( cin >> x ) ) { if( cin.fail() ) { cout << "\tWprowadzony znak nie jest cyfra/liczba" << endl; cout << "\tProsze podac cyfre : "; czysc_strumien(); continue; } } return x; } void czysc_strumien() { cin.clear(); cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' ); } void wykonaj_konwersje( vector < Item > data, int choice ) { float temp = 0; cout << "Przeliczamy " << data[ choice - 1 ].opis << "\n"; cout << "Podaj temperature : "; cin >> temp; cout << data[ choice - 1 ].jednostka << "\n"; }
|
|
pekfos |
» 2021-11-22 18:37:47 Nie chodziło o wskaźnik na funkcję? typedef struct { int id; string opis; float( * funkcja )( float ); char jednostka; } Item;
vector < Item > data = { { 1, "Z Celsjuszy na Fahrenheita", CtoF, 'F' }, { 2, "Z Fahrenheita na Celsjusze", FtoC, 'C' } };
float wynik = data[ choice - 1 ].funkcja( temp ); |
|
nanoant20 Temat założony przez niniejszego użytkownika |
» 2021-11-22 18:45:05 Dziękuję @pekfos próbowałem ze wskażnikiem ale przy wywoływaniu, z marnym skutkiem Jeszcze raz dziękuję
|
|
« 1 » |