#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <iostream>
#include <locale.h>
using namespace std;
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()
{
setlocale(LC_CTYPE,".1251");
payment human;
cout<<"Введите фамилию сотрудника - ";
cin>>human.fio;
fflush(stdin);
cout<<"Введите оклад сотрудника - ";
cin>>human.oklad;
cout<<"Введите год поступления сотрудника на работу - ";
cin>>human.year;
cout<<"Введите процент надбавки - ";
cin>>human.procent;
cout <<"Введите кол-во отработанных дней - ";
cin>>human.rab_day_month;
cout<<"Начисленная сумма составляет: "<<human.vichisl_nach_summ() <<"\n";
cout<<"Удержанная сумма составляет: "<<human.vichisl_yder_summ()<<"\n";
cout<<"Сумма, выдаваемая на руки составляет: "<<human.vichisl_zp()<<"\n";
cout<<"Стаж составляет: "<<human.vichisl_stag()<<"\n";
getch();
}
Задача методом класса на C++
Собственно сама задачка:
Создать класс Payment
Поля в классе:
1) ФИО
2) Оклад
3) Год поступления на работу
4) % надбавки
5) Подоходный налог
6) Кол-во отработаных дней в месяце
7) Кол-во рабочих дней в месяце
8) Начисленная и удержанная суммы
Реализовать методы:
1) Вычисление начисленной суммы
2) Вычисление удержанной суммы
3) Вычисление суммы, выдаваемой на руки
4) Вычисление стажа
Стаж вычисляется: Полное кол-во лет прошедших от года поступления на работу до текущего года.
Начисления: Сумма, начисленная за отработанные дни и надбавки т.е. доли от первой суммы.
Удержания: Отчисления в пенсионный фонд (1% от начисленной суммы) и подоходный налог (13% от начисленной суммы без отчислений в пенсионный фонд.
Изложил все как есть. В классах не могу толком разобраться, поэтому надеюсь на вашу помощь. Наработок нету.
Помочь всегда рады, тока наработки в студию тогда и поможем.:)
Я написал, что наработок нету, хотя немного по гуглив, кое-что найти удалось. По размышляю немного. Насчет книжки, то я купил себе Гербета Шилдта, дядька тоже хороши пишет, но мне как начинающему, не все понятно к сожалению... х(
Код:
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <iostream>
#include <locale.h>
using namespace std;
class payment
{
public:
char fio; //Фио
float oklad; //оклад
int year; //год поступления на работу
float procent; //процент надбавки
int rab_day_month; //кол-во отработанных дней
float day_month; //кол-во рабочих дней
float stag; //стаж (полное кол-во лет)
float nalog; //подоходный налог
float vichisl_day_zp(); // Зарплата за 1н день
float vichisl_nach_summ();
float vichisl_yder_summ();
float vichisl_zp();
float vichisl_stag();
float vichisl_ndbavka();
};
float payment::vichisl_day_zp()
{return (oklad/day_month);}
float payment::vichisl_nach_summ()
{return (vichisl_day_zp()*rab_day_month);}
float payment::vichisl_ndbavka()
{return (vichisl_nach_summ()*procent);}
float payment::vichisl_yder_summ()
{return (vichisl_nach_summ()*0.01+vichisl_nach_summ()*nalog);}
float payment::vichisl_zp()
{return (rab_day_month*vichisl_day_zp()-(rab_day_month*vichisl_day_zp()*0.13));}
float payment::vichisl_stag()
{return (2010-year);}
void main()
{
setlocale(LC_CTYPE,".1251");
payment human;
cout<<"Расчет зарплаты сотрудника: \n\n";
cout<<"ФИО: ";
cin>>human.fio;
fflush(stdin);
cout<<"Оклад: ";
cin>>human.oklad;
cout<<"Год поступления на работу: ";
cin>>human.year;
cout<<"% надбавки: ";
cin>>human.procent;
cout<<"Подоходный налог: ";
cin>>human.nalog;
cout <<"Кол-во рабочих дней в месяце: ";
cin>>human.day_month;
cout <<"Кол-во отработанных дней: ";
cin>>human.rab_day_month;
cout<<"\n\nРезультат:\n";
cout<<"Начисленная сумма составляет: "<<human.vichisl_nach_summ() <<"\n";
cout<<"Удержанная сумма составляет: "<<human.vichisl_yder_summ()<<"\n";
cout<<"Сумма, выдаваемая на руки составляет: "<<human.vichisl_zp()<<"\n";
cout<<"Стаж составляет: "<<human.vichisl_stag()<<"\n";
getch();
}
#include <stdio.h>
#include <conio.h>
#include <iostream>
#include <locale.h>
using namespace std;
class payment
{
public:
char fio; //Фио
float oklad; //оклад
int year; //год поступления на работу
float procent; //процент надбавки
int rab_day_month; //кол-во отработанных дней
float day_month; //кол-во рабочих дней
float stag; //стаж (полное кол-во лет)
float nalog; //подоходный налог
float vichisl_day_zp(); // Зарплата за 1н день
float vichisl_nach_summ();
float vichisl_yder_summ();
float vichisl_zp();
float vichisl_stag();
float vichisl_ndbavka();
};
float payment::vichisl_day_zp()
{return (oklad/day_month);}
float payment::vichisl_nach_summ()
{return (vichisl_day_zp()*rab_day_month);}
float payment::vichisl_ndbavka()
{return (vichisl_nach_summ()*procent);}
float payment::vichisl_yder_summ()
{return (vichisl_nach_summ()*0.01+vichisl_nach_summ()*nalog);}
float payment::vichisl_zp()
{return (rab_day_month*vichisl_day_zp()-(rab_day_month*vichisl_day_zp()*0.13));}
float payment::vichisl_stag()
{return (2010-year);}
void main()
{
setlocale(LC_CTYPE,".1251");
payment human;
cout<<"Расчет зарплаты сотрудника: \n\n";
cout<<"ФИО: ";
cin>>human.fio;
fflush(stdin);
cout<<"Оклад: ";
cin>>human.oklad;
cout<<"Год поступления на работу: ";
cin>>human.year;
cout<<"% надбавки: ";
cin>>human.procent;
cout<<"Подоходный налог: ";
cin>>human.nalog;
cout <<"Кол-во рабочих дней в месяце: ";
cin>>human.day_month;
cout <<"Кол-во отработанных дней: ";
cin>>human.rab_day_month;
cout<<"\n\nРезультат:\n";
cout<<"Начисленная сумма составляет: "<<human.vichisl_nach_summ() <<"\n";
cout<<"Удержанная сумма составляет: "<<human.vichisl_yder_summ()<<"\n";
cout<<"Сумма, выдаваемая на руки составляет: "<<human.vichisl_zp()<<"\n";
cout<<"Стаж составляет: "<<human.vichisl_stag()<<"\n";
getch();
}
Код:
class payment
{
private:
char fio;// тут я бы так сделал
float oklad;
int year;
float procent;
int rab_day_month;
float day_month;
float stag;
float nalog;
public:
payment();//конструктор
~payment();//деструктор далее остальные функции
};
payment()::payment()
{
fio=NULL;
oklad=0;
year=0;
procent=0;
rab_day_month=0;
day_month=0;
stag=0;
nalog=0;
}
payment()::~payment()
{
}
{
private:
char fio;// тут я бы так сделал
float oklad;
int year;
float procent;
int rab_day_month;
float day_month;
float stag;
float nalog;
public:
payment();//конструктор
~payment();//деструктор далее остальные функции
};
payment()::payment()
{
fio=NULL;
oklad=0;
year=0;
procent=0;
rab_day_month=0;
day_month=0;
stag=0;
nalog=0;
}
payment()::~payment()
{
}
Книга Герберта Шилдта хорошее пособие, сам по нему учил :)
Код:
#include ...
#include <string>
class payment
{
private:
std::string fio;
float oklad;
int year;
float procent;
int rab_day_month;
float day_month;
float stag;
float nalog;
public:
payment();//конструктор
// ~payment();//деструктор пойдет по-умолчанию
};
payment::payment() : oklad(0), year(0), procent(0), rab_day_month(0), day_month(0),
stag(0), nalog(0)
{};
#include <string>
class payment
{
private:
std::string fio;
float oklad;
int year;
float procent;
int rab_day_month;
float day_month;
float stag;
float nalog;
public:
payment();//конструктор
// ~payment();//деструктор пойдет по-умолчанию
};
payment::payment() : oklad(0), year(0), procent(0), rab_day_month(0), day_month(0),
stag(0), nalog(0)
{};
У вас переменная fio типа char, а это один символ, а не строка. Раз пишите на С++, используйте std::string
Цитата:
float stag; //стаж (полное кол-во лет)
полное количество лет float?
Цитата:
int rab_day_month; //кол-во отработанных дней
float day_month; //кол-во рабочих дней
float day_month; //кол-во рабочих дней
Одно int, другое float?