Программалау оқулық Алматы, 012 Қазақстан Республикасы Білім жəне ғылым министрлігінің «Оқулық»


health < 30 болғанда орын алады делік). Қысқаша болуы үшін кластың тек қажетті əдістері  ғана көрсетілген: #include



Pdf көрінісі
бет344/466
Дата20.07.2022
өлшемі3,66 Mb.
#37798
түріПрограмма
1   ...   340   341   342   343   344   345   346   347   ...   466
Байланысты:
pavlovskaia-jogargy-dengeili

health < 30
болғанда орын алады делік). Қысқаша болуы үшін кластың тек қажетті əдістері 
ғана көрсетілген:
#include
#include
#include
#include
using namespace std;
enum color {red, green, blue};
class monstr{
 
int health, ammo;
 
color skin; 
 
char *name; 
 public:
 
monstr(int he = 100, int am = 10); 
monstr(color sk); 
 
monstr(char * nam); 
 
monstr(const monstr &M); 
 
~monstr() {delete [] name;} 
 
operator int(){return health;} 
 
int get_health(){;return health;} 
 
friend ostream&
 
operator <<(ostream & out, monstr & m){ 
 
 
return out << "monstr: " << " ammo = "

<< m.ammo << " health = " 

<< m.health <
};


370
monstr::monstr(int he, int am):
 
health (he), ammo (am), skin (red), name (0){}
monstr::monstr(const monstr &M){
 
if (M.name){ name = new char [strlen(M.name) + 1];
 
strcpy(name, M.name);} 
 
else name = 0;
 
health = M.health; ammo = M.ammo; skin = M.skin;
}
monstr::monstr(color sk){ 
 switch 
(sk){ 
 
case red : 
health = 1; ammo = 10; skin = red; name = 0; break; 
 case 
green: 
health = 2; ammo = 20; skin = green; name = 0; break; 
 case 
blue: 
health = 3; ammo = 40; skin = blue; name = 0; break; 
}}
monstr::monstr(char * nam){
 
name = new char [strlen(nam) + 1]; strcpy(name, nam); 
 
health = 200; ammo = 10; skin = red;
}
bool less_health (monstr m1, monstr m2){
 
return m1.get_health() < m2.get_health() ;}
int main(){
 
vector m; 
 
monstr M (10, 30); 
 m.push_back(M);
 m.push_back(monstr("Vasia")); 
m.push_back(monstr(red)); 
 
cout << " MONSTRY:" << endl;
 
for (int i = 0; i
 
cout << endl;
 
cout << " COUNT_IF: ";
 
cout << count_if(m.begin(), m.end(), 
 
 
bind2nd(ptr_fun(less_health), 20));
 return 
0;
}


371
Мысалда берілген 
less_health
бульдік функциясы өзіне берілген 
monstr
класынаң екі аргументінің 
health
өрістерін салыстырады. 
health
өрісін тұрақтымен салыстыру үшін онымен функцияның екінші аргументін 
байланыстыру керек. 
bind2nd
байланыстырғышы бірінші аргумент ретінде 
ptr_fun
адаптерінің көмегімен қалыптастырылатын функционалдық 
объектіні қабылдауы керек. Программа жұмысының нəтижесі (ауру монстрлар 
саны – 2):
MONSTRY:
monstr: ammo = 30 health = 10 
monstr: ammo = 10 health = 200
monstr: ammo = 10 health = 1


Достарыңызбен бөлісу:
1   ...   340   341   342   343   344   345   346   347   ...   466




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет