Прашања / Задачи со класи

Прашања 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.The data members and functions of a class in C++ are by default
a) protected
b) private
c) public
d) public & protected

10.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

11. Create a class named 'Student' with a string variable 'name' and an integer variable 'roll_no'. Assign the value of roll_no as '2' and that of name as "John" by creating an object of the class Student.

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

Аccess Private Members

To access a private attribute, use public "get" and "set" methods:

Example

#include <iostream>
using namespace std;

class Employee {
  private:
    // Private attribute
    int salary;

  public:
    // Setter
    void setSalary(int s) {
      salary = s;
    }
    // Getter
    int getSalary() {
      return salary;
    }
};

int main() {
  Employee myObj;
  myObj.setSalary(50000);
  cout << myObj.getSalary();
  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) Класа со едноставна функција – членка без параметри

#include <iostream>
using namespace std;
class Pozdrav
{ public:
void Poraka()
{ cout << "Klasa so ednostavna funkcija so poraka!"<< endl; }
};

int main()
{ Pozdrav objPozdrav;
objPozdrav.Poraka ();
return 0; }

Излез: Klasa so ednostavna funkcija so poraka!

Креирана е класа со име Primer  која содржи функција Ispis().
Функцијата Ispis() испишува текст " Ispis na tekst na ekranot so koristenje na klasa 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 


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

// 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 

       // 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


// со конструктор 
#include <iostream>
#include <cmath>
using namespace std;
 class Pravoagolnik
       {   //private:
           double visina;            //podatocna clenka
           double sirina;           //podatocna clenka
           
           public:
              Pravoagolnik( double a,double b){
                  visina=a;
                  sirina=b;                }
          //definicija na funkcii clenki   
           double plostina()        
              {   return visina * sirina;          }
            double perimetar()     
               {   return 2*(visina + sirina);   }
            double dijagonala()    
               {   return sqrt(pow(visina,2) + pow(sirina,2));    }
 };
                   

int main()
{   double a,b;
    cout<<"Vnesi visina  "; cin>>a;
    cout<<"Vnesi sirina  "; cin>>b;
Pravoagolnik mal(a,b);
cout<< " Plostinata na pravoagolnikot e " << mal.plostina() << endl;
//funkciski povik
cout<< " Perimetarot na pravoagolnikot e " << mal.perimetar() << endl;
//funkciski povik 
cout<< " Dijagonalata na pravoagolnikot e " << mal.dijagonala() << endl;

}

4. Што ќе се прикаже по извршување на следниот код 

#include <iostream>
#include <cmath>
using namespace std;
 class Kvadrat
       {   //private:
           double strana;            //podatocna clenka
          
           public:
              void Setstrana( double a){
                  strana=a;
                         }
          //definicija na funkcii clenki   
           double plostina(double strana)        
              {   return strana * strana;          }
            double perimetar()     
               {   return 4*strana;   }
};
                   
int main()
{   double a;
Kvadrat  kvadrat;
cout<<"Vnesi strana  "; cin>>a;
кvadrat.Setstrana(a);
cout<< "Plostinata na kvadratot e " << kvadrat.plostina(a) << endl;
//funkciski povik
cout<< "Perimetarot na kvadrat e " << kvadrat.perimetar() << endl;
return 0;
}

5) Класа со податочни членки- (тоа се податоци – атрибути за сите обј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


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

#include <iostream>
#include <string>
using namespace std;
class vraboten
{
string Prezime,Ime;
int godvrab;
public:
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

Напишете класа под име 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();


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

Дефинирај класа 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();
}

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

#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 klase
        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;} 
/*void VpisiA(float aa)
{ a=aa;}
};*/

 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  

No comments: