Переписать из 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();
}
}
}