ellapt

6.14.SpiralNumbers

Dec 13th, 2012
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.31 KB | None | 0 0
  1. using System;
  2. class SpiralNumbers
  3. {
  4. static void Main()
  5. {
  6. string strNum;
  7. int n;
  8. do
  9. {
  10. Console.Write("Please, enter an unsigned integer number 0 < N < 20: ");
  11. }
  12. while ((!int.TryParse(strNum = Console.ReadLine(), out n)) || n <= 0 || n >= 20);
  13. int i=n;
  14. int j=n;
  15. int[,] spiralMatrix = new int[n,n];
  16. int final=n*n;
  17. int rowStart = 0;
  18. int rowEnd = n-1;
  19. int colStart=0;
  20. int colEnd=n-1;
  21. int current = 0;
  22. spiralMatrix[0,0]=0;
  23. string dir="right";
  24. do
  25. {
  26. switch (dir)
  27. {
  28. case "right":
  29. for (j = colStart; j <= colEnd; j++)
  30. {
  31. current++;
  32. spiralMatrix[rowStart, j] =current;
  33. }
  34. dir = "down";
  35. rowStart++;
  36. break;
  37. case "down":
  38. for (i = rowStart; i <= rowEnd; i++)
  39. {
  40. current++;
  41. spiralMatrix[i, colEnd] = current;
  42. }
  43. dir = "left";
  44. colEnd--;
  45. break;
  46. case "left":
  47. for (j = colEnd; j >= colStart; j--)
  48. {
  49. current++;
  50. spiralMatrix[rowEnd, j] = current;
  51. }
  52. dir = "up";
  53. rowEnd--;
  54. break;
  55. case "up":
  56. for (i = rowEnd; i >= rowStart; i--)
  57. {
  58. current++;
  59. spiralMatrix[i, colStart] = current;
  60. }
  61. dir = "right";
  62. colStart++;
  63. break;
  64. default:
  65. Console.WriteLine("Unknown error");
  66. break;
  67. }
  68. } while (current < final);
  69. for (i = 0; i < n; i++)
  70. {
  71. for (j = 0; j < n; j++)
  72. {
  73. Console.Write("{0,3} ", spiralMatrix[i,j]);
  74. }
  75. Console.WriteLine();
  76. }
  77. }
  78. }
Advertisement
Add Comment
Please, Sign In to add comment