2012. 7. 13. 14:50

// Listing 15.7
//demonstrates use of an array of pointers to functions

#include <iostream>
using namespace std;

void Square (int&,int&);
void Cube (int&, int&);
void Swap (int&, int &);
void GetVals(int&, int&);
void PrintVals(int, int);

int main()
{
        int valOne=1, valTwo=2;
        int choice, i;
        const MaxArray = 5;
        void (*pFuncArray[MaxArray])(int&, int&);

        for (i=0;i<MaxArray;i++)
        {
                cout << "(1)Change Values (2)Square (3)Cube (4)Swap: ";
                cin >> choice;
                switch (choice)
                {
                case 1:        pFuncArray[i] = GetVals; break;
                case 2:        pFuncArray[i] = Square; break;
                case 3:        pFuncArray[i] = Cube; break;
                case 4:        pFuncArray[i] = Swap; break;
                default:pFuncArray[i] = 0;
                }
        }

        for (i=0;i<MaxArray; i++)
        {
                if ( pFuncArray[i] == 0 )
                        continue;
                pFuncArray[i](valOne,valTwo);
                PrintVals(valOne,valTwo);
        }
        return 0;
}

void PrintVals(int x, int y)
{
        cout << "x: " << x << " y: " << y << endl;
}

void Square (int & rX, int & rY)
{
        rX *= rX;
        rY *= rY;
}

void Cube (int & rX, int & rY)
{
        int tmp;

        tmp = rX;
        rX *= rX;
        rX = rX * tmp;

        tmp = rY;
        rY *= rY;
        rY = rY * tmp;
}

void Swap(int & rX, int & rY)
{
        int temp;
        temp = rX;
        rX = rY;
        rY = temp;
}

void GetVals (int & rValOne, int & rValTwo)
{
        cout << "New value for ValOne: ";
        cin >> rValOne;
        cout << "New value for ValTwo: ";
        cin >> rValTwo;
}



(1)Change Values (2)Square (3)Cube (4)Swap: 1
(1)Change Values (2)Square (3)Cube (4)Swap: 2
(1)Change Values (2)Square (3)Cube (4)Swap: 3
(1)Change Values (2)Square (3)Cube (4)Swap: 4
(1)Change Values (2)Square (3)Cube (4)Swap: 2
New value for ValOne: 2
New value for ValTwo: 3
x: 2 y: 3
x: 4 y: 9
x: 64 y: 729
x: 729 y: 64
x: 531441 y: 4096

'Language > C & C Plus' 카테고리의 다른 글

[C++] typedef를 사용한 함수 포인터  (0) 2012.07.13
[C++] 함수포인터(다른 함수에 전달하기)  (0) 2012.07.13
[C++] 함수포인터(간단한 예제)  (0) 2012.07.13
[C] #pragma 정리  (0) 2012.07.13
[C] volatile int  (0) 2012.07.13
Posted by 몰라욧