Виртуальный класс

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
mr_is_Ds
Сообщения: 1
Зарегистрирован: 25 июн 2013, 04:16

Код: Выделить всё

#include<iostream>
using namespace std;

// одля начала объявим классы
class office{ //собственно класс и его имя, Базовый класс
protected: //доступно ток для наследования что и будем делать дальше, ДА и протектед паблик и так далее ->
//это спецификаторы
//объявим переменные целого типа int
    int dni;//рабочие дни
    int chasi;//соответственно рабочие часы
    int summa_za_dni;//сколько денег в день
    int oplata_za_chasi;// оплата в час
    int procent_ot_prodaj;//процент от продаж
    int summa_prodaj;//сумма продаж
};



class pochasovaj :p ublic office{ //класс для рачёта почасовой оплаты, тут у нас public наследование, тогда public члены базового класса ->
//доступны как public члены производного класса, protected члены базового класса доступны как protected члены производного класса.
public://доступно дрим функциям и объектам программы
    pochasovaj(int h, int r){chasi=h; oplata_za_chasi=r;}//в классе объявляем переменные и присваем им значания часов оплат и прочей хрени
    int dengi_calc(){
        int dengi=chasi*oplata_za_chasi; //перемножаем колличсетво часов на оплату в час
        return dengi;}
};


class shtatnij :p ublic office{ //класс для штатного служающего, про наследование суть та же что и в классе сверху
public://доступно дрим функциям и объектам программы
    shtatnij(int r, int d){summa_za_dni=r; dni=d;}//в классе объявляем переменные и присваем им значания часов оплат и прочей хрени
    int dengi_calc(){
        int dengi=summa_za_dni*dni;//деньги в день на день
        return dengi;}

};


class percent_ot_prodaj :p ublic office{ //класс для расчёта процента от продаж
public://доступно дрим функциям и объектам программы
    percent_ot_prodaj(int p, int s){procent_ot_prodaj=p; summa_prodaj=s;}//в классе объявляем переменные и присваем им значания часов оплат и прочей хрени
    int dengi_calc(){
        int dengi=(procent_ot_prodaj*summa_prodaj)/100; //процент от продаж умножаем на сумму и потом делим на сто
        return dengi;}
};
//и кашевар
int main()
{setlocale(0,"rus");
int n;
cout<<"\t\t\tЖмякай"<<'\n';
cout<<"--------------------------------------------------------"<<'\n';
cout<<"Для расчёта почасовой оплаты нажмите клавишу 1 "<<'\n';
cout<<"Для расчёта оплаты штатного служающего нажмите клавишу 2 "<<'\n';
cout<<"Для расчёта процентной оплаты нажмите клавишу 3 "<<'\n';
cout<<"--------------------------------------------------------"<<'\n';
cin>>n;
cout<<"--------------------------------------------------------"<<'\n';
  if(n==1){
  int h,r;
  cout<<"Введите количиство рабочих часов "<<'\n';
  cin>>h;cout<<"часа(ов)"<<'\n';
  cout<<"--------------------------------------------------------"<<'\n';
  cout<<"Введите оплату за час "<<'\n';
  cin>>r;cout<<"рубля(ей)"<<'\n';
  cout<<"--------------------------------------------------------"<<'\n';
  pochasovaj f(h,r);
  cout<<"\t\tЗарплата "<<f.dengi_calc()<<" рубля(ей)"<<'\n';}
    else if(n==2){
    int r,d;
    cout<<"Введите сумму за день "<<'\n';
    cin>>r;cout<<"рубля(ей)"<<'\n';
    cout<<"--------------------------------------------------------"<<'\n';
    cout<<"Введите количиство рабочих дней "<<'\n';
    cin>>d;cout<<"лня(ей)"<<'\n';
    cout<<"--------------------------------------------------------"<<'\n';
    shtatnij f(r,d);
    cout<<"\t\tЗарплата "<<f.dengi_calc()<<" рубля(ей "<<'\n';}
      else if(n==3){
      int p,s;
      cout<<"Введите процент от продаж "<<'\n';
      cin>>p;cout<<"%"<<'\n';
      cout<<"--------------------------------------------------------"<<'\n';
      cout<<"Введите сумму продаж "<<'\n';
      cin>>s;cout<<"рубля(ей)"<<'\n';
      cout<<"--------------------------------------------------------"<<'\n';
      percent_ot_prodaj f(p,s);
      cout<<"\t\tЗарплата "<<f.dengi_calc()<<" рубля(ей"<<'\n';}

cin.get();
cin.get();

    return 0;
}
ПОМОГИТЕ СОЗДАТЬ ВИРТУАЛЬНЫЙ КЛАСС
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Понятие виртуального класса в языке С++, ровно как и в других языках, которые мне известны, не существует. Предлагаю уточнить задание.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Аватара пользователя
rrrFer
Сообщения: 237
Зарегистрирован: 07 сен 2008, 14:15
Контактная информация:

Romeo
наверняка имеется ввиду "абстрактный класс"

но по коду все очень криво. Там ненужно (или неправильно вкручено) наследование.

когда ты создашь экземпляр класса pochasovaj, память выделится под все эти поля:

Код: Выделить всё

int dni;//рабочие дни
    int chasi;//соответственно рабочие часы
    int summa_za_dni;//сколько денег в день
    int oplata_za_chasi;// оплата в час
    int procent_ot_prodaj;//процент от продаж
    int summa_prodaj;//сумма продаж
Фактически используются только эти поля: chasi, oplata_za_chasi - зачем ты расходуешь память впустую?
Поля нигде не инициализируются, странно это.
Приглашаю на свой блог о программировании: pro-prof.com
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Понятно, что криво всё.

Судя по тому, что человек регнулся 25-го июня и в тот же день оставил своё единственное сообщение, он сюда уже не заглянет, так что можно даже не напрягаться пытаясь угадать, что именно он хотел от нас :)
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Аватара пользователя
somewhere
Сообщения: 1858
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

человек регнулся и в тот же день оставил своё единственное сообщение, он сюда уже не заглянет
Что-то дофига стало таких случаев. Запостил и ушел. Нужно какой нибудь механизм валидации придумать, а то иногда время тратишь - и все впустую.
It's a long way to the top if you wanna rock'n'roll
Аватара пользователя
rrrFer
Сообщения: 237
Зарегистрирован: 07 сен 2008, 14:15
Контактная информация:

Romeo

Да я видел что ты снекропостил, новых тем чето нету, я тоже решил старую поддержать )
Приглашаю на свой блог о программировании: pro-prof.com
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

somewhere писал(а):Что-то дофига стало таких случаев. Запостил и ушел. Нужно какой нибудь механизм валидации придумать, а то иногда время тратишь - и все впустую.
Ну таких случаев до зимы уже не будет, сам же понимаешь. У нас всегда наблюдаеться летнее и зимнее обострение - время сессий как-никак :)
rrrFer писал(а): Romeo
Да я видел что ты снекропостил, новых тем чето нету, я тоже решил старую поддержать )
Значит не одному мне тоскливо без этих наивных студиоусов :)
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
strsdenis
Сообщения: 3
Зарегистрирован: 13 авг 2013, 14:15

http://wm-scripts.ru
Спешите скачать новые скрипты)
strsdenis
Сообщения: 3
Зарегистрирован: 13 авг 2013, 14:15

http://wm-scripts.ru
Поспешите скачать новые скрипты!
Ответить