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

[C++] Przydzielenie do tablicy numeracji

Ostatnio zmodyfikowano 2016-06-11 09:56
Autor Wiadomość
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 :)

C/C++
#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;
        //void load_value();
       
        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;
    }
}
P-148986
michal11
» 2016-06-09 22:05:55
P-148991
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.
P-149007
mateczek
» 2016-06-10 16:46:06
C/C++
#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;
   
}
P-149008
Gibas11
» 2016-06-10 17:18:25
Można tak wykorzystać Twoje enumy:
C/C++
#include <iostream>
#include<map>
using namespace std;

enum FACTOR_IND_T //W c++ wystarczy taki zapis, typedef nie jest potrzebny
{
    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;
   
}
P-149009
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 :)
P-149010
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.
P-149012
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.
P-149013
« 1 » 2
  Strona 1 z 2 Następna strona