Переписать из C++ в C#. Структура Worker

Узнай цену своей работы

Формулировка задачи:

Не могу переделать на первый взгляд простую программу из C++ в C# Если кто-нибудь понимает, то помогите пожалуйста
Листинг программы
  1. #include <iostream>
  2. using namespace std;
  3. struct Worker
  4. {
  5. char Name[50];
  6. char Post[25];
  7. int Year;
  8. };
  9. int _tmain(int argc, _TCHAR* argv[])
  10. {
  11. const int col = 10;
  12. int year;
  13. Worker Sheet[col];
  14. InputData(Sheet, col);
  15. cout << endl;
  16. SelectSort(Sheet, col);
  17. OutAllData(Sheet, col);
  18. cout << endl;
  19. cout << "Input year: ";
  20. cin >> year;
  21. OutYearData(Sheet, year, col);
  22. system("pause");
  23. return 0;
  24. }
  25. void InputData(Worker *lrh, int len)
  26. {
  27. for (int i = 0; i < len; ++i)
  28. {
  29. cout << "Input Worker[" << i + 1 << "]\nName: ";
  30. _flushall();
  31. cin.getline(lrh[i].Name, 50);
  32. cout << "Post: ";
  33. cin >> lrh[i].Post;
  34. cout << "Year: ";
  35. cin >> lrh[i].Year;
  36. }
  37. }
  38. void OutAllData(Worker *lrh, int len)
  39. {
  40. for (int i = 0; i < len; ++i)
  41. {
  42. cout << "Out Worker[" << i + 1 << "]\nName: " << lrh[i].Name << endl << "Post: " << lrh[i].Post << endl << "Year: " << lrh[i].Year << endl;
  43. }
  44. }
  45. void OutYearData(Worker *lrh, int year, int len)
  46. {
  47. bool flag = false;
  48. for (int i = 0; i < len; ++i)
  49. {
  50. if (year < lrh[i].Year)
  51. {
  52. flag = true;
  53. cout << "Out Worker[" << i + 1 << "]\nName: " << lrh[i].Name << endl << "Post: " << lrh[i].Post << endl << "Year: " << lrh[i].Year << endl;
  54. }
  55. }
  56. if (flag == false)
  57. cout << "Sorry :" << endl;
  58. }
  59. int compare(const Worker* struct1, const Worker* struct2)
  60. {
  61. int result;
  62. result = strcmp(struct1->Name, struct2->Name);
  63. return result;
  64. }
  65. void Fack(Worker *l, Worker *r)
  66. {
  67. strcpy_s(l->Post, r->Post);
  68. strcpy_s(l->Name, r->Name);
  69. l->Year = r->Year;
  70. }
  71. void SelectSort(Worker *lrh, int len)
  72. {
  73. int k;
  74. Worker x;
  75. for (int i = 0; i < len; i++)
  76. {
  77. k = i;
  78. Fack(&x, &lrh[i]);
  79. for (int j = i + 1; j < len; j++)
  80. if (compare(&lrh[j], &x))
  81. {
  82. k = j;
  83. Fack(&x, &lrh[j]);
  84. }
  85. Fack(&lrh[k], &lrh[i]);
  86. Fack(&lrh[i], &x);
  87. }
  88. }

Решение задачи: «Переписать из C++ в C#. Структура Worker»

textual
Листинг программы
  1. using System;
  2. using System.Linq;
  3.  
  4. namespace ConsoleApplication10
  5. {
  6.     public struct Worker
  7.     {
  8.         public string Name { get; set; }
  9.         public string Post { get; set; }
  10.         public int Year { get; set; }
  11.     }
  12.  
  13.     class Program
  14.     {
  15.         const int COUNT = 10;
  16.         static void Main(string[] args)
  17.         {
  18.             var sheet = new Worker[COUNT];
  19.  
  20.             InputData(sheet);
  21.  
  22.             Console.WriteLine();
  23.  
  24.             SelectSort2(ref sheet);//SelectSort(sheet) - если алгоритм сортировки обязателен
  25.             OutAllData(sheet);
  26.  
  27.             Console.Write("\nInput year: ");
  28.             var year = int.Parse(Console.ReadLine());
  29.  
  30.             OutYearData(sheet, year);
  31.  
  32.             Console.ReadKey();
  33.         }
  34.  
  35.         static void InputData(Worker[] lrh)
  36.         {
  37.             for (int i = 0; i < lrh.Length; ++i)
  38.             {
  39.                 Console.Write($"Input Worker[{i + 1}]\nName: ");
  40.                 lrh[i].Name = Console.ReadLine();
  41.                 Console.Write("Post: ");
  42.                 lrh[i].Post = Console.ReadLine();
  43.                 Console.Write("Year: ");
  44.                 lrh[i].Year = int.Parse(Console.ReadLine());
  45.             }
  46.         }
  47.  
  48.         static void OutAllData(Worker[] lrh)
  49.         {
  50.             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()}")));
  51.         }
  52.  
  53.         static void OutYearData(Worker[] lrh, int year)
  54.         {
  55.             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()}")));
  56.         }
  57.  
  58.         //Функционально соответствуют SelectSort2======
  59.         static int Compare(Worker l, Worker r)
  60.         {
  61.             return l.Name.CompareTo(r.Name);
  62.         }
  63.  
  64.         static void SelectSort(Worker[] lrh)
  65.         {
  66.             int k;
  67.             Worker x;
  68.  
  69.             for (int i = 0; i < lrh.Length; i++)
  70.             {
  71.                 k = i;
  72.                 x = lrh[i];
  73.  
  74.                 for (int j = i + 1; j < lrh.Length; j++)
  75.                 {
  76.                     if (Compare(lrh[j], x) > 0)
  77.                     {
  78.                         k = j;
  79.                         x = lrh[j];
  80.                     }
  81.                 }
  82.  
  83.                 lrh[k] = lrh[i];
  84.                 lrh[i] = x;
  85.             }
  86.         }
  87.         //============================================
  88.  
  89.         static void SelectSort2(ref Worker[] lrh)
  90.         {
  91.             lrh = lrh.OrderByDescending(x => x.Name).ToArray();
  92.         }
  93.     }
  94. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут