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

Создать класс с именем ZARPLATA - C++

Восстановить пароль Регистрация
 
DareDeviL
2 / 2 / 0
Регистрация: 21.11.2010
Сообщений: 43
27.12.2011, 03:15     Создать класс с именем ZARPLATA #1
№1.
1. Создать класс с именем ZARPLATA, содержащий следующие поля:
• табельный номер;
• фамилия И.О. работника;
• оплата за один час работы;
• количество обработанных дней;
• премия.
2. Написать программу, реализующую следующие методы, определенные вне класса:
• ввод с клавиатуры данных в массив, состоящий из десяти объектов (работников) класса ZARPLATA;
• рассчитать зарплату каждого работника за месяц;
• вывести на экран ведомость начисления заработной платы. Записи должны быть размещены в алфавитном порядке по фамилиям.
3. Предусмотреть конструктор без аргументов и деструктор (для двух последних объектов конст-руктор с аргументами).

Разработайте алгоритм и создайте программу с применением множественного наследования. При выполнении данного задания необходимо создать не менее 2-х базовых классов и класс, наследующий их поля.

№2.
Создайте программу с классом Dancer, который включает в себя следующие данные-эле-менты о парах-уастниках соревнований по спортивным бальным танцам:
► ФИО партнера;
► год рождения партнера;
►ФИО партнерши;
Номер для каждой пары запрашивается, а массив оценок создается в динамической памяти операцией new.
В состав класса входят следующие функции-члены класса:
► конструктор с параметрами;
► деструктор;
► функция инициализации текущего состояния объектов;
► функция просмотра текущего состояния объектов PRINT ();
Производный класс Dancer_l содержит следующие элементы:
►название категории пары (юниоры, молодежь, профессионалы);
► количество соревнований, в которых пара приняла участие в текущем году;
► функцию вывода всех данных о паре-участнике соревнований.
Добавьте в состав класса виртуальную функцию просмотра текущего объекта print (), а в производный класс Dancer_l - переопределенную функцию вывода всех данных о паре-участнике соревнований.

№1.
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <iostream>
#include<cstring>
using namespace std;
 
struct zarplata
{
char name [20];
int nomer;
int oplata;
int dni;
int prem;
};
 
int main ()
{
zarplata *m;
int i,n,j;
char *temp;
int e[1];
printf ("\n Vvedite kolichestvo chelovek :\n\n n=");
scanf ("%d",&n);
 
m=(zarplata*)malloc(n*sizeof(zarplata));
temp = (char*)malloc(20*sizeof(char));
 
for (i=0; i<n; i++)
{
cout<<" Premiya - "<<endl;
cin>>m[i].prem;
cout<<" nomer - "<<endl;
cin>>m[i].nomer;
cout<<" Oplata - "<<endl;
cin>>m[i].oplata;
cout<<" Dni - "<<endl;
cin>>m[i].dni;
cout<<" FIO - "<<endl;
cin>>m[i].name;
 
}
 
for (i=0; i<n-1; i++)
{
for(j=i; j<n; ++j)
if (strcmp(m[j].name,m[i].name)<0)
{
strcpy (temp,m[i].name);
strcpy (m[i].name,m[j].name);
strcpy (m[j].name,temp);
}
}
 
for(int i = 0;i<n;i++)
{
e[i]=m[i].oplata*8*m[i].dni+m[i].prem;
}
for (i=0; i<n; i++)
{
 
cout<<"FIO: "<<m[i].name<<" | Zarplata: "<<e[i]<<endl;
}
free (m);
free(temp);
getch ();
return 0;
}
№2.
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
// 2.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
 
using namespace std;
 
const int n=5;
 
class dancer
{public:
char MenName[20];
char WomenName[20];
char data[10];
bool state;
 
 void incilizacion(int temp,dancer par[]){
 par[temp].state=true;
}
 
 virtual void vivod(int temp,dancer par[]){
 cout<<par[temp].MenName<<endl<<par[temp].data<<endl<<par[temp].WomenName<<endl;
 
 }
};
 
dancer_1::dancer_1(){
 par[0].state=false;
 par[1].state=false;
 par[2].state=false;
 par[3].state=false;
 par[4].state=false;
 
 strcpy(par[0].data,"01.01.01");
 strcpy(par[1].data,"02.01.01");
 strcpy(par[2].data,"03.01.01");
 strcpy(par[3].data,"04.01.01");
 strcpy(par[4].data,"05.01.01");
 
 strcpy(par[0].MenName,"Fio");
 strcpy(par[1].MenName,"Fio1");
 strcpy(par[2].MenName,"Fio2");
 strcpy(par[3].MenName,"Fio3");
 strcpy(par[4].MenName,"Fio4");
 
 strcpy(par[0].WomenName,"wmFio");
 strcpy(par[1].WomenName,"wmFio1");
 strcpy(par[2].WomenName,"wmFio2");
 strcpy(par[3].WomenName,"wmFio3");
 strcpy(par[4].WomenName,"wmFio4");
 
 strcpy(par[0].categoria,"union");
 strcpy(par[1].categoria,"molodie");
 strcpy(par[2].categoria,"profi");
 strcpy(par[3].categoria,"profi");
 strcpy(par[4].categoria,"union");
 
}
 
class dancer_1:public dancer{public: char categoria[10];
int col;
dancer_1::dancer_1();
void dancer_1::vivod(int temp,dancer_1 par[]){dancer::vivod(temp,par);
cout<< par[temp].categoria<<endl<<par[temp].col;
 
}};
dancer_1 par[n];
int main()
{dancer_1 *unicycle; 
 int temp=0;
cout<<"vvedite # comandi:\n1)prosmotr\n2)vizov";
cin>>temp;
if (temp==2){
cout<<"vvedite №pari";
cin>>temp;
temp= temp-1;
unicycle->incilizacion(temp,par);
 
if(par[temp].state==true) {cout<<"para uje vistupala"<<endl;}
else{
int* mark =new int [n]; 
cout<<"vvedite 5 otcenoc";
cin>>mark[0]>>mark[1]>>mark[2]>>mark[3]>>mark[4];
unicycle->vivod(temp,par);
cout<<"Mark:"<<mark[0]<<" "<<mark[1]<<" "<<mark[2]<<" "<<mark[3]<<" "<<mark[4];
}}
if(temp==1){cout<<"vvedite №pari";
cin>>temp;
temp= temp-1;
unicycle->vivod(temp,par);
if(par[temp].state==true) cout<<"para uje vistupala/n";
else cout<<"paraesche ne vistupal\n";}
 return 0;
}
в чём беда??исправьте кто может...
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
27.12.2011, 04:18     Создать класс с именем ZARPLATA #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Оба задания лютый бред. Бессмысленный и беспощадный.

Первое задание.

Цитата Сообщение от DareDeviL Посмотреть сообщение
в чём беда??
Беда в бредовом задании. Беда в изначально хреново спроектированной структуре классов.

Цитата Сообщение от DareDeviL Посмотреть сообщение
2. Написать программу, реализующую следующие методы, определенные вне класса:
• ввод с клавиатуры данных в массив, состоящий из десяти объектов (работников) класса ZARPLATA;
• рассчитать зарплату каждого работника за месяц;
Вводить десять объектов из пяти полей с клавиатуры?! R u kidding me?
Бессмысленно выносить подобный расчет из класса.
Цитата Сообщение от DareDeviL Посмотреть сообщение
Предусмотреть конструктор без аргументов и деструктор
Бессмысленный гемор.
Цитата Сообщение от DareDeviL Посмотреть сообщение
(для двух последних объектов конст-руктор с аргументами)
Эээ... Речь же шла об одном классе?!
Цитата Сообщение от DareDeviL Посмотреть сообщение
создайте программу с применением множественного наследования
Да куда-ж его тут запихать-то?!

Вот так еще может-быть.
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 <iostream>
#include <string>
#include <vector>
#include <algorithm>
 
class Worker {
 public:
  Worker(size_t id, const std::string &name, size_t hourlyWage)
    : id_(id), name_(name), hourlyWage_(hourlyWage) {}
  const std::string &getName() const { return name_; }
  const size_t &getHourlyWage() const { return hourlyWage_; }
  const size_t &getId() const { return id_; }
 private:
  size_t id_;
  std::string name_;
  size_t hourlyWage_;
};
 
std::ostream &operator<<(std::ostream &stream, const Worker &worker) {
  return stream << worker.getId() << ": " << worker.getName() <<
    ", hourly wage: " << worker.getHourlyWage() / 100. << " rub";
}
 
class Payment {
 public:
  Payment(const Worker &worker, size_t workedHours, size_t bonus)
    : worker_(worker), workedHours_(workedHours), bonus_(bonus) {}
  const Worker &getWorker() const { return worker_; }
  const size_t &getWorkedHours() const { return workedHours_; }
  const size_t &getBonus() const { return bonus_; }
  const size_t getPayment() const {
    return getWorkedHours() * getWorker().getHourlyWage() + getBonus();
  }
 private:
  Worker worker_;
  size_t workedHours_;
  size_t bonus_;
};
 
std::ostream &operator<<(std::ostream &stream, const Payment &payment) {
  return stream << payment.getWorker().getId() << ": " <<
    payment.getWorker().getName() <<
    ", payment: " << payment.getPayment() / 100. << " rub";
}
 
bool operator<(const Payment &a, const Payment &b) {
  return a.getWorker().getName() < b.getWorker().getName();
}
 
int main(int argc, char *argv[]) {
  std::vector<Payment> payments;
  payments.push_back(Payment(Worker(0, "Ivan Ivanov", 23073), 21 * 8, 20000));
  payments.push_back(Payment(Worker(1, "Vasiliy Vasilyev", 22611), 20 * 8, 10026));
  payments.push_back(Payment(Worker(2, "Petr Petrov", 18987), 21 * 9, 31238));
  std::sort(payments.begin(), payments.end());
  for (std::vector<Payment>::iterator i = payments.begin();
    i != payments.end(); ++i)
    std::cout << *i << std::endl;
  return 0;
};
DareDeviL
2 / 2 / 0
Регистрация: 21.11.2010
Сообщений: 43
27.12.2011, 11:27  [ТС]     Создать класс с именем ZARPLATA #3
Цитата Сообщение от lemegeton Посмотреть сообщение
Вводить десять объектов из пяти полей с клавиатуры?! R u kidding me?
Бессмысленно выносить подобный расчет из класса.
10 раз нужно будет вводить фамилию,номер,премию,оплату и дни.

Добавлено через 1 час 40 минут
как здесь наследование то добавить?
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
27.12.2011, 18:55     Создать класс с именем ZARPLATA #4
Цитата Сообщение от DareDeviL Посмотреть сообщение
как здесь наследование то добавить?
В том-то и дело, что оно в таком задании не уперлось вообще. Разве что что-нибудь бессмысленное.

Вроде замены класса Worker иерархией классов.
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
class AbstractWorker {
 public:
  virtual const std::string &getName() const = 0;
  virtual const size_t &getId() const = 0;
};
 
class WorkerBase : public AbstractWorker {
 public:
  WorkerBase(size_t id, const std::string &name) : id_(id), name_(name) {}
  const std::string &getName() const { return name_; }
  const size_t &getId() const { return id_; }
 private:
  size_t id_;
  std::string name_;
};
 
class Worker : public WorkerBase {
 public:
  Worker(size_t id, const std::string &name, size_t hourlyWage)
    : WorkerBase(id, name), hourlyWage_(hourlyWage) {}
  const size_t &getHourlyWage() const { return hourlyWage_; }
 private:
  size_t hourlyWage_;
};
Цитата Сообщение от DareDeviL Посмотреть сообщение
10 раз нужно будет вводить фамилию,номер,премию,оплату и дни
Мне лень.
DareDeviL
2 / 2 / 0
Регистрация: 21.11.2010
Сообщений: 43
27.12.2011, 19:05  [ТС]     Создать класс с именем ZARPLATA #5
пасиб
Yandex
Объявления
27.12.2011, 19:05     Создать класс с именем ZARPLATA
Ответ Создать тему
Опции темы

Текущее время: 14:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru