Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C++] Конструктор 
:(
    Опции темы
chornik
Дата 28.3.2007, 08:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 4.12.2006

Репутация: нет
Всего: нет



Помогите с лабой... smile 
1. Создайте несколько классов, в конструкторах которых будет выводиться сообщение "конструктор класса такого-то", а в деструкторе - "это деструктор класса такого-то".
2. Определить оптимальный подбор банкнот для выдачи задаваемой суммы в рублях для банкомата (купюры -1000, 5000, 10000, 20000, 50000). Использование конструкторов и деструкторов обязательно.
PM MAIL   Вверх
Fazil6
Дата 28.3.2007, 09:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: нет
Всего: 60



Код

#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;
}


Это сообщение отредактировал(а) Alexeis - 30.3.2007, 09:45
PM MAIL   Вверх
GIK
Дата 28.3.2007, 09:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


Профиль
Группа: Участник
Сообщений: 985
Регистрация: 3.6.2005
Где: я только не небыв ал

Репутация: 4
Всего: 14



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();

}



--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
Fazil6
Дата 28.3.2007, 09:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: нет
Всего: 60



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) и все видно после выхода.

PM MAIL   Вверх
chornik
Дата 31.3.2007, 00:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 4.12.2006

Репутация: нет
Всего: нет



Fazil6,  так а где во второй задаче конструктор или деструктор?
PM MAIL   Вверх
Rockie
Дата 31.3.2007, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 23.4.2006

Репутация: 13
Всего: 31



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




--------------------
Чтобы иметь большой гардероб - надо иметь большой гардероб.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0966 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.