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

ИИ для рефератов и докладов


  • Экспорт Word по ГОСТу
  • Минимум 80% уникальности текста
  • Поиск релевантных источников в интернете
  • Готовый документ за 2 минуты

Оцени полезность:

14   голосов , оценка 3.929 из 5