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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Виртуальная функция 
:(
    Опции темы
FightInGlory
Дата 2.11.2009, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Дана задача:

 У клиента есть бассейн. Бассейн должна окружать бетонная дорожка и вся территория бассейна должна быть ограждена. Клиент хочет определить затраты, связанные с постройкой дорожки вокруг бассейна и сооружением ограды бассейна.
Клиент задает:
- стоимость бетонирования($0.5 за кв.м.)
- стоимость ограды($3.5 за кв.м.)
- ширину дорожки
- радиус бассейна.

использовать виртуальные функции

Я написал, но не в виде виртуальной функции, помогите сделать виртуальную. Желательно объяснить как да чего. или дайте линк, на что-то подобное. 
Мои деревянные попытки чет сделать, ниже.

Код

float radius, shirina;
float p = 3.14, s1,s2,s3,p1, dorojka, ograda;

cout << "Vvedite radius kruga v metrah: ";
cin >> radius;
cout << "Vvedite 6irinu v metrah: ";
cin >> shirina;

s1 = p*radius*radius;
s2 = p*(shirina+radius)*(shirina+radius);
s3 = s2-s1;
p1 = 2*p*(shirina+radius);

ograda = p1*3.5;
dorojka = s3*0.5;

cout << "plo6ad': " << s3 << endl;
cout << dorojka << endl;
cout << "perimetr: "<< p1 << endl;
cout << ograda << endl;


Код

float radius, shirina;
float p = 3.14, s1, s2, s3, p1, dorojka, ograda;

class Vvod
{
   public:Vvod()
   {
      cout << "Vvedite radius kruga v metrah: ";
      cin >> radius;
      cout << "Vvedite 6irinu v metrah: ";
      cin >> shirina;
   }
}

class podschet
{
   public:podchet()
   {
       s1 = p*radius*radius;
       s2 = p*(shirina+radius)*(shirina+radius);
       s3 = s2-s1;
       p1 = 2*p*(shirina+radius);

       ograda = p1*3.5;
       dorojka = s3*0.5;
   }
}

class Vyvod:public podscjet:public Vvod
{
   public:Vyvod()
   {
        cout << "plo6ad': " << s3 << endl;
        cout << dorojka << endl;
        cout << "perimetr: "<< p1 << endl;
        cout << ograda << endl;
   }
}

PM MAIL   Вверх
bsa
Дата 2.11.2009, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Сделай класс "изделие", у которого будет виртуальный метод cost, который будет возвращать цену. Затем сделай наследников Ograda и Dorozhka, которые подменят этот метод. Результат можно будет посчитать так: ograda.cost() + dorozhka.cost().
PM   Вверх
FightInGlory
Дата 2.11.2009, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Если тебя не затруднит, приведи какой-то пример. Даже очень простой. Я много че листал и читал. Никак не разберусь.
PM MAIL   Вверх
Anikmar
Дата 2.11.2009, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(FightInGlory @  2.11.2009,  18:12 Найти цитируемый пост)
- стоимость ограды($3.5 за кв.м.)

Тогда нужна еще высота ограды? или там за погонный метр
PM MAIL ICQ   Вверх
FightInGlory
Дата 2.11.2009, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Как я понял, погонный метр)))
PM MAIL   Вверх
Anikmar
Дата 3.11.2009, 00:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(FightInGlory @  2.11.2009,  20:14 Найти цитируемый пост)
Как я понял, погонный метр))) 

Странно...

В общем примерно так можно действовать (набросок)

Код

#include <cstdlib>
#include <iostream>

using namespace std;

class BaseUnit
{
public:
    float GetCost(void) { return GetCount() * Price; };
    virtual float GetCount(void);
    float Radius;        
    float Price;
};

class Road : public BaseUnit
{
public:
    virtual float GetCount(void) { return ... // Вернуть площадь дорожки };
    float Width;
};

class Wall : public BaseUnit
{
    virtual float GetCount(void) { return ... // Вернуть длину ограды };
};


int main(int argc, char *argv[])
{
    Road oRoad;
    Wall oWall;
    
    // вводим исходные данные    
    
    // Стоимость ограды - oWall.GetCost();
    // Стоимость дорожки = oRoad.GetCost();
    
    system("PAUSE");
    return EXIT_SUCCESS;
}

PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


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

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


 




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


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

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