Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Boskos
4 / 4 / 0
Регистрация: 03.02.2010
Сообщений: 65
#1

ООП - C++

04.02.2010, 17:32. Просмотров 963. Ответов 6
Метки нет (Все метки)

помогите переделать программу в ООП,
Создать класс, описывающий следующие понятие
рабочий! фамилия,стаж,часовая зароботная плата, колличество отработаных часов. Наити: 1) Расчет зароботной платы за отработанное время 2) в зависимости от стажа начисляется премия(при стаже до 1 года 0%, до 3 лет 5%, до 5 лет 8%, свыше10 лет 15%), вывод информации о рабочем на экран!



вот эта программа

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include<stdio.h>
#include<string.h>
typedef struct {
    char fio[40];
    int st;
    int zar;
    int kol; } rab;
 
 
    void main()
    { rab a;
    rab wwod(); // îáüÿâëåГ*ГЁГҐ ГґГіГ*êöèè
    void print(rab);
    void ras (rab);
    int raszar (rab);
a=wwod();// âûçîâ ГґГіГ*êöèè
print (a);
ras (a);
printf("Premial'nie = %d\n",raszar (a));
    }
 
 
    rab wwod() // îïðåäåëåГ*ГЁГҐ ГґГіГ*êöèè
    { rab c;
printf("fio   :");
scanf("%s",&c.fio);
printf("st   :");
scanf("%d",&c.st);
printf("zar   :");
scanf("%d",&c.zar);
printf("kol   :");
scanf("%d",&c.kol);
return c; }
 
    void print(rab c)
    {
        printf("%s\n",c.fio);
        printf("%d\n",c.st);
        printf("%d\n",c.zar);
        printf("%d\n",c.kol);
    }
 
 
    void ras (rab s){
        int z;
        z=s.kol*s.zar;
        printf("Zarobotnaya plata = %d\n",z);
    }
 
    int raszar (rab s)
    { 
        if(s.st<1)
                return s.zar;
        if(s.st>=1 && s.st<3)
                return(s.zar + (s.zar/100)*5);
        if(s.st>=3 && s.st<5)
                return(s.zar + (s.zar/100)*8);
        if(s.st>10)
                return(s.zar + (s.zar/100)*15);
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.02.2010, 17:32
Здравствуйте! Я подобрал для вас темы с ответами на вопрос ООП (C++):

ООП - C++
1) Для класса символьной строки определить отношение лексикографического порядка, перегрузив с помощью дружественной функции операцию «&lt;» ...

ООП - C++
Создать класс Vegetable, содержащий следующие элементы: - поле «вес» float Mass; - поле «зрелость» int Ripeness; - метод получения...

C++ ООП - C++
Просьба дать какую-нибудь интересную программу, дабы теста на курс ООП. Чтобы не из книжки, а реально придуманная про программистом, или...

ООП - C++
Привет всем, народ дайте какую-нибудь интересную задачку на ООП, (однообразные задачи из учебников достали уже), чтоб она затрагивала как...

ООП - C++
Господа у меня возникло 2 вопроса по ООП т.к. только не давно начал его изучать . 1) Не как не могу понять для чего умные люди его...

ООП на С++ - C++
Помогите пожалуйста!! Не понимаю как это сделать(( Создать программу с классом Student порождающий обьекты - данные об студентах...

6
novi4ok
551 / 504 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
04.02.2010, 17:57 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class CWorker {
public:
 CWorker (const char *pName, int stazh, double chas_zarpl, double chasy)
: m_Stazh (stazh)
, m_ChasZrpl (char_zarpl
, m_Chasy (chasy)
 { 
    if (::strlen (pName > sizeof (m_arrName){
        ::memcpy (m_arrName, pName, sizeof (m_arrName)-1;
        *(m_arrName+sizeof (m_arrName)-1) = '\0';
    } else {
        ::strcpy (m_pName, pName);
    }
}
 
 ~CWorker();
 bool getName (char *pNameBuf, int bufsize, int *pRequiredSize);
 int getStazh () { return m_Stazh; }
// аналогично для остальных членов, + сами члены определить как private
};
а потом где-то определить этого рабочего и посчитать его зарплату, используя его getters
0
SerЁga
32 / 32 / 4
Регистрация: 18.08.2009
Сообщений: 93
04.02.2010, 18:24 #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include<iostream>
using namespace std;
class rab
{
    char fio[40];
    int st;
    int zar;
    int kol;
    int zarab_plata;
    int premiya;
public:
    rab() //контруктор
    {
        st=0;zar=0;kol=0;zarab_plata=0;premiya=0;   
    }
    rab(rab &obj)//конструктор копирования
    {
        strcpy(fio,obj.fio);
        st=obj.st;
        zar=obj.zar;
        kol=obj.kol;
        zarab_plata=obj.zarab_plata;
        premiya=obj.premiya;
    }
    void wwod()
    {
        cout<<"fio   :"<<endl;
        cin.getline(fio,40);
        cout<<"st   :"<<endl;
        cin>>st;
        cout<<"zar   :"<<endl;
        cin>>zar;
        cout<<"kol   :"<<endl;
        cin>>kol;
    }
 
    void print()
    {
        cout<<fio<<endl;
        cout<<st<<endl;
        cout<<zar<<endl;
        cout<<kol<<endl;
        cout<<zarab_plata<<endl;
        cout<<premiya<<endl;
    }
 
    void set_zpl()
    {
        zarab_plata=zar*kol;
    }
    void set_premiya() 
    {
        if(st<1)
             premiya=zar;
        if(st>=1 && st<3)
            premiya= (zar + (zar/100)*5);
        if(st>=3 && st<5)
            premiya= (zar + (zar/100)*8);
        if(st>10)
            premiya=(zar + (zar/100)*15);
    }
};
 
    void main()
    { 
      rab a;
      a.wwod();
      a.set_zpl();
      a.set_premiya();
      a.print();    
    }
Тут может быть много вариантов, я так написал.
1
novi4ok
551 / 504 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
04.02.2010, 18:56 #4
SerЁga, ты прав, вариантов много. и то, что твой класс не только данные прячет, а еще и что-то полезное делает, хорошо в общем. но чем ближе наша модель по поведению в нашем ООП к реальным объектам, тем более оправдано само ООП. а твой рабочий считает себе зарплату. оправдано ли в этот класс помещать эту ответственность? явно нет.
второе - если уже пишешь ф-ю print(), то никогда, даже если вывод - только в целях отладки, не пиши так как ты написал: столбик чисел. выводи что они обозначают - сэкономишь массу времени и нервов.
0
Boskos
4 / 4 / 0
Регистрация: 03.02.2010
Сообщений: 65
04.02.2010, 20:31  [ТС] #5
Цитата Сообщение от SerЁga Посмотреть сообщение
st=0;zar=0;kol=0;zarab_plata=0;premiya=0;
для чего это приравнивать к нулю?
0
SerЁga
32 / 32 / 4
Регистрация: 18.08.2009
Сообщений: 93
05.02.2010, 13:44 #6
При объявлении
rab a
выполнится конструктор по умолчанию.В данном случае все поля класса обнуляются.
Без этого можно обойтись, но при создании объекта поля класса будут содержать просто мусор.
На счёт того что заработная плата не должна содержаться в классе, можно создать friend ф-цию которая будет считать зарплату конкретного рабочего. Вариантов реализации масса.
0
novi4ok
551 / 504 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
05.02.2010, 14:07 #7
Цитата Сообщение от SerЁga Посмотреть сообщение
При объявлении
rab a
выполнится конструктор по умолчанию.В данном случае все поля класса обнуляются.
Без этого можно обойтись, но при создании объекта поля класса будут содержать просто мусор.
правильно. оставлять переменные неинициализированными - разгильдяйство. но делать это лучше так:

C++
1
2
3
4
5
6
7
8
        rab() //контруктор
        : st (0)
        , zar (0)
        , kol (0)
        , zarab_plata (0)
        , premiya (0)
        {
        }
0
05.02.2010, 14:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.02.2010, 14:07
Привет! Вот еще темы с ответами:

ООП - C++
Прочитал в википедии про ООП, но так толком и не понял. Подскажите, чем является создание программ с интерфейсом, допустим как калькулятор...

по ООП . - C++
Помогите пожалуйтса с решением задач ! на С++ 1.Дана неубывающая последовательность действительных чисел. Вставить в неё...

ООП - C++
Всем привет! Если можно, не могли бы вы ответить на пару вопросов по ООП, а то что-то не могу понять. Вопросы: Зачем используются такие...

ооп - C++
Нада книгу по ооп, такую что бы было все разжевано максимально. Так, что бы я за минимум времени и усилий разобрался.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru