Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.01.2010, 09:30   #1
Mosya
 
Регистрация: 20.01.2010
Сообщений: 8
По умолчанию Прога на C, по теме классы

Создать класс Payment(зарплата). В классе должны быть представлены поля: фамилия-имя-отчество, оклад, год поступления на работу, процент надбавки, подоходный налог, количество отработанных дней в месяце, количество рабочих дней в месяце, начисленная и удержанная суммы.
Реализовать методы: вычисления начисленной суммы, вычисления удержанной суммы, вычисления суммы, выдаваемой на руки, вычисления стажа. Стаж вычисляется как полное количество лет, прошедших от года поступления на работу, до текущего года. Начисления представляют собой сумму, начисленную за отработанные дни, и надбавки, то есть доли от первой суммы. Удержания представляют собой отчисления в пенсионный фонд (1% от начисленной суммы) и подоходный налог. Подоходный налог составляет 13 % от начисленной суммы без отчислений в пенсионный фонд.

Также прилагаю свои разработки
Код:
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
class payment
{private:char fio; //Фио
float oklad; //оклад
int year; //год поступления на работу
float procent; //процент надбавки
float nalog; //подоходный налог
int rab_day_month; //кол-во отработанных дней
float day_month; //кол-во рабочих дней
float nach_summ; //начисленная сумма
float yder_summ; //удержанная сумма
float stag; //стаж (полное кол-во лет)
float zp; //зарплата
public:
float vichisl_nach_summ();
float vichisl_yder_summ();
float vichisl_zp();float vichisl_stag();};

float payment::vichisl_nach_summ()
{return (oklad*rab_day_month);}
float payment::vichisl_yder_summ()
{return (nach_summ*0.01+nach_summ*0.13);}
float payment::vichisl_zp()
{return (rab_day_month*oklad-(rab_day_month*oklad*0.13));}
float payment::vichisl_stag()
{return (2009-year);}
void main()
{ cout<<"Введите фамилию сотрудника - "; 
cin>>fio; 
cout<<"Введите оклад сотрудника  - \n"; 
cin>>oklad; 
cout<<"Введите год поступления сотрудника на работу - \n"; 
cin>>year; 
cout<<"Введите процент надбавки - \n"; 
cin>>procent; 
cout <<"Введите кол-во отработанных дней - \n"; 
cin>>rab_day_month; 
cout<<"Начисленная сумма составляет: "<<payment.vichisl_nach_summ()
<<"\n"; 
cout<<"Удержанная сумма составляет: "<<payment.vichisl_yder_summ()<<"\n"; 
cout<<"Сумма, выдаваемая на руки составляет: "<<payment.vichisl_zp()<<"\n"; 
cout<<"Стаж составляет: "<<payment.vichisl_stag()<<"\n";
getch();}
Сначала в void выдается ошибка, что надо описать переменные(но я ведь их в самом начале описала), его требования выполняю и дальше уже другую ошибку выдает.......вообщем я уже не знаю, что с этой прогой не так.........вроде все правильно составляла ...ПОМОГИТЕ ПОЖАЛУЙСТА!!! ИСПРАВЬТЕ ОШИБКИ

Последний раз редактировалось Mosya; 20.01.2010 в 09:52.
Mosya вне форума Ответить с цитированием
Старый 20.01.2010, 12:16   #2
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

Где в Вашем классе конструктор? Где в main создается необходимый класс?
Функции ввода данных должны быть описаны в классе.
Неприятности приходят и уходят, а жизнь продолжается!

Последний раз редактировалось Sweta; 20.01.2010 в 12:30.
Sweta вне форума Ответить с цитированием
Старый 20.01.2010, 13:21   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Где в Вашем классе конструктор?
Ну это необязательно
Цитата:
Функции ввода данных должны быть описаны в классе.
Кто это сказал? Они могут быть описаны где угодно.

Цитата:
Mosya
вот, смотри:

Код:
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
class payment
{

 public:	char fio; //Фио
	float oklad; //оклад
	int year; //год поступления на работу
	float procent; //процент надбавки
	float nalog; //подоходный налог
	int rab_day_month; //кол-во отработанных дней
	float day_month; //кол-во рабочих дней
	float nach_summ; //начисленная сумма
	float yder_summ; //удержанная сумма
	float stag; //стаж (полное кол-во лет)
	float zp; //зарплата

	float vichisl_nach_summ();
	float vichisl_yder_summ();
	float vichisl_zp();float vichisl_stag();
};

float payment::vichisl_nach_summ(){return (oklad*rab_day_month);}
float payment::vichisl_yder_summ(){return (nach_summ*0.01+nach_summ*0.13);}
float payment::vichisl_zp(){return (rab_day_month*oklad-(rab_day_month*oklad*0.13));}
float payment::vichisl_stag(){return (2009-year);}

void main(){
 payment* f=new payment();

cout<<"Введите фамилию сотрудника - ";
cin>>f->fio;
cout<<"Введите оклад сотрудника  - \n";
cin>>f->oklad;
cout<<"Введите год поступления сотрудника на работу - \n";
cin>>f->year;
cout<<"Введите процент надбавки - \n";
cin>>f->procent;
cout <<"Введите кол-во отработанных дней - \n";
cin>>f->rab_day_month;
cout<<"Начисленная сумма составляет: "<<f->vichisl_nach_summ()
<<"\n";
cout<<"Удержанная сумма составляет: "<<f->vichisl_yder_summ()<<"\n";
cout<<"Сумма, выдаваемая на руки составляет: "<<f->vichisl_zp()<<"\n";
cout<<"Стаж составляет: "<<f->vichisl_stag()<<"\n";
delete f;
getch();}
Видишь свои ошибки?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.01.2010, 13:42   #4
N1KeL
Пользователь
 
Аватар для N1KeL
 
Регистрация: 20.04.2009
Сообщений: 58
По умолчанию

Добавлю, что для того, чтобы работали функции cin и cout, необходимо использовать using namespace std;, которую я в вашем коде не наблюдаю
N1KeL вне форума Ответить с цитированием
Старый 20.01.2010, 13:44   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Mosya, на будущее.
Цитата:
Прога на C, по теме классы
вы всетаки на C++ пишете а не на С.
на С нет классов.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 20.01.2010, 14:23   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
необходимо использовать using namespace std;
А вдруг он как и я в Борланд С++ пишет?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.01.2010, 14:24   #7
Mosya
 
Регистрация: 20.01.2010
Сообщений: 8
По умолчанию

Цитата:
Сообщение от N1KeL Посмотреть сообщение
Добавлю, что для того, чтобы работали функции cin и cout, необходимо использовать using namespace std;, которую я в вашем коде не наблюдаю
на с++ пишу, этот код мы не использовали
Mosya вне форума Ответить с цитированием
Старый 20.01.2010, 14:25   #8
Mosya
 
Регистрация: 20.01.2010
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ну это необязательно

Кто это сказал? Они могут быть описаны где угодно.


вот, смотри:

Код:
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
class payment
{

 public:	char fio; //Фио
	float oklad; //оклад
	int year; //год поступления на работу
	float procent; //процент надбавки
	float nalog; //подоходный налог
	int rab_day_month; //кол-во отработанных дней
	float day_month; //кол-во рабочих дней
	float nach_summ; //начисленная сумма
	float yder_summ; //удержанная сумма
	float stag; //стаж (полное кол-во лет)
	float zp; //зарплата

	float vichisl_nach_summ();
	float vichisl_yder_summ();
	float vichisl_zp();float vichisl_stag();
};

float payment::vichisl_nach_summ(){return (oklad*rab_day_month);}
float payment::vichisl_yder_summ(){return (nach_summ*0.01+nach_summ*0.13);}
float payment::vichisl_zp(){return (rab_day_month*oklad-(rab_day_month*oklad*0.13));}
float payment::vichisl_stag(){return (2009-year);}

void main(){
 payment* f=new payment();

cout<<"Введите фамилию сотрудника - ";
cin>>f->fio;
cout<<"Введите оклад сотрудника  - \n";
cin>>f->oklad;
cout<<"Введите год поступления сотрудника на работу - \n";
cin>>f->year;
cout<<"Введите процент надбавки - \n";
cin>>f->procent;
cout <<"Введите кол-во отработанных дней - \n";
cin>>f->rab_day_month;
cout<<"Начисленная сумма составляет: "<<f->vichisl_nach_summ()
<<"\n";
cout<<"Удержанная сумма составляет: "<<f->vichisl_yder_summ()<<"\n";
cout<<"Сумма, выдаваемая на руки составляет: "<<f->vichisl_zp()<<"\n";
cout<<"Стаж составляет: "<<f->vichisl_stag()<<"\n";
delete f;
getch();}
Видишь свои ошибки?
да, я в разделе воид не обратилась к самому классу.

P.S. я девушка
Mosya вне форума Ответить с цитированием
Старый 20.01.2010, 14:28   #9
N1KeL
Пользователь
 
Аватар для N1KeL
 
Регистрация: 20.04.2009
Сообщений: 58
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А вдруг он как и я в Борланд С++ пишет?
А там это не требуется? Извините, никогда не работал в Борланде, я сразу с Visual Studio начал. В чем причина таких различий?
N1KeL вне форума Ответить с цитированием
Старый 20.01.2010, 14:34   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
да, я в разделе воид не обратилась к самому классу.
Не просто не обратилась, а не создала его экземпляр, Можно было и не создавать экземпляр, но тогда нужно было обьявлять методы как Static
Цитата:
N1KeL
Скажем так - работает без указания этой строки.
Цитата:
В чем причина таких различий?
Хто его знает... Спроси у Гейтса.
Цитата:
я девушка
"Корнет, Вы женщина??? "
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
прога и чюжая прога benjaminfran Общие вопросы Delphi 5 28.03.2008 15:07
Задачи по теме множества Hostlman Общие вопросы Delphi 2 22.12.2007 21:52