Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Задача методом класса на C++

51K
01 июня 2010 года
xiwnik
23 / / 15.03.2010
Доброго времени суток! Прошу помочь с решением задачи.
Собственно сама задачка:
Создать класс Payment
Поля в классе:
1) ФИО
2) Оклад
3) Год поступления на работу
4) % надбавки
5) Подоходный налог
6) Кол-во отработаных дней в месяце
7) Кол-во рабочих дней в месяце
8) Начисленная и удержанная суммы
Реализовать методы:
1) Вычисление начисленной суммы
2) Вычисление удержанной суммы
3) Вычисление суммы, выдаваемой на руки
4) Вычисление стажа

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

Изложил все как есть. В классах не могу толком разобраться, поэтому надеюсь на вашу помощь. Наработок нету.
392
01 июня 2010 года
cronya
421 / / 03.01.2009
Помочь всегда рады, тока наработки в студию тогда и поможем.:)
Не знаем, что такое, сюда Бьерн Страуструп
ЗЫ Впрочем классы сильно то не отличаются о структур
51K
01 июня 2010 года
xiwnik
23 / / 15.03.2010
Я написал, что наработок нету, хотя немного по гуглив, кое-что найти удалось. По размышляю немного. Насчет книжки, то я купил себе Гербета Шилдта, дядька тоже хороши пишет, но мне как начинающему, не все понятно к сожалению... х(

Код:
#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();
}
51K
01 июня 2010 года
xiwnik
23 / / 15.03.2010
Доработал сам, прошу посмотреть, что и где не так. Код проверил, вроде все работает, но все же... :)
Код:
#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();
}
392
01 июня 2010 года
cronya
421 / / 03.01.2009
не хватает конструктора и деструктора:

Код:
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()
{
}

Книга Герберта Шилдта хорошее пособие, сам по нему учил :)
394
01 июня 2010 года
MegaMozg
317 / / 18.03.2006
примерно так:

Код:
#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)
{};


У вас переменная fio типа char, а это один символ, а не строка. Раз пишите на С++, используйте std::string
535
02 июня 2010 года
Нездешний
537 / / 17.01.2008
Цитата:
float stag; //стаж (полное кол-во лет)

полное количество лет float?

Цитата:
int rab_day_month; //кол-во отработанных дней
float day_month; //кол-во рабочих дней

Одно int, другое float?

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог