C++ primer plus 第6章疑问,该如何解决

C++ primer plus 第6章疑问
#include <iostream>

const int MAX=20;
struct contribute{
char name[MAX];
double money;
};
int main()
{
using namespace std;
cout<<"输入捐献者数目:";
int num;
cin>>num;
cin.get();
contribute *p=new contribute[num];
int i;
for(i=0;i<num;i++)
{
cout<<"捐款人#"<<i+1<<endl;
cout<<"输入捐款者姓名:";
cin.get(p[i].name,MAX);
cout<<"输入捐款数额: ";
cin>>p[i].money;
cin.get();
//cout<<p[i].name<<" , "<<p[i].money<<endl;
}

cout<<"Grand Paatrons: "<<endl;
int count=0;
for(i=0;i<num;i++)
{
while(p[i].money>=10000){
cout<<p[i].name<<" , "<<p[i].money<<endl;
count++;
break;
}
}
if(count==0)
cout<<"none"<<endl;
count=0;
cout<<endl;
cout<<"Patrons: "<<endl;
for(i=0;i<num;i++)
{
while(p[i].money<10000){
cout<<p[i].name<<" , "<<p[i].money<<endl;
count++;
break;
}
}
if(count==0)
cout<<"none"<<endl;
delete p;
return 0;
}

这是第六章课后练习的第六题~~~上面这个运行之后是没问题了····p[i].XXXX改成(*p)指针那种,修改后输出错误,可能是没遍历,请问下应该如何修改?

------解决方案--------------------
具体问题我没看,你贴了那么多的代码,p[i].XXXX假如你可以成功的话改成(*p)也应该可以成功
因为p[i]在底层也是指针的形式,具体的方法是
p[i].xxxx=(*(p+i))->xxxx