Вказівники на вказівники
В наступній програмі 20.20 ми розглянемо масив вказівників на об’єкти і покажемо, як можна просортувати ці вказівники, опираючись на дані, що містяться в об’єктах. Тут з’являється ідея вказівників на вказівники.
Завдання програми 20.20: створити масив вказівників на об’єкти класу person. Програма включає функції order() та bsort() для сортування групи об’єктів класу person, виходячи з алфавітного порядку імен.
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
#include<bios.h>
#include<string.h>
class person
{protected:
char* name;
public:
void setname()
{cout<<”Name=”;cin>>name;}
void printname()
{cout<<endl<<name;}
char* getname()
{return name;}
};
///////////////
int main()
{clrscr();
void bsort(person**,int);//prototyp
person* persPtr[100];
int n=0;
char choice;
do
{persPtr[n]=new person;
persPtr[n]->setname();
n++;
cout<<”Continue(y/n)?”;
cin>>choice;
} while(choice==’y’);
cout<<”\nНесортований список:”;
for(int j=0;j<n;j++)
persPtr[j]->printname();
bsort(persPtr,n);
cout<<”\nСортований список:”;
for(j=0;j<n;j++)
persPtr[j]->printname();
cout<<endl;
bioskey(0);
return 0;
}
//////////
void bsort(person** pp,int n)
{void order(person**,person**);
int j,k;
for(j=0;j<n-1;j++)
for(k=j+1;k<n;k++)
order(pp+j,pp+k);
}
//////////
void order(person** pp1,person** pp2)
{if((*pp1)->getname()>(*pp2)->getname())
{person* tempptr=*pp1;
*pp1=*pp2;
*pp2=tempptr;
}
}
Програма 20.20
Дата добавления: 2015-08-26; просмотров: 614;