donChev Temat założony przez niniejszego użytkownika |
[C++] Przydzielenie do tablicy numeracji » 2016-06-09 18:37:54 Napisałem program przelicznika walut. Problem w moim programie wygląda następująco: program pobiera sobie wartości kolejnych numerów z typedef enum. Chciałbym przypisać daną tam nazwę do tablicy, by program rozpoznając nazwę np. bEURPLN wiedział jaka wartość odpowiada mu w tablicy. Nie jestem programistą, nie wiem jak to dokładniej wyjaśnić. Jest to programik na zaliczenie przedmiotu, także gorąco proszę o pomoc w uruchomieniu tej tablicy :) #include <iostream> #include <fstream> #include <string>
using namespace std;
typedef enum { interface, error, choose_value, replace, intro, backtomenu, save } QUESTION_T; typedef enum { bPLNEUR, sPLNEUR, bUSDEUR, sUSDEUR, bGBPEUR, sGBPEUR, bCHFEUR, sCHFEUR, bEURPLN, sEURPLN, bUSDPLN, sUSDPLN, bGBPPLN, sGBPPLN, bCHFPLN, sCHFPLN, bPLNUSD, sPLNUSD, bEURUSD, sEURUSD, bGBPUSD, sGBPUSD, bCHFUSD, sCHFUSD, bPLNGBP, sPLNGBP, bEURGBP, sEURGBP, bUSDGBP, sUSDGBP, bCHFGBP, sCHFGBP, bPLNCHF, sPLNCHF, bEURCHF, sEURCHF, bUSDCHF, sUSDCHF, bGBPCHF, sGBPCHF } FACTOR_IND_T;
const double factors[ 40 ] = { 4.3744, 4.4365, 3.9339, 3.9588, 5.7504, 5.8275, 3.9604, 4.0290, 0.2548, 0.2510, 1.1155, 1.1139, 1.4656, 1.4632, 1.0092, 1.0116, 0.1739, 0.1715, 0.7608, 0.7612, 0.6822, 0.6833, 0.6886, 0.6911, 0.2528, 0.2481, 1.1048, 1.1012, 0.9907, 0.9887, 1.4527, 1.4458 };
void load_value() { string file; ifstream load; load.open( "value.txt" ); while( load.good() ) { getline( load, file ); cout << file << endl; } load.close(); cin.get(); }
char AskQuestion( QUESTION_T info ) { switch( info ) { case interface: cout << "Wybierz walute ktora chcesz przewalutowac:\n"; cout << "[0] Polski zloty (PLN)\n"; cout << "[1] Euro (EUR)\n"; cout << "[2] Dolar amerykanski (USD)\n"; cout << "[3] Funt brytyjski (GBP)\n"; cout << "[4] Frank szwajcarski (CHF)\n"; cout << "[L] Aby wczytac ostatnie przewalutowanie\n"; cout << "[Q] Opusc program\n" << endl; cout << "Wpisz odpowiednia cyfre lub litere aby przejsc dalej." << endl; break; case error: cout << "BLAD: Nieprawidlowa cyfra lub litera. Sprobuj ponownie." << endl << endl; break; case choose_value: cout << "Wybierz walute na ktora chcesz dokonac przewalutowania: " << endl; break; case intro: cout << "== == == == == PRZELICZNIK WALUT == == == == ==" << endl << endl; break; case backtomenu: cout << "Czy chcesz powrocic do menu glownego? (Y/N): "; break; case save: cout << "Czy chcesz zapiac to przewalutowanie? (Y/N): "; break; } return 0; }
void main() { float cash = 0; double s_val_1 = 0; double b_val_1 = 0; double s_val_2 = 0; double b_val_2 = 0; string val_name_1, val_name_2; char answear = 'Y'; char menu1, menu2, menu3 = 'Y'; switch( AskQuestion( intro ) ); while( menu3 == 'Y' || menu3 == 'y' ) { switch( AskQuestion( interface ) ); cin >> menu1; switch( menu1 ) { case 'Q': exit( 0 ); break; case '0': val_name_1 = " PLN"; switch( AskQuestion( choose_value ) ); cin >> menu2; switch( menu2 ) { case '1': val_name_2 = " EUR"; b_val_1 = bPLNEUR; s_val_1 = sPLNEUR; break; case '2': val_name_2 = " USD"; b_val_1 = bPLNUSD; s_val_1 = sPLNUSD; break; case '3': val_name_2 = " GBP"; b_val_1 = bPLNGBP; s_val_1 = sPLNGBP; break; case '4': val_name_2 = " CHF"; b_val_1 = bPLNCHF; s_val_1 = sPLNCHF; break; default: switch( AskQuestion( error ) ); continue; } break; case '1': val_name_1 = " EUR"; switch( AskQuestion( choose_value ) ); cin >> menu2; switch( menu2 ) { case '0': val_name_2 = " PLN"; b_val_1 = bEURPLN; s_val_1 = sEURPLN; break; case '2': val_name_2 = " USD"; b_val_1 = bEURUSD; s_val_1 = sEURUSD; break; case '3': val_name_2 = " GBP"; b_val_1 = bEURGBP; s_val_1 = sEURGBP; break; case '4': val_name_2 = " CHF"; b_val_1 = bEURCHF; s_val_1 = sEURCHF; break; default: switch( AskQuestion( error ) ); continue; } break; case '2': val_name_1 = " USD"; switch( AskQuestion( choose_value ) ); cin >> menu2; switch( menu2 ) { case '0': val_name_2 = " PLN"; b_val_1 = bUSDPLN; s_val_1 = sUSDPLN; break; case '1': val_name_2 = " EUR"; b_val_1 = bUSDEUR; s_val_1 = sUSDEUR; break; case '3': val_name_2 = " GBP"; b_val_1 = bUSDGBP; s_val_1 = sUSDGBP; break; case '4': val_name_2 = " CHF"; b_val_1 = bUSDCHF; s_val_1 = sUSDCHF; break; default: switch( AskQuestion( error ) ); continue; } break; case '3': val_name_1 = " GBP"; switch( AskQuestion( choose_value ) ); cin >> menu2; switch( menu2 ) { case '0': val_name_2 = " PLN"; b_val_1 = bGBPPLN; s_val_1 = sGBPPLN; break; case '1': val_name_2 = " EUR"; b_val_1 = bGBPEUR; s_val_1 = sGBPEUR; break; case '2': val_name_2 = " USD"; b_val_1 = bGBPUSD; s_val_1 = sGBPUSD; break; case '4': val_name_2 = " CHF"; b_val_1 = bGBPCHF; s_val_1 = sGBPCHF; break; default: switch( AskQuestion( error ) ); continue; } break; case '4': val_name_1 = " CHF"; switch( AskQuestion( choose_value ) ); cin >> menu2; switch( menu2 ) { case '0': val_name_2 = " GBP"; b_val_1 = bCHFPLN; s_val_1 = sCHFPLN; break; case '1': val_name_2 = " EUR"; b_val_1 = bCHFEUR; s_val_1 = sCHFEUR; break; case '2': val_name_2 = " USD"; b_val_1 = bCHFUSD; s_val_1 = sCHFUSD; break; case '3': val_name_2 = " GBP"; b_val_1 = bCHFGBP; s_val_1 = sCHFGBP; break; default: switch( AskQuestion( error ) ); continue; } break; default: while( menu1 == 'L' || menu1 == 'l' ) { string file; ifstream load; load.open( "save.txt" ); while( load.good() ) { getline( load, file ); cout << file << endl; } load.close(); cin.get(); switch( AskQuestion( backtomenu ) ); cin >> menu3; cout << endl; break; } continue; switch( AskQuestion( error ) ); continue; } cout << "Wprowadz wartosc (" << val_name_1 << " ): " << endl; cin >> cash; b_val_2 = b_val_1 * cash; s_val_2 = s_val_1 * cash; cout << endl << "Przewalutowano" << val_name_1 << " na" << val_name_2 << endl << endl; cout << "Wymieniajac " << cash << val_name_1 << " otrzymasz " << s_val_2 << val_name_2 << endl; cout << "Aby otrzymac " << cash << val_name_1 << " w kantorze musisz miec " << b_val_2 << val_name_2 << endl; switch( AskQuestion( save ) ); cin >> answear; while( answear == 'Y' || answear == 'y' ) { ofstream save( "save.txt" ); save << "Przewalutowano" << val_name_1 << " na" << val_name_2 << endl << endl << "Wymieniajac " << cash << val_name_1 << " otrzymasz " << s_val_2 << val_name_2 << endl << "Aby otrzymac " << cash << val_name_1 << " w kantorze musisz miec " << b_val_2 << val_name_2 << endl; save.close(); break; } switch( AskQuestion( backtomenu ) ); cin >> menu3; cout << endl; } } |
|
michal11 |
» 2016-06-09 22:05:55 |
|
donChev Temat założony przez niniejszego użytkownika |
» 2016-06-10 16:09:59 Jak to zastosować w tym programie? Nie wiem za bardzo jak działa ta funkcja o której napisałeś. Próbowałem coś tam powstawiać, ale bez sukcesu. |
|
mateczek |
» 2016-06-10 16:46:06 #include <iostream> #include<map> using namespace std;
int main() { map < string, double > kursy; kursy[ "usd" ] = 3.28; kursy[ "euro" ] = 4.20; cout << "za 20 euro zapłacę: " << 20 * kursy[ "euro" ] << "PLN" << endl; }
|
|
Gibas11 |
» 2016-06-10 17:18:25 Można tak wykorzystać Twoje enumy: #include <iostream> #include<map> using namespace std;
enum FACTOR_IND_T { bPLNEUR, sPLNEUR, bUSDEUR, sUSDEUR, bGBPEUR, sGBPEUR, bCHFEUR, sCHFEUR, bEURPLN, sEURPLN, bUSDPLN, sUSDPLN, bGBPPLN, sGBPPLN, bCHFPLN, sCHFPLN, bPLNUSD, sPLNUSD, bEURUSD, sEURUSD, bGBPUSD, sGBPUSD, bCHFUSD, sCHFUSD, bPLNGBP, sPLNGBP, bEURGBP, sEURGBP, bUSDGBP, sUSDGBP, bCHFGBP, sCHFGBP, bPLNCHF, sPLNCHF, bEURCHF, sEURCHF, bUSDCHF, sUSDCHF, bGBPCHF, sGBPCHF };
int main() { map < FACTOR_IND_T, double > kursy; kursy[ sPLNEUR ] = 4.67; cout << "za 20 euro zapłacę: " << 20 * kursy[ sPLNEUR ] << "PLN" << endl; }
|
|
donChev Temat założony przez niniejszego użytkownika |
» 2016-06-10 17:20:52 Nie o to mi chodziło. Prościej było zrobić definicje #define cośtam wartość;, ale nie o to biega.
Chcę połączyć tablicę z tymi nazwami walut. Zamysł jest taki, że stawiam sobie np. do pliku same wartości walut i program wie, do której waluty przyporządkować wartość. Dziękuję za pomoc wszystkim, co do tej pory pomogli :) |
|
carlosmay |
» 2016-06-10 17:30:15 Do tego też std::map<>. Pobierasz z pliku wartość kursu i szukasz jej w kontenerze. Jeśli znajdzie taką wartość, będzie ona w parze z kluczem (nazwą waluty). Można też odwrotnie: Key to kurs, a Value to nazwa waluty. |
|
donChev Temat założony przez niniejszego użytkownika |
» 2016-06-10 17:45:35 No właśnie i tu jest problem, że nie wiem jak mam przypiąć tablice z tymi wartościami. Nie wiem jak to zapisać programowo, bo wiem o co chodzi. |
|
« 1 » 2 |