Guest User

Untitled

a guest
Jul 16th, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.00 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. namespace PROJECT2
  5. {
  6. class MainClass
  7. {
  8. public static void Main (string[] args)
  9. {
  10. Console.WriteLine ("Введите 1, чтобы ромб был напечатан символом '*', ");
  11. Console.WriteLine ();
  12. Console.WriteLine ("Введите 2, чтобы ромб был напечатан символом '+', ");
  13. Console.WriteLine ();
  14. Console.WriteLine ("Введите 3, чтобы ромб был напечатан символом '#'. ");
  15.  
  16. int inputNum = Convert.ToInt32 (Console.ReadLine ());
  17. List<string> forRhombus = new List<string> ();
  18.  
  19.  
  20. switch (inputNum)
  21. {
  22. case 1:
  23. string a = "*";
  24. Console.WriteLine ("Введите нечетную длину стороны ромба от 5 до 15: ");
  25. int lenght1 = Convert.ToInt32 (Console.ReadLine ());
  26. int p = 1;
  27.  
  28. if ((lenght1 >= 5) && (lenght1 <= 15))
  29. {
  30. for (int x = 0; x < lenght1; x++)
  31. {
  32. forRhombus.Add (" ");
  33. }
  34. if (lenght1 % 2 != 0)
  35. {
  36.  
  37. for (int y = 0; y < lenght1; y++)
  38. {
  39.  
  40. if (y == lenght1 / 2.0 + 0.5)
  41. {
  42. forRhombus [y] = a;
  43. Console.WriteLine (forRhombus);
  44.  
  45. }
  46.  
  47. if ((p < y) && (p < lenght1))
  48. {
  49. forRhombus [y + p] = a;
  50. forRhombus [y - p] = a;
  51. p += 1;
  52. }
  53.  
  54. Console.WriteLine (forRhombus);
  55. }
  56. }
  57. }
  58. break;
  59.  
  60.  
  61.  
  62. case 2:
  63. string b = "+";
  64. Console.WriteLine ("Введите нечетную длину стороны ромба от 5 до 15: ");
  65. int lenght2 = Convert.ToInt32 (Console.ReadLine ());
  66.  
  67. break;
  68.  
  69. case 3:
  70. string c = "#";
  71. Console.WriteLine ("Введите нечетную длину стороны ромба от 5 до 15: ");
  72. int lenght3 = Convert.ToInt32 (Console.ReadLine ());
  73.  
  74. break;
  75.  
  76. }
  77.  
  78. }
  79. }
  80.  
  81. private static char[] GetFillRhombus(int size, char foreground, char background = ' ')
  82. {
  83. if (size > 1)
  84. {
  85. char[] map = new char[Convert.ToInt32(Math.Pow((size * 2 - 1), 2))];
  86.  
  87. // Заполнение всего массива задним фоном
  88. for (int i = 0; i < map.Length; i++)
  89. {
  90. map[i] = background;
  91. }
  92.  
  93. // Заполнение верхней части ромба с серединой
  94. for (int i = 1; i < size * 2; i += 2)
  95. {
  96. int startPosition = size * i - i;
  97. for (int j = startPosition; j < startPosition + i; j++)
  98. {
  99. map[j] = foreground;
  100. }
  101. }
  102.  
  103. // Заполнение нижней части ромба без середины
  104. for (int i = 0, j = size - 2 - i; j >= 0; i++, j--)
  105. {
  106. int middlePosition = (size + i) * (size * 2) - (i + 1);
  107. for (int k = middlePosition - j; k < middlePosition + j + 1; k++)
  108. {
  109. map[k] = foreground;
  110. }
  111. }
  112. return map;
  113. }
  114. return null;
  115. }
  116.  
  117. private static void PrintRhombus(char[] map)
  118. {
  119. if (map != null)
  120. {
  121. int size = Convert.ToInt32(Math.Sqrt(map.Length));
  122. for (int i = 0, j = 0; i < map.Length; i++, j++)
  123. {
  124. Console.Write(map[i]);
  125. if (j == size - 1)
  126. {
  127. j = -1;
  128. Console.WriteLine("");
  129. }
  130. }
  131. }
  132. }
  133.  
  134. static void Main(string[] args)
  135. {
  136. char[] rhombus = GetFillRhombus(20, '#', '.');
  137. PrintRhombus(rhombus);
  138. Console.ReadKey();
  139. }
Add Comment
Please, Sign In to add comment