Форум программистов, компьютерный форум CyberForum.ru

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

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

ООП - C++

04.02.2010, 17:32. Просмотров 947. Ответов 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);
    }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.02.2010, 17:32     ООП
Посмотрите здесь:

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

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

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

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

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

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

ООП - C++
#pragma hdrstop #pragma argsused //#include &quot;Student.hpp&quot; //#include &quot;Prof.hpp&quot; //#include &quot;Personne.hpp&quot; #include &lt;conio.h&gt; ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
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();    
    }
Тут может быть много вариантов, я так написал.
novi4ok
551 / 504 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
04.02.2010, 18:56     ООП #4
SerЁga, ты прав, вариантов много. и то, что твой класс не только данные прячет, а еще и что-то полезное делает, хорошо в общем. но чем ближе наша модель по поведению в нашем ООП к реальным объектам, тем более оправдано само ООП. а твой рабочий считает себе зарплату. оправдано ли в этот класс помещать эту ответственность? явно нет.
второе - если уже пишешь ф-ю print(), то никогда, даже если вывод - только в целях отладки, не пиши так как ты написал: столбик чисел. выводи что они обозначают - сэкономишь массу времени и нервов.
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;
для чего это приравнивать к нулю?
SerЁga
32 / 32 / 4
Регистрация: 18.08.2009
Сообщений: 93
05.02.2010, 13:44     ООП #6
При объявлении
rab a
выполнится конструктор по умолчанию.В данном случае все поля класса обнуляются.
Без этого можно обойтись, но при создании объекта поля класса будут содержать просто мусор.
На счёт того что заработная плата не должна содержаться в классе, можно создать friend ф-цию которая будет считать зарплату конкретного рабочего. Вариантов реализации масса.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.02.2010, 14:07     ООП
Еще ссылки по теме:

Начало ООП - C++
Привет всем! У меня началось изучение ООП и соответственно пошли классы. Первое задание - постpоить класс для pаботы с массивом. Класс...

ООП в DOS - C++
Добрый день. Я новичок, недавно начал изучать c++ и задался таким вопрос, в какой среде разработки можно создавать программы с GUI для DOS...

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

ООП пример - C++
Доброго времени суток. Тут отыскался один пример в конспекте. Записал на лекции спустя рукава. Хочу восстановить. Где-то что-то...

Тест по ООП - C++
Помогите, пожалуйста, с текстом по С++!!! Тема 13. Создание объектов класса 13.1 Пусть описан класс class ClassA {int a; public:...


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

Или воспользуйтесь поиском по форуму:
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)
        {
        }
Yandex
Объявления
05.02.2010, 14:07     ООП
Ответ Создать тему
Опции темы

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