Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 16.11.2019
Сообщений: 1

Перевести с C++ на C#

27.11.2019, 18:57. Показов 614. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написать иерархию классов, описывающих служащих в компании. Она должна состоять из абстрактного базового класса Employee и производных от него классов Manager, Agent и Worker. Базовый класс должен иметь чисто
виртуальный метод рассчета заработной платы, переопределенный в каждом из производных классов. Заработная
плата Manager постоянна и равна 13000, заработная плата Agent определяется как оклад 5000 + 5% объема продаж,
который хранится в специальном поле класса Agent, и заработная плата Worker определяется как 100×число отработанных часов, которое также хранится в отдельном поле (классы Agent и Worker должны иметь конструкторы по
вещественному числу, устанавливающие значение своего поля). В основной программе завести массив из 9 указателей
на Employee и заполнить его указателями на объекты производных классов (первые 3 — Manager, следующие 3 —
Agent и последние 3 — Worker). Вывести на экран величину заработной платы всех 9 служащих.
Для начала опишем класс Employee.
C++
1
2
3
4
5
struct Employee
{
virtual ~Employee() {}
virtual double salary() = 0;
};
Теперь опишем класс Manager. Поскольку зарплата Manager постоянна, никакие поля здесь не нужны.
C++
1
2
3
4
5
6
7
8
struct Manager : Employee
{
double salary()
{
return 13000;
}
3
};
Затем опишем класс Agent. Поскольку для вычисления его зарплаты требуется знать объем продаж, что является
характеристикой Agent, то уместно завести соответствующее поле в классе Agent.
C++
1
2
3
4
5
6
7
8
9
struct Agent : Employee
{
double amount;
Agent(double a): amount(a) {}
double salary()
{
return 5000+0.05*amount;
}
};
Наконец, опишем класс Worker. Он будет иметь поле time, содержащее число отработанных часов, на основании
значения которого вычисляется его зарплата.
C++
1
2
3
4
5
6
7
8
9
struct Worker : Employee
{
double time;
Worker(double t): time(t) {}
double salary()
{
return 100*time;
}
};
После всех необходимых нам классов напишем основную программу. Вспомним, что она представляет собой функцию main.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int main()
{
Employee *M[9];
M[0] = new Manager;
M[1] = new Manager;
M[2] = new Manager;
M[3] = new Agent(100000);
M[4] = new Agent(110000);
M[5] = new Agent(120000);
M[6] = new Worker(140);
M[7] = new Worker(150);
M[8] = new Worker(160);
for(int i = 0; i<9; i++)
{
cout<<"Зарплата "<<i<<"-го сотрудника составляет "
<<M[i]->salary()<<" р."<<endl;
delete M[i];
}
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.11.2019, 18:57
Ответы с готовыми решениями:

Перевести фиолетовый (105, 62, 151) из RGB в HSB, уменьшить яркость в 2 раза и перевести обратно
Помогите пожалуйста! Перевести фиолетовый (105, 62, 151) из RGB в HSB, уменьшить яркость в 2 раза и перевести обратно

QString перевести в char* || QChar перевести в char*
Подскажите пожалуйста как сделать: Исходники в utf-8, qt4.8 setlocale(LC_ALL, &quot;Russian&quot;); QTextCodec *wincodec =...

Как презентации SWF флэш сайта перевести в HTML5 с сохранением эфектов ) Как правильно и полноценно Перевести SWF в HTML5
программа Sothink SWF Decompiler конвертирует SWF файл в HTML5 разбивая его на HTML и JS ...но она тянет только файл 15kb ...это очень...

1
 Аватар для Enifan
1849 / 1191 / 501
Регистрация: 14.10.2018
Сообщений: 3,211
28.11.2019, 14:26
Irina1921, Код не сильно изменится при переводе с C++ на C#

Класс Employee. Деструкторы в C# есть, только не используются, поскольку неизвестно когда будет уничтожен объект
C#
1
2
3
4
abstract class Employee
{
    public abstract double Salary();
}
класс Manager
C#
1
2
3
4
5
6
7
class Manager : Employee
{
    public override double Salary()
    {
        return 13000;
    }
}
класс Agent. Вы можете писать как в C++ через переменную(поле), здесь же указывается свойство, для C# это будет "правильней" (но это не обязательно). В данном примере на работу не повлияет
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
class Agent : Employee
{
    double Amount { get; set; }
    public Agent(double amount)
    {
        Amount = amount;
    }
 
    public override double Salary()
    {
        return 5000 + 0.05 * Amount;
    }
}
класс Worker. Суть таже, что и в предыдущем классе (не через поле, а через свойство)
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
class Worker : Employee
{
    double Time { get; set; }
    public Worker(double time)
    {
        Time = time;
    }
 
    public override double Salary()
    {
        return 100 * Time;
    }
}
Метод Main. Синтаксис объявление массива и вывод на экран отличается. Удалять объект не надо - сборщик мусора сделает это сам. В обычном коде не используются указатели (для этого есть причины), в данном случаи Employee[] M это массив ссылок.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Program
{
    static void Main()
    {
        Employee[] M = new Employee[9];
        M[0] = new Manager();
        M[1] = new Manager();
        M[2] = new Manager();
        M[3] = new Agent(100000);
        M[4] = new Agent(110000);
        M[5] = new Agent(120000);
        M[6] = new Worker(140);
        M[7] = new Worker(150);
        M[8] = new Worker(160);
        for (int i = 0; i < M.Length; i++)
        {
            Console.WriteLine($"Зарплата {i}-го сотрудника составляет {M[i].Salary()} р.");
        }
        Console.ReadKey();
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.11.2019, 14:26
Помогаю со студенческими работами здесь

Текстовый файл перевести в двоичный, а потом полученный двоичный файл перевести обратно в текстовый
Всем привет. Есть такая задачка: &quot;текстовый файл перевести в двоичный, а потом полученный двоичный файл перевести обратно в текстовый&quot;...

Перевести с С++ в С
Кто может помочь перевести с С++ в С? Буду очень признателен #include &lt;iostream&gt; #include &lt;string&gt; #include...

Перевести из C++ в C#
помогите пожалуйста перевести код из с++ в с#!!!! using namespace std; #include &lt;iostream&gt; #include &lt;string&gt; void...

Перевести из C# в C++
Здравствуйте! Помогите пожалуйста перевести код из С# в C++. Заранее спасибо. using System; using System.Collections.Generic; ...

Перевести с C++ на C#
#include #include #include #include #include #include using namespace std; int main() {


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru