Класи - Едноставни задачи ( set, get, konstruktor,destruktor)

 Прашања https://www.cprogramming.com/tutorial/quiz/quiz12.html

1. What purpose do classes serve?
A. data encapsulation
B. providing a convenient way of modeling real-world objects
C. simplifying code reuse
D. all of the above

2. Which is not a protection level provided by classes in C++?
A. protected
B. hidden
C. private
D. public

3. What value must a destructor return?
A. A pointer to the class.
B. An object of the class.
C. A status code determining whether the class was destructed correctly
D. Destructors do not return a value.

4. Which of the following is a valid class declaration?
A. class A { int x; };
B. class B { }
C. public class A { }
D. object A { int x; }; 

5. Which functions will every class contain?
A. None
B. Constructor
C. Destructor
D. Both a constructor and a destructor

6. What does a class in C++ holds?
a) data
b) functions
c) both data & functions
d) arrays

7. How many specifiers are present in access specifiers in class?
a) 1
b) 2
c) 3
d) 4

8. Which is used to define the member of a class externally?
a) :
b) ::
c) #
d) !!$

9.Which of the following is a valid class declaration?
a) class A { int x; };
b) class B { }
c) public class A { }
d) object A { int x; };

10.The data members and functions of a class in C++ are by default
a) protected
b) private
c) public
d) public & protected

11.Constructors are used to ____________
a) initialize the objects
b) construct the data members
c) both initialize the objects & construct the data members
d) delete the objects

12. Изврши корекција за да се добие валиден код  
class Test
  {
   int x;
  };
   int main()
   {
  Test t;
    cout << t.x;
    return 0;
  }

13.What will be the output of the following C++ code?
  1.  #include <iostream>
  2.     using namespace std;
  3.     class rect
  4.     {
  5.         int x, y;
  6.         public:
  7.         void val (int, int);
  8.         int area ()
  9.         {
  10.             return (x * y);
  11.         }
  12.     };
  13.     void rect::val (int a, int b)
  14.     {
  15.         x = a;
  16.         y = b;
  17.     }
  18.     int main ()
  19.     {
  20.         rect rect;
  21.         rect.val (3, 4);
  22.         cout << "rect area: " << rect.area();
  23.         return 0;
  24.     }
a) rect area: 24
b) rect area: 12
c) compile error because rect is as used as class name and variable name in line #20
d) rect area: 56

14.Number of constructors a class can define is?
a) 1
b) 2
c) Any number
d) None of the mentioned


Задачи со класи 

1) Класа со едноставна функција – членка без параметри

Креирана е класа со име Primer  која содржи функција Ispis().
  
#include <iostream>
using namespace std;
class Primer     //deklaracija na klasa pod ime Primer  
{
    public:
      void Ispis()          
       {  cout<<"Ispis na tekst so koristenje na klasa Ispis\n"<<endl;     }
};
int main()
{
Primer test; // deklaracija na object so ime  test spored nacrtot vo klasata Primer
test.Ispis(); // povikuvanje na funkcija Ispis() nad  objektot  test
return 0;
}
Излез :   Ispis na tekst na ekranot so koristenje na klasa Ispis

2) Класа со функција – членка со параметри : ( функцијата е дефинирана во самата класа)

#include <iostream>
using namespace std;
class Kvadrat
{ public:
   void Poraka(int broj)
{ сout << "Kvadratot na brojot e:"<< broj*broj<<endl; }
};

int main()
{ int br;
   cout<<”Vnesete broj”;
   cin>>br;
   Kvadrat   objKvadrat;
   objKvadrat.Poraka (br);
return 0;
}
Излез: Vnesete broj 5
             Kvadratot na brojot e:25

Пример за функција дефинирана надвор од класа ( scope resolution :: operator )

#include <iostream>
using namespace std;

class Car {
public:
   int speed(int maxSpeed);
  };

int Car::speed(int maxSpeed)
 {
return maxSpeed;
}

int main() {
Car myObj;                           // Create an object of Car
cout << myObj.speed(200); // Call the method with an argument
return 0;
}

200                                                                            

#include <iostream>
using namespace std;
class Car 
{
  public:
   int maxSpeed;
   void setS(int a)
  { maxSpeed=a;    } 

        int speed(int maxSpeed);
};
int Car::speed(int maxSpeed) 
{
  return maxSpeed;
}

int main() {
int a;
cout<<"Vnesi a=";
cin>>a;
  Car myObj; // Create an object of Car
  myObj.setS(a);
  cout << myObj.speed(a); // Call the method with an argument
  return 0;
}

Vnesi a=79                            
79 


Пресметување плоштина, периметар и дијагонала на правоаголник

// site clenki se public
#include <iostream> 
#include <math.h> 
using namespace std;
class Pravoagolnik 
  public: 
  double visina; 
  double sirina; 
  double plostina() 
  { 
    return visina * sirina; 
  }
  double perimetar() 
  { 
    return 2*(visina + sirina); 
  }
  double dijagonala() 
  { 
    return sqrt(pow(visina,2) + pow(sirina,2)); 
  } 
}; 
main()
  Pravoagolnik mal; 
  mal.visina =5; 
  mal.sirina = 10; 
  cout<< " Plostinata na pravoagolnikot e " << mal.plostina() << endl; 
  cout<< " Perimetarot na pravoagolnikot e " << mal.perimetar() << endl; 
  cout<< " Dijagonalata  na pravoagolnikot e " << mal.dijagonala() << endl; 
return 0;
}

 Plostinata na pravoagolnikot e 50 
 Perimetarot na pravoagolnikot e 30  
 Dijagonalata  na pravoagolnikot e 11.1803 

Seter/ Geter  

       // primer private i public clenki 
       #include <iostream>
       #include <cmath>
       using namespace std;
       class Pravoagolnik
       {   
           double visina;            //podatocna clenka
           double sirina;           //podatocna clenka
           
           public:
              void setVisina_Sirina( double a,double b)
            {
                  visina=a;
                  sirina=b;
              }
             
            double plostina()        //definicija na funkcija clenka plostina
              {   return visina * sirina;       }
            
           double perimetar()     //definicija na funkcija clenka  perimetar
               {   return 2*(visina + sirina);  }
            
            double dijagonala()    //definicija na funkcija clenka 
               {   return sqrt(pow(visina,2) + pow(sirina,2));  }
        };

main()
{   double a,b;
    Pravoagolnik mal;     //mal e objekt od klasata Pravoagolnik
    cout<<"Vnesi visina  "; cin>>a;
    cout<<"Vnesi sirina  "; cin>>b;

//objektot ke pristapi preku funkcija-clenka za postavuvanje vrednost
//setVisina_Sirina(double a, doublr b)

mal.setVisina_Sirina(a,b);
cout<< "Plostinata na pravoagolnikot e " << mal.plostina() << endl;   
cout<< "Perimetarot na pravoagolnikot e " << mal.perimetar() << endl;
cout<< "Dijagonalata na pravoagolnikot e " << mal.dijagonala() << endl;

return 0;
}
Vnesi visina  3                       
Vnesi sirina  4                     
Plostinata na pravoagolnikot e 12    
Perimetarot na pravoagolnikot e 14   
Dijagonalata na pravoagolnikot e 5

3) Класа со податочни членки- (тоа се податоци – атрибути за сите објeкти што припаѓа на класата, кои се дефинираат внатре во класата) и функциите-членки во класата set и get

#include <iostream>
using namespace std;
class ucenik
{
//public:
string Prezime,Ime; // декларирање на податочните членки
float mat,mak,ang; // декларирање на податочните членки
// функција set за поставување на податоци внесени од тастатура во објектот
public:
void setPodatoci (string P, string I, float o1,float o2, float o3)
{ Prezime=P;
   Ime=I;
   mat=o1;
   mak=o2;
  ang=o3;
}
// функција get за добивање на податочните членки од објектот
string getPrezimeIme()
{ return Prezime+" "+Ime; }
float Prosek(float mat, float mak, float ang)
{ float p;
p=(mat+mak+ang)/3;
return p; }
}; // завршува дефинирањето на класата

int main()
{
string P,I;
float o1,o2,o3;
ucenik objucenik; // креирање на објект со име objucenik од класата ucenik
cout<<"Vnesi Prezime i ime na ucenikot"<<endl;
cin>>P>>I;
cout<<"Vnesi gi ocenkite po matematika, makedoski i angliski jazik"<<endl;
cin>>o1>>o2>>o3;
objucenik.setPodatoci(P,I,o1,o2,o3); // повикување на функцијата set
cout<<"Ucenikot "<<objucenik.getPrezimeIme()<<" ima "<<objucenik.Prosek(o1,o2,o3)<< " prosek";
return 0;
}

Izlez:
Vnesi Prezime i ime na ucenikot
Stojanoska
Ana
Vnesi gi ocenkite po matematika, makedoski i angliski jazik
3 5 5
Ucenikot  Stojanoska Ana ima 4.33333 prosek


Во примерот внесени се податоци за име и презиме . Преработи ја програмата така што за внесување на име и презиме / string so poveke zbоrovi, ќе ја користиш функцијата getline


4) Kласа со име vraboten што содржи податочни членки : Prezime (string), Ime(string), Godvrab(int) и функции членки: set, get и функција членка што ќе пресметува работен стаж на вработениот во години.

#include <iostream>
#include <string>
using namespace std;
class vraboten
{
//public:
string Prezime,Ime;
int godvrab;
void setPodatoci(string P,string I,int g)
{ Prezime=P;
Ime=I;
godvrab=g; }
string getPodatoci()
{ return Prezime+" "+Ime; }
int Staz(int godvrab)
{ int p;
p=2020-godvrab;
return p; }
};

int main()
{ string P,I;
int g;
vraboten objvraboten;
cout<<"Vnesi Prezime i ime na vraboteniot"<<endl;
cin>>P>>I;
cout<<"Vnesi ja godinata na vrabotuvanje"<<endl;
cin>>g;
objvraboten.setPodatoci(P,I,g);
cout<< “Vraboteniot “<< objvraboten.getPodatoci()<<" ima staz od "<< objvraboten.Staz(g)<<” godini”;
return 0;
}

Izlez:
Vnesi Prezime i ime na vraboteniot
Stojanoska
Ana  
Vnesi ja godinata na vrabotuvanje
2010
Vraboteniot Stojanoska Ana ima staz od 10 godini

Access Specifiers


public - members are accessible from outside the class

#include <iostream>
using namespace std;
class Rectangle
{
public:
int length;         //length of rectangle
int breadth;        //breadth of rectangle
int getArea()
{
return length * breadth;
}
};
int main()
{
Rectangle rt;
rt.length = 7;
rt.breadth = 4;
int area = rt.getArea();
cout << "Area : " << area << endl;
return 0;
}

private - members cannot be accessed (or viewed) from outside the class

#include <iostream>
using namespace std;

class Rectangle
{
int length;
public:
int breadth;
void setLength( int l );
int getArea();
};
void Rectangle::setLength( int l )
{
length = l;
}
int Rectangle::getArea()
{
return length * breadth;
}

int main()
{
Rectangle rt;
rt.setLength(7);
rt.breadth = 4;
int area = rt.getArea();
cout << "Area : " << area << endl;
return 0;
}

#include <iostream>
using namespace std;
// create a class
class Room {
   public:
    double length;
    double breadth;
    double height;
    double calculateArea() {
        return length * breadth;
    }
    double calculateVolume() {
        return length * breadth * height;
    }
};

int main() {
    // create object of Room class
    Room room1;
    // assign values to data members
    room1.length = 4.5;
    room1.breadth = 3.5;
    room1.height = 2;
    // calculate and display the area and volume of the room
    cout << "Area of Room =  " << room1.calculateArea() << endl;
    cout << "Volume of Room =  " << room1.calculateVolume() << endl;
    return 0;
}
Izlez 
Area of Room = 15.75
Volume of Room = 31.5

// Program to illustrate the working of  public and private in C++ Class
#include <iostream>
using namespace std;

class Room {
   private:
    double length;
    double breadth;
    double height;
   public:
    // function to initialize private variables
    void getData(double len, double brth, double hgt) {
        length = len;
        breadth = brth;
        height = hgt;
    }
    double calculateArea() {
        return length * breadth;
    }
    double calculateVolume() {
        return length * breadth * height;
    }
};
int main() {
    // create object of Room class
    Room room1;
    // pass the values of private variables as arguments
    room1.getData(4.5, 3.5, 2);
    cout << "Area of Room =  " << room1.calculateArea() << endl;
    cout << "Volume of Room =  " << room1.calculateVolume() << endl;
    return 0;
}
Izlez 
Area of Room = 15.75
Volume of Room = 31.5

Збир на првите n природни броеви ( n се внесува преку тастатура) 

#include <iostream>
using namespace std;

class Broevi {
private:
   int n;
public:
  void set_n(int m) {
  n = m;
   }
void fukncija(int n) {
  int suma = 0;
   for (int i = 1; i <= n; ++i)
    suma += i;
   cout<<suma;
  }
};

int main() {
Broevi broj;
int n;
cin>>n;
broj.fukncija(n);
return 0;
}

Конструктор / деструктор 

Конструктор без параметри 

#include <iostream>
using namespace std;
class apple {
    public: 
    int roll;
    apple() { // konstruktor
        roll=5;
        cout<<"Roll is "<<roll<<endl;
    }
    ~apple() { roll=5; // destuktor
        cout<<"Roll is "<<roll<<endl;
    }
};
int main()
{
   apple obj1;
    return 0;
}

Конструктор со параметри 
1.
#include <iostream>
using namespace std;
class Cube
{
   public:
   int side;
   Cube(int x)  {  
     side=x; }
  };

int main()
{ int x,y,z;
  cin>>x>>y>>z;
   Cube c1(x);
   Cube c2(y);
   Cube c3(z);
   cout << c1.side; 
   cout << c2.side;
   cout << c3.side; 
;
    return 0;
}

1'.
#include <iostream>
using namespace std;
class Cube
{
   public:
   int side;
   Cube(int x)
  {
    side=x; }
  };
 int main()
{  int x;
cout <<"Vnesi go x="; cin>>x;
   Cube c1(x);
   Cube c2(x+20);
   Cube c3(x=30);
   Cube c4(x+30);
   cout << c1.side<<endl; 
   cout << c2.side<<endl;
   cout << c3.side<<endl;
   cout << c4.side;
}
2.
#include <iostream>
using namespace std;
class Proizvod
{ public:
  Proizvod( float x , float y ) 
  { cout<<x*y; }
};

int main ()
{ float br1,br2;
cout<<"Vnesi dva broja"<<endl;
cin>>br1>>br2;
//Proizvod mojProizvod( br1 , br2 ); ili 
Proizvod ( br1 , br2 );
return 0;
}



#include <iostream>
#include <cmath>
using namespace std;

class Triangle {
private:
int a, b, c;
public:
// Constructor
Triangle(int x, int y, int z) {
a = x;
b = y;
c = z;
}
// Destructor
~Triangle() {
}
int permeter() {
return a + b + c;
}
float area() {
float s = (a + b + c) / 2;
return sqrt(s * (s - a) * (s - b) * (s - c));
}
};

int main() {
int a, b, c;
cin >> a >> b >> c;
Triangle t(a, b, c);
cout << "Area: " << t.area() << endl;
cout << "Permeter: " << t.permeter() << endl;
return 0;
}

Плоштина и волумен на коцка 

#include <iostream> 
using namespace std;
class Kocka 
{
  private:
      float a;
  public:
      Kocka(){            //konstruktor-sluzi za inicijalizacija na var klasa 
        a=10;
      }
      Kocka(float aa){   //konstruktor so parametri koi se prenesuvaat pri kreiranje klasа
        a=aa;
      }
  //~Kocka() {} // destruktor - ja cisti memorijata koja  klasata ja zafatila ( moze no ne mora da stoi )

float plostina()
{return 6*a*a;} 
float volumen()
{return a*a*a;} 
};
int main() {
Kocka koc;
cout<<"Plostina na kocka " <<koc.plostina()<< endl; 
cout<<"Volumen na kocka " <<koc.volumen()<< endl;

float aa; cout<<"\nVpisi a: "; cin>> aa;
Kocka koc2(aa);
cout<<"Plostina na kocka " <<koc2.plostina()<< endl;
cout<<"Volumen na kocka " <<koc2.volumen()<< endl;
return 0;
 }
Plostina na kocka 600
Volumen na kocka 1000   
Vpisi a: 2      
Plostina na kocka 24 
Volumen na kocka 8  

Напишете класа под име Registracija, која претставува регистрација на автомобили. Класата нека има две јавни варијабли од тип  int, со имиња  reg1 i reg2, кои содржат два трицифрени броја кои ја чинат регистрацијата.

На пример ако reg1=143, a reg2=186, тогаш регистрацијата е  “143-186”.

Класата нека има  default konstruktor кој и  reg1 и reg2 ги иницијализира на вредност  100. Во главната програма декларирајте објект со име  r од класата  Registracija, чија вредност ќе биде  234-567”. Испишете ја регистацијата зчувана во објектот r, коректно форматирана .



#include <iostream>
using namespace std;
class Registracija
{ public: int reg1; int reg2;
Registracija();
};

//definiranje na konstruktor
Registracija::Registracija()
{ reg1 = 100; reg2 = 100; }

main()
{ Registracija r;
// javnite varijabli na klasata se postavuvaat na odredenite vrednosti
r.reg1 = 234; r.reg2 = 567;
cout << r.reg1 << "-" << r.reg2 << endl; // ispis registracija
}

Извршете измена на класата  Registracija така што  reg1 и reg2 ќе бидат приватни варијабли. Креирајте две нови функции :

- функција  Postavi која ги поставува вредностите на регистрацијата. Прототипот нека е : void Postavi( int temp1, int temp2); Функцијата Postavi нека податочните членки reg1 и reg2 ги постави на вредности  temp1 и temp2, доколку  temp1 и temp2 се позитивни трицифрени броеви. Инаку нека не ги менува  reg1 i reg2.

-  функција Ispisi која ја испишува регистрацијата на екран  reg1 - reg2. Прототипот нека е : void Ispisi();


Дефинирај класа podatok која има два реални private податоци x , y. Во public има ф-јa srednaV (inline – vo klasata, пресметува средна вредност на x, y и го печати резултатот ) која нема повратна вредност и нема параметри и конструктор со два реални парамeтри а , b (на податоците x и y им доделува вредности a и b) Дефинирај ги ф-циите, при што конструкторот има подразбирливи вредности 0.0
Во главната програма: Декларирај објект Р на класата podatok предавајќи му вредности 10 и 5 . За објектот P повикај ја ф-јата srednaV



Дефинирај класа slozPodatoci која има tri private податоци x - целоброен , y- реален , z - знаковен. Во public има ф-јa pisiPod ( ги прикажува x, y и z ) која нема повратна вредност и нема параметри и конструктор со три парамeтри а целоброен , b реален c знаковен ( на податокот x – доделува вредност a, на податокот y – доделува вредност b, на податокот z – доделува вредност c ) Дефинирај ги ф-циите.
Во главната програма: Декларирај објект Р на класата slozPodatoci . За објектот P повикај ја ф-јата pisiPod

#include<iostream>
#include<cmath>
using namespace std;
class slozPodatoci
{
int x;
double y;
char z;
public:
void pisiPod();
slozPodatoci(int a, double b, char z);
};
void slozPodatoci::pisiPod()
{
cout<<"Podatocite se "<<x<<" "<<y<<" "<<z<<endl;
}
 slozPodatoci::slozPodatoci(int a, double b, char c)
{
x=a;
y=b;
z=c;
}
main()
{
 int x1; 
double y1; 
char z1;
cout <<"Vnesi x="; cin>>x1;
cout <<"Vnesi y="; cin>>y1;
cout <<"Vnesi z="; cin>>z1;
slozPodatoci P(x1,y1,z1);
P.pisiPod();
}

 

No comments: