64,646
社区成员
发帖
与我相关
我的任务
分享
#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 int maxArray=5;
void(*pFuncArray[maxArray])(int&,int&);
for(i=0;i<maxArray;i++)
{
std::cout<<"(0) Quit (1) Change Values "<< "(2) Square(3) Cube(4) Swap:";
std::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;
default:
pFuncArray[i]=0;
}
}
for(i=0;i<maxArray;i++)
{
pFuncArray[i](valOne,valTwo);
printVals(valOne,valTwo);
}
return 0;
}
void printVals(int x,int y)
{
std::cout<<"x:"<<x<<" y:"<<y<<"\n";
}
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)
{
std::cout<<"CCCC"<<"\n";
int temp;
temp=rX;
rX=rY;
rY=temp;
}
void getVals(int &rValone,int &rValTwo)
{
std::cout<<"AAAAAAAAAAAAA:";
std::cin>>rValone;
std::cout<<"BBBBBBBBBBBBB:";
std::cin>>rValTwo;
}
#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 int maxArray=5;
void(*pFuncArray[maxArray])(int&,int&);
for(i=0;i<maxArray;i++)
{
std::cout<<"(0) Quit (1) Change Values "<< "(2) Square(3) Cube(4) Swap:";
std::cin>>choice;
switch(choice)
{
case 1:
pFuncArray[1]=getVals;
break;
case 2:
pFuncArray[2]=square;
break;
case 3:
pFuncArray[3]=cube;
break;
case 4:
pFuncArray[4]=swap;
default:
pFuncArray[0]=0;
}
}
for(i=0;i<maxArray;i++)
{
if (pFuncArray[i])
pFuncArray[i](valOne,valTwo);
printVals(valOne,valTwo);
}
return 0;
}
void printVals(int x,int y)
{
std::cout<<"x:"<<x<<" y:"<<y<<"\n";
}
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)
{
std::cout<<"CCCC"<<"\n";
int temp;
temp=rX;
rX=rY;
rY=temp;
}
void getVals(int &rValone,int &rValTwo)
{
std::cout<<"AAAAAAAAAAAAA:";
std::cin>>rValone;
std::cout<<"BBBBBBBBBBBBB:";
std::cin>>rValTwo;
}
参考一下吧
注意最后一个default函数指针指向NULL。因此在调用时需要做一下判断。
感觉没必要用for和switch case给函数指针数组赋值。
直接定义成这样就可以,因为函数指针指向那个函数事先需要确定了。
int main()
{
int valOne=1 ,valTwo=2;
int choice,i;
const int maxArray=5;
void(*pFuncArray[maxArray])(int&,int&);
#if 1
i = 0;
pFuncArray[i++] = getVals;
pFuncArray[i++] = square;
pFuncArray[i++] = cube;
pFuncArray[i++] = swap;
pFuncArray[i] = NULL;
#else
for(i=0;i<maxArray;i++)
{
std::cout<<"(0) Quit (1) Change Values "<< "(2) Square(3) Cube(4) Swap:";
std::cin>>choice;
switch(choice)
{
case 1:
pFuncArray[1]=getVals;
break;
case 2:
pFuncArray[2]=square;
break;
case 3:
pFuncArray[3]=cube;
break;
case 4:
pFuncArray[4]=swap;
default:
pFuncArray[0]=0;
}
}
#endif
for(i=0;i<maxArray;i++)
{
if (pFuncArray[i]) {
pFuncArray[i](valOne,valTwo);
printVals(valOne,valTwo);
}
}
return 0;
}