Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C++] Конструктор


Автор: chornik 28.3.2007, 08:47
Помогите с лабой... smile 
1. Создайте несколько классов, в конструкторах которых будет выводиться сообщение "конструктор класса такого-то", а в деструкторе - "это деструктор класса такого-то".
2. Определить оптимальный подбор банкнот для выдачи задаваемой суммы в рублях для банкомата (купюры -1000, 5000, 10000, 20000, 50000). Использование конструкторов и деструкторов обязательно.

Автор: Fazil6 28.3.2007, 09:07
Код

#include <iostream>

class A{
public:
    A()
    {
        std::cout << "Constructor A\n";
    }
    ~A()
    {
        std::cout << "Destructor A\n";
    }
};

class B{
public:
    B()
    {
        std::cout << "Constructor B\n";
    }
    ~B()
    {
        std::cout << "Destructor B\n";
    }
};

class C : public B
{
public:
    C()
    {
        std::cout << "Constructor C\n";
    }
    ~C()
    {
        std::cout << "Destructor C\n";
    }
};

int main()
{
    B b;
    A a;
    C c;
    return 0;
}

Автор: GIK 28.3.2007, 09:34
Fazil6, пользователю не будет видно, что деструкторы вызываются smile

Добавлено через 4 минуты и 20 секунд
Вот еще примерчик, конструкторы с параметрами, думаю будет тоже интересно smile
Код

#include<conio>
#include<iostream>

using namespace std;


class A{
int y;
public:
  A();
  A(int o, int r);
  A(int o);


};

class B{
int k;
public:
  B();
  B(int i, int r);

};

 A:: A(){
  cout<<"Konstruktor iz klassa A, bez parametrov"<<endl;
 };
 A:: A(int o, int r){
 cout<<"Konstruktor iz klassa A, s parametrami"<<endl;
 }
 A:: A(int o){
 cout<<"Osobiy konstruktor iz klassa A"<<endl;
 y=o;
 cout<<"Znachenie y="<<y<<endl;

 }

 B:: B(){
 cout<<"Konstruktor iz klassa B bez parametrov"<<endl;
 };
 B:: B(int i, int j){
 cout<<"Konstruktor iz klassa B s parametrami"<<endl;
 k=i*j;
 };


void main()
{
  A a ;           
  A a2=A(12, 21); 
  A a3 = 21;      //Особый случай, y= 21; 

  B b;
  B b2=B(12,21);


getch();

}

Автор: Fazil6 28.3.2007, 09:49
2
Код

#include <string>
#include <sstream>
#include <vector>
#include <iostream>



const int Cup[] = {50000,20000,10000,5000,1000};
class Calc
{
public:
    Calc(int summ) : summa(summ) 
    {    }

    void Calculate();
    std::string Print();

private:
    int summa;
    std::vector<int> res;

    void CheckCup(int &s, int cup);
};


// вычисление количества конкретных купюр
void Calc::CheckCup(int &s, int cup)
{
    int x = s / cup;
    if(x)
    {
        for(int i = 0 ; i < x ; ++i)
        {
            res.push_back(cup);
            s -= cup ;
        }
    }
}
// вывод результата в строку
std::string Calc::Print()
{
    std::ostringstream s;
    std::vector<int>::iterator i(res.begin());
    while(i != res.end())
    {
        s << *i ;
        ++i;
        if(i != res.end()) s << " , "  ;
    }
    return s.str();
}

// подбор купюр
void Calc::Calculate()
{
    for(int i = 0 ; i < sizeof(Cup)/sizeof(int); ++i)
    {
        CheckCup(summa, Cup[i]);
    }
}
//---------------------------------------------------------
int main()
{
    int summ = 0;
    std::cout << "Input summ : ";
    std::cin >> summ; 

    if((!summ) || (summ % 1000))
    {
        std::cout << "\nSumm is not corrcet. Exit...\n";
        return 1;
    }

    Calc c(summ);
    c.Calculate();
    std::cout << c.Print() << "\n";
    
    return 0;
}




Цитата(GIK @  28.3.2007,  09:34 Найти цитируемый пост)
Fazil6, пользователю не будет видно, что деструкторы вызываются

не надо только , все там видно. Твой пример ничем не отличается. Твои деструкторы все равно после getch(); вызовутся.
Запускайте в far или в VS (ctrl+F5) и все видно после выхода.

Автор: chornik 31.3.2007, 00:14
Fazil6,  так а где во второй задаче конструктор или деструктор?

Автор: Rockie 31.3.2007, 10:37
chornik, во второй задаче используется вектор из библиотеки STL. Удалять память вручную не обязательно, это будет сделано средствами библиотеки.


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)