Advertisement
milen8204

Spiral Matrix

Mar 30th, 2014
234
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.89 KB | None | 0 0
  1. using System;
  2. /* Write a program that reads from the console a positive integer number n (1 ≤ n ≤ 20)
  3.  * and prints a matrix holding the numbers from 1 to n*n in the form of square spiral
  4.  * like in the examples below. Examples:
  5.  * n    matrix
  6.  * 4    1  2  3  4
  7.  *      12 13 14 5
  8.  *      11 16 15 6
  9.  *      10 9  8  7 */
  10.  
  11. class SpiralMatrix
  12. {
  13.     static void Main()
  14.     {
  15.         Console.WriteLine("Enter the side width of the matrix n (n between 1 and 20):");
  16.         int number = 0;
  17.  
  18.         do
  19.         {
  20.             if (int.TryParse(Console.ReadLine(), out number) && (number >= 1) && (number <= 20))
  21.             {
  22.                 break;
  23.             }
  24.             else
  25.             {
  26.                 Console.WriteLine("You have entered an invalid data! Try again!");
  27.             }
  28.         } while (true);
  29.  
  30.         int maxValue = number * number;
  31.         int[,] matrix = new int[number, number];
  32.         int row = 0;
  33.         int column = 0;      
  34.         int counter = 1;
  35.         int side = number;
  36.  
  37.         Console.Clear();
  38.         Console.WriteLine("n  matrix");
  39.         Console.WriteLine("{0}\t",number);
  40.  
  41.         while (counter <= maxValue)
  42.         {
  43.             //loop for adding in matrix uper horisontal row
  44.             for (int i = 0; i < side; i++)
  45.             {
  46.                 matrix[row, column] = counter;
  47.                 counter++;
  48.                 column++;
  49.             }
  50.  
  51.             //setting the position of the nex number
  52.             row++;
  53.             side--; //sets the length of side
  54.             column--;
  55.  
  56.             //loop for adding in matrix right vertical row
  57.             for (int i = 0; i < side; i++)
  58.             {
  59.                 matrix[row, column] = counter;
  60.                 counter++;
  61.                 row++;
  62.             }
  63.  
  64.             //setting the position of the nex number
  65.             column--;
  66.             row--;
  67.            
  68.             //loop for adding in matrix lower horisontal row
  69.             for (int i = 0; i < side; i++)
  70.             {
  71.                     matrix[row, column] = counter;
  72.                     counter++;
  73.                     column--;
  74.             }
  75.  
  76.             //setting the position of the nex number
  77.             row--;
  78.             column++;
  79.             side--;//sets the length of side
  80.  
  81.             //loop for adding in matrix left vertical row
  82.             for (int i = 0; i < side; i++)
  83.             {
  84.                     matrix[row, column] = counter;
  85.                     counter++;
  86.                     row--;
  87.             }
  88.  
  89.             //setting the position of the nex number
  90.             column++;
  91.             row++;
  92.         }
  93.  
  94.         //printing the matrix
  95.         for (int i = 0; i < number; i++)
  96.         {
  97.             for (int j = 0; j < number; j++)
  98.             {
  99.                 Console.Write("{0,4}",matrix[i,j]);
  100.             }
  101.  
  102.             Console.WriteLine();
  103.         }
  104.     }
  105. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement