Переписать из C++ в C#. Структура Worker
Формулировка задачи:
Не могу переделать на первый взгляд простую программу из C++ в C#
Если кто-нибудь понимает, то помогите пожалуйста
Листинг программы
- #include <iostream>
- using namespace std;
- struct Worker
- {
- char Name[50];
- char Post[25];
- int Year;
- };
- int _tmain(int argc, _TCHAR* argv[])
- {
- const int col = 10;
- int year;
- Worker Sheet[col];
- InputData(Sheet, col);
- cout << endl;
- SelectSort(Sheet, col);
- OutAllData(Sheet, col);
- cout << endl;
- cout << "Input year: ";
- cin >> year;
- OutYearData(Sheet, year, col);
- system("pause");
- return 0;
- }
- void InputData(Worker *lrh, int len)
- {
- for (int i = 0; i < len; ++i)
- {
- cout << "Input Worker[" << i + 1 << "]\nName: ";
- _flushall();
- cin.getline(lrh[i].Name, 50);
- cout << "Post: ";
- cin >> lrh[i].Post;
- cout << "Year: ";
- cin >> lrh[i].Year;
- }
- }
- void OutAllData(Worker *lrh, int len)
- {
- for (int i = 0; i < len; ++i)
- {
- cout << "Out Worker[" << i + 1 << "]\nName: " << lrh[i].Name << endl << "Post: " << lrh[i].Post << endl << "Year: " << lrh[i].Year << endl;
- }
- }
- void OutYearData(Worker *lrh, int year, int len)
- {
- bool flag = false;
- for (int i = 0; i < len; ++i)
- {
- if (year < lrh[i].Year)
- {
- flag = true;
- cout << "Out Worker[" << i + 1 << "]\nName: " << lrh[i].Name << endl << "Post: " << lrh[i].Post << endl << "Year: " << lrh[i].Year << endl;
- }
- }
- if (flag == false)
- cout << "Sorry :" << endl;
- }
- int compare(const Worker* struct1, const Worker* struct2)
- {
- int result;
- result = strcmp(struct1->Name, struct2->Name);
- return result;
- }
- void Fack(Worker *l, Worker *r)
- {
- strcpy_s(l->Post, r->Post);
- strcpy_s(l->Name, r->Name);
- l->Year = r->Year;
- }
- void SelectSort(Worker *lrh, int len)
- {
- int k;
- Worker x;
- for (int i = 0; i < len; i++)
- {
- k = i;
- Fack(&x, &lrh[i]);
- for (int j = i + 1; j < len; j++)
- if (compare(&lrh[j], &x))
- {
- k = j;
- Fack(&x, &lrh[j]);
- }
- Fack(&lrh[k], &lrh[i]);
- Fack(&lrh[i], &x);
- }
- }
Решение задачи: «Переписать из C++ в C#. Структура Worker»
textual
Листинг программы
- using System;
- using System.Linq;
- namespace ConsoleApplication10
- {
- public struct Worker
- {
- public string Name { get; set; }
- public string Post { get; set; }
- public int Year { get; set; }
- }
- class Program
- {
- const int COUNT = 10;
- static void Main(string[] args)
- {
- var sheet = new Worker[COUNT];
- InputData(sheet);
- Console.WriteLine();
- SelectSort2(ref sheet);//SelectSort(sheet) - если алгоритм сортировки обязателен
- OutAllData(sheet);
- Console.Write("\nInput year: ");
- var year = int.Parse(Console.ReadLine());
- OutYearData(sheet, year);
- Console.ReadKey();
- }
- static void InputData(Worker[] lrh)
- {
- for (int i = 0; i < lrh.Length; ++i)
- {
- Console.Write($"Input Worker[{i + 1}]\nName: ");
- lrh[i].Name = Console.ReadLine();
- Console.Write("Post: ");
- lrh[i].Post = Console.ReadLine();
- Console.Write("Year: ");
- lrh[i].Year = int.Parse(Console.ReadLine());
- }
- }
- static void OutAllData(Worker[] lrh)
- {
- Console.WriteLine(string.Join("\n", lrh.Select(x => $"Out Worker[{Array.IndexOf(lrh, x) + 1}]\nName: {x.Name}\nPost: {x.Post}\nYear: {x.Year.ToString()}")));
- }
- static void OutYearData(Worker[] lrh, int year)
- {
- Console.WriteLine(string.Join("\n", lrh.Where(x => year < x.Year).Select(x => $"Out Worker[{Array.IndexOf(lrh, x) + 1}]\nName: {x.Name}\nPost: {x.Post}\nYear: {x.Year.ToString()}")));
- }
- //Функционально соответствуют SelectSort2======
- static int Compare(Worker l, Worker r)
- {
- return l.Name.CompareTo(r.Name);
- }
- static void SelectSort(Worker[] lrh)
- {
- int k;
- Worker x;
- for (int i = 0; i < lrh.Length; i++)
- {
- k = i;
- x = lrh[i];
- for (int j = i + 1; j < lrh.Length; j++)
- {
- if (Compare(lrh[j], x) > 0)
- {
- k = j;
- x = lrh[j];
- }
- }
- lrh[k] = lrh[i];
- lrh[i] = x;
- }
- }
- //============================================
- static void SelectSort2(ref Worker[] lrh)
- {
- lrh = lrh.OrderByDescending(x => x.Name).ToArray();
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д