Перевести из Pascal В C# - C# (182558)

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

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

Работяги, пожалуйста помогите. В C# несеку вообще, но надо было сделать задание на С#, а я запилил на Pascal. Вот код:
Листинг программы
  1. uses graphABC;
  2. const r = 90;
  3. var sr, x, x1, y1, x2, y2, xi: integer; a: real;
  4. procedure strelki(x1, y1: integer); {Процедура секунд}
  5. begin
  6. var i:integer;
  7. for i := 0 to 11 do {Рисование чисел по окружности}
  8. begin
  9. a := pi * (i + 10) * 30 / 180;
  10. x2 := 596 + round((r + 30) * cos(a));
  11. y2 := 396 + round((r + 30) * sin(a));
  12. if i > 9 then x2 := x2 - 3;
  13. textout(x2, y2, IntToStr(i + 1));
  14. end;
  15. sr := 120;
  16. setpencolor(clred);
  17. a := pi * (x + 45) * 6 / 180;
  18. x1 := 600 + round(sr * cos(a)); {Рисуется стрелка}
  19. y1 := 400 + round(sr * sin(a));
  20. line(600, 400, x1, y1);
  21. setpencolor(clblack);
  22. setpenwidth(3);
  23. sr:=100;
  24. a := pi * (((xi div 60) mod 12) * 5 + 45) * 6 / 180;
  25. x1 := 600 + round(sr * cos(a)); {Рисуется часовая стрелка}
  26. y1 := 400 + round(sr * sin(a));
  27. line(600, 400, x1, y1);
  28. setpencolor(clgreen);
  29. setpenwidth(2);
  30. sr:=110;
  31. a := pi * ((xi mod 60) + 45) * 6 / 180;
  32. x1 := 600 + round(sr * cos(a)); {Рисуется минутная стрелка}
  33. y1 := 400 + round(sr * sin(a));
  34. line(600, 400, x1, y1);
  35. sleep(1000);
  36. sr := 120;
  37. setpencolor(clwhite);
  38. a := pi * (x + 45) * 6 / 180;
  39. x1 := 600 + round(sr * cos(a)); {Рисуется секундная стрелка (белым)}
  40. y1 := 400 + round(sr * sin(a));
  41. line(600, 400, x1, y1);
  42. setpencolor(clwhite);
  43. setpenwidth(3);
  44. sr:=100;
  45. a := pi * (((xi div 60) mod 12) * 5 + 45) * 6 / 180;
  46. x1 := 600 + round(sr * cos(a)); {Рисуется часовая стрелка (белым)}
  47. y1 := 400 + round(sr * sin(a));
  48. line(600, 400, x1, y1);
  49. setpencolor(clwhite);
  50. setpenwidth(2);
  51. sr:=110;
  52. a := pi * ((xi mod 60) + 45) * 6 / 180;
  53. x1 := 600 + round(sr * cos(a)); {Рисуется минутная стрелка (белым)}
  54. y1 := 400 + round(sr * sin(a));
  55. line(600, 400, x1, y1);
  56. setpenwidth(1);
  57. setpencolor(clblack);
  58. a := pi * (x + 45) * 6 / 180;
  59. x1 := 600 + round(r * cos(a)); {Закрашиваение секундных делений после прохода стрелки}
  60. y1 := 400 + round(r * sin(a));
  61. line(600, 400, x1, y1);
  62.  
  63. setpencolor(clblack); {Рисование круга поверх делений на секунды}
  64. circle(600, 400, 80);
  65. end;
  66. BEGIN
  67. maximizewindow;
  68.  
  69. circle(600, 400, 135); {Рисование круга поверх чисел}
  70. for x := 0 to 60 do
  71. begin
  72. a := pi * x / 30;
  73. x1 := 600 + round(r * cos(a)); {Рисование круга какого-то, из-за которого не рисуются деления в других частях}
  74. y1 := 400 + round(r * sin(a));
  75. line(600, 400, x1, y1);
  76. circle(600, 400, 80);
  77. end;
  78. for xi := 0 to 1000 do
  79. begin
  80. for x := 0 to 60 do {Цикл стрелок}
  81. begin
  82. strelki(x1, y1);
  83. end;
  84. end;
  85. END.
За ранее спасибо

Решение задачи: «Перевести из Pascal В C#»

textual
Листинг программы
  1. using System;
  2. using System.Drawing;
  3. using System.Threading.Tasks;
  4. using System.Windows.Forms;
  5.  
  6. static class Program
  7. {
  8.     const int r = 90;
  9.     static int sr, x, x1, y1, x2, y2, xi;
  10.     static double a;
  11.  
  12.     static Form form;
  13.     static Graphics graphics;
  14.     static Bitmap bitmap;
  15.  
  16.     static void textout(int x2, int y2, string text)
  17.     {
  18.         const int fontWidth = 12;
  19.         var font = new Font(FontFamily.GenericSansSerif, fontWidth);
  20.         graphics.DrawString(text, font, Brushes.Black, x2 - fontWidth / 2, y2 - fontWidth / 2);
  21.         font.Dispose();
  22.     }
  23.  
  24.     static void line(int x2, int y2, int x1, int y1, Color color, int penWidth)
  25.     {
  26.         var pen = new Pen(color, penWidth);
  27.         graphics.DrawLine(pen, x2, y2, x1, y1);
  28.         pen.Dispose();
  29.     }
  30.  
  31.     static void circle(int x1, int y1, int r, Color color)
  32.     {
  33.         var pen = new Pen(color);
  34.         graphics.DrawEllipse(pen, x1 - r, y1 - r, r * 2, r * 2);
  35.         pen.Dispose();
  36.     }
  37.  
  38.     static async Task strelki(int x1, int y1) // Процедура секунд
  39.     {
  40.         int i;
  41.         for (i = 0; i <= 11; i++) // Рисование чисел по окружности
  42.         {
  43.             a = Math.PI * (i + 10) * 30 / 180;
  44.             x2 = 596 + (int)Math.Round((r + 30) * Math.Cos(a));
  45.             y2 = 396 + (int)Math.Round((r + 30) * Math.Sin(a));
  46.             if (i > 9) x2 = x2 - 3;
  47.             textout(x2, y2, (i + 1).ToString());
  48.         }
  49.  
  50.         sr = 120;
  51.         a = Math.PI * (x + 45) * 6 / 180;
  52.         x1 = 600 + (int)Math.Round(sr * Math.Cos(a)); // Рисуется стрелка
  53.         y1 = 400 + (int)Math.Round(sr * Math.Sin(a));
  54.         line(600, 400, x1, y1, Color.Red, 1);
  55.  
  56.         sr = 100;
  57.         a = Math.PI * (((xi / 60) % 12) * 5 + 45) * 6 / 180;
  58.         x1 = 600 + (int)Math.Round(sr * Math.Cos(a)); // Рисуется часовая стрелка
  59.         y1 = 400 + (int)Math.Round(sr * Math.Sin(a));
  60.         line(600, 400, x1, y1, Color.Black, 3);
  61.  
  62.         sr = 110;
  63.         a = Math.PI * ((xi % 60) + 45) * 6 / 180;
  64.         x1 = 600 + (int)Math.Round(sr * Math.Cos(a)); // Рисуется минутная стрелка
  65.         y1 = 400 + (int)Math.Round(sr * Math.Sin(a));
  66.         line(600, 400, x1, y1, Color.Green, 2);
  67.  
  68.         form.Invalidate();
  69.         await Task.Delay(1000);
  70.  
  71.         sr = 120;
  72.         a = Math.PI * (x + 45) * 6 / 180;
  73.         x1 = 600 + (int)Math.Round(sr * Math.Cos(a)); // Рисуется секундная стрелка(белым)
  74.         y1 = 400 + (int)Math.Round(sr * Math.Sin(a));
  75.         line(600, 400, x1, y1, Color.White, 1);
  76.  
  77.         sr = 100;
  78.         a = Math.PI * (((xi / 60) % 12) *5 + 45) *6 / 180;
  79.         x1 = 600 + (int)Math.Round(sr * Math.Cos(a)); // Рисуется часовая стрелка(белым)
  80.         y1 = 400 + (int)Math.Round(sr * Math.Sin(a));
  81.         line(600, 400, x1, y1, Color.White, 3);
  82.  
  83.         sr = 110;
  84.         a = Math.PI * ((xi % 60) +45) *6 / 180;
  85.         x1 = 600 + (int)Math.Round(sr * Math.Cos(a)); // Рисуется минутная стрелка(белым)
  86.         y1 = 400 + (int)Math.Round(sr * Math.Sin(a));
  87.         line(600, 400, x1, y1, Color.White, 2);
  88.  
  89.         a = Math.PI * (x + 45) * 6 / 180;
  90.         x1 = 600 + (int)Math.Round(r * Math.Cos(a)); // Закрашиваение секундных делений после прохода стрелки
  91.         y1 = 400 + (int)Math.Round(r * Math.Sin(a));
  92.         line(600, 400, x1, y1, Color.Black, 1);
  93.  
  94.         // Рисование круга поверх делений на секунды
  95.         circle(600, 400, 80, Color.Black);
  96.     }
  97.  
  98.     [STAThread]
  99.     static void Main()
  100.     {
  101.         Application.EnableVisualStyles();
  102.         Application.SetCompatibleTextRenderingDefault(false);
  103.  
  104.         form = new Form
  105.         {
  106.             Size = new Size(800, 600)
  107.         };
  108.  
  109.         form.Load += async delegate
  110.         {
  111.             bitmap = new Bitmap(form.ClientSize.Width, form.ClientSize.Height);
  112.             graphics = Graphics.FromImage(bitmap);
  113.             graphics.Clear(Color.White);
  114.             form.BackgroundImage = bitmap;
  115.  
  116.             circle(600, 400, 135, Color.Black); // Рисование круга поверх чисел
  117.             for (x = 0; x <= 60; x++)
  118.             {
  119.                 a = Math.PI * x / 30;
  120.                 x1 = 600 + (int)Math.Round(r * Math.Cos(a)); // Рисование круга какого - то, из - за которого не рисуются деления в других частях
  121.                 y1 = 400 + (int)Math.Round(r * Math.Sin(a));
  122.                 line(600, 400, x1, y1, Color.Black, 1);
  123.                 circle(600, 400, 80, Color.Black);
  124.             }
  125.  
  126.             for (xi = 0; xi <= 1000; xi++)
  127.             {
  128.                 for (x = 0; x <= 60; x++)
  129.                 {
  130.                     await strelki(x1, y1);
  131.                 }
  132.             }
  133.         };
  134.  
  135.         Application.Run(form);
  136.     }
  137. }

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


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

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

15   голосов , оценка 4.533 из 5

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

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

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