Перевести из Pascal В C# - C# (182558)
Формулировка задачи:
Работяги, пожалуйста помогите. В C# несеку вообще, но надо было сделать задание на С#, а я запилил на Pascal.
Вот код:
За ранее спасибо
Листинг программы
- uses graphABC;
- const r = 90;
- var sr, x, x1, y1, x2, y2, xi: integer; a: real;
- procedure strelki(x1, y1: integer); {Процедура секунд}
- begin
- var i:integer;
- for i := 0 to 11 do {Рисование чисел по окружности}
- begin
- a := pi * (i + 10) * 30 / 180;
- x2 := 596 + round((r + 30) * cos(a));
- y2 := 396 + round((r + 30) * sin(a));
- if i > 9 then x2 := x2 - 3;
- textout(x2, y2, IntToStr(i + 1));
- end;
- sr := 120;
- setpencolor(clred);
- a := pi * (x + 45) * 6 / 180;
- x1 := 600 + round(sr * cos(a)); {Рисуется стрелка}
- y1 := 400 + round(sr * sin(a));
- line(600, 400, x1, y1);
- setpencolor(clblack);
- setpenwidth(3);
- sr:=100;
- a := pi * (((xi div 60) mod 12) * 5 + 45) * 6 / 180;
- x1 := 600 + round(sr * cos(a)); {Рисуется часовая стрелка}
- y1 := 400 + round(sr * sin(a));
- line(600, 400, x1, y1);
- setpencolor(clgreen);
- setpenwidth(2);
- sr:=110;
- a := pi * ((xi mod 60) + 45) * 6 / 180;
- x1 := 600 + round(sr * cos(a)); {Рисуется минутная стрелка}
- y1 := 400 + round(sr * sin(a));
- line(600, 400, x1, y1);
- sleep(1000);
- sr := 120;
- setpencolor(clwhite);
- a := pi * (x + 45) * 6 / 180;
- x1 := 600 + round(sr * cos(a)); {Рисуется секундная стрелка (белым)}
- y1 := 400 + round(sr * sin(a));
- line(600, 400, x1, y1);
- setpencolor(clwhite);
- setpenwidth(3);
- sr:=100;
- a := pi * (((xi div 60) mod 12) * 5 + 45) * 6 / 180;
- x1 := 600 + round(sr * cos(a)); {Рисуется часовая стрелка (белым)}
- y1 := 400 + round(sr * sin(a));
- line(600, 400, x1, y1);
- setpencolor(clwhite);
- setpenwidth(2);
- sr:=110;
- a := pi * ((xi mod 60) + 45) * 6 / 180;
- x1 := 600 + round(sr * cos(a)); {Рисуется минутная стрелка (белым)}
- y1 := 400 + round(sr * sin(a));
- line(600, 400, x1, y1);
- setpenwidth(1);
- setpencolor(clblack);
- a := pi * (x + 45) * 6 / 180;
- x1 := 600 + round(r * cos(a)); {Закрашиваение секундных делений после прохода стрелки}
- y1 := 400 + round(r * sin(a));
- line(600, 400, x1, y1);
- setpencolor(clblack); {Рисование круга поверх делений на секунды}
- circle(600, 400, 80);
- end;
- BEGIN
- maximizewindow;
- circle(600, 400, 135); {Рисование круга поверх чисел}
- for x := 0 to 60 do
- begin
- a := pi * x / 30;
- x1 := 600 + round(r * cos(a)); {Рисование круга какого-то, из-за которого не рисуются деления в других частях}
- y1 := 400 + round(r * sin(a));
- line(600, 400, x1, y1);
- circle(600, 400, 80);
- end;
- for xi := 0 to 1000 do
- begin
- for x := 0 to 60 do {Цикл стрелок}
- begin
- strelki(x1, y1);
- end;
- end;
- END.
Решение задачи: «Перевести из Pascal В C#»
textual
Листинг программы
- using System;
- using System.Drawing;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- static class Program
- {
- const int r = 90;
- static int sr, x, x1, y1, x2, y2, xi;
- static double a;
- static Form form;
- static Graphics graphics;
- static Bitmap bitmap;
- static void textout(int x2, int y2, string text)
- {
- const int fontWidth = 12;
- var font = new Font(FontFamily.GenericSansSerif, fontWidth);
- graphics.DrawString(text, font, Brushes.Black, x2 - fontWidth / 2, y2 - fontWidth / 2);
- font.Dispose();
- }
- static void line(int x2, int y2, int x1, int y1, Color color, int penWidth)
- {
- var pen = new Pen(color, penWidth);
- graphics.DrawLine(pen, x2, y2, x1, y1);
- pen.Dispose();
- }
- static void circle(int x1, int y1, int r, Color color)
- {
- var pen = new Pen(color);
- graphics.DrawEllipse(pen, x1 - r, y1 - r, r * 2, r * 2);
- pen.Dispose();
- }
- static async Task strelki(int x1, int y1) // Процедура секунд
- {
- int i;
- for (i = 0; i <= 11; i++) // Рисование чисел по окружности
- {
- a = Math.PI * (i + 10) * 30 / 180;
- x2 = 596 + (int)Math.Round((r + 30) * Math.Cos(a));
- y2 = 396 + (int)Math.Round((r + 30) * Math.Sin(a));
- if (i > 9) x2 = x2 - 3;
- textout(x2, y2, (i + 1).ToString());
- }
- sr = 120;
- a = Math.PI * (x + 45) * 6 / 180;
- x1 = 600 + (int)Math.Round(sr * Math.Cos(a)); // Рисуется стрелка
- y1 = 400 + (int)Math.Round(sr * Math.Sin(a));
- line(600, 400, x1, y1, Color.Red, 1);
- sr = 100;
- a = Math.PI * (((xi / 60) % 12) * 5 + 45) * 6 / 180;
- x1 = 600 + (int)Math.Round(sr * Math.Cos(a)); // Рисуется часовая стрелка
- y1 = 400 + (int)Math.Round(sr * Math.Sin(a));
- line(600, 400, x1, y1, Color.Black, 3);
- sr = 110;
- a = Math.PI * ((xi % 60) + 45) * 6 / 180;
- x1 = 600 + (int)Math.Round(sr * Math.Cos(a)); // Рисуется минутная стрелка
- y1 = 400 + (int)Math.Round(sr * Math.Sin(a));
- line(600, 400, x1, y1, Color.Green, 2);
- form.Invalidate();
- await Task.Delay(1000);
- sr = 120;
- a = Math.PI * (x + 45) * 6 / 180;
- x1 = 600 + (int)Math.Round(sr * Math.Cos(a)); // Рисуется секундная стрелка(белым)
- y1 = 400 + (int)Math.Round(sr * Math.Sin(a));
- line(600, 400, x1, y1, Color.White, 1);
- sr = 100;
- a = Math.PI * (((xi / 60) % 12) *5 + 45) *6 / 180;
- x1 = 600 + (int)Math.Round(sr * Math.Cos(a)); // Рисуется часовая стрелка(белым)
- y1 = 400 + (int)Math.Round(sr * Math.Sin(a));
- line(600, 400, x1, y1, Color.White, 3);
- sr = 110;
- a = Math.PI * ((xi % 60) +45) *6 / 180;
- x1 = 600 + (int)Math.Round(sr * Math.Cos(a)); // Рисуется минутная стрелка(белым)
- y1 = 400 + (int)Math.Round(sr * Math.Sin(a));
- line(600, 400, x1, y1, Color.White, 2);
- a = Math.PI * (x + 45) * 6 / 180;
- x1 = 600 + (int)Math.Round(r * Math.Cos(a)); // Закрашиваение секундных делений после прохода стрелки
- y1 = 400 + (int)Math.Round(r * Math.Sin(a));
- line(600, 400, x1, y1, Color.Black, 1);
- // Рисование круга поверх делений на секунды
- circle(600, 400, 80, Color.Black);
- }
- [STAThread]
- static void Main()
- {
- Application.EnableVisualStyles();
- Application.SetCompatibleTextRenderingDefault(false);
- form = new Form
- {
- Size = new Size(800, 600)
- };
- form.Load += async delegate
- {
- bitmap = new Bitmap(form.ClientSize.Width, form.ClientSize.Height);
- graphics = Graphics.FromImage(bitmap);
- graphics.Clear(Color.White);
- form.BackgroundImage = bitmap;
- circle(600, 400, 135, Color.Black); // Рисование круга поверх чисел
- for (x = 0; x <= 60; x++)
- {
- a = Math.PI * x / 30;
- x1 = 600 + (int)Math.Round(r * Math.Cos(a)); // Рисование круга какого - то, из - за которого не рисуются деления в других частях
- y1 = 400 + (int)Math.Round(r * Math.Sin(a));
- line(600, 400, x1, y1, Color.Black, 1);
- circle(600, 400, 80, Color.Black);
- }
- for (xi = 0; xi <= 1000; xi++)
- {
- for (x = 0; x <= 60; x++)
- {
- await strelki(x1, y1);
- }
- }
- };
- Application.Run(form);
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д