ellapt

DSA2.9.QueueSequence

Jun 2nd, 2013
192
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.76 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. namespace T9.QueueSequence
  5. {
  6.     class QueueSequence
  7.     {
  8.         static void Main()
  9.         {
  10.             int firstElement = InputData();
  11.             MakeSequence(firstElement, 50);
  12.         }
  13.  
  14. /// <summary>
  15. /// Prints the task; accepts the input data, checks it and if valid returns it; if not valid, loops until valid input  
  16. /// </summary>
  17. /// <returns>an integer number entered by the console</returns>
  18.         private static int InputData()
  19.         {
  20.             Console.WriteLine("Given the sequence:\nS1=N; S2=S1+1; S3=2*S1+1; S4=S1+2; S5=S2+1; S6=2*S2+1; S7=S2+2;... ");
  21.             Console.WriteLine("Using Queue<T> class print its first 50 members for given N.\n");
  22.  
  23.             Console.Write("Enter first element of the sequence: ");
  24.             string input = "";
  25.             int firstElement;
  26.             do
  27.             {
  28.                 input = Console.ReadLine();
  29.             }
  30.             while (!int.TryParse(input, out firstElement));
  31.  
  32.             return firstElement;
  33.         }
  34. /// <summary>
  35. /// Generates a sequence S1=N; S2=S1+1; S3=2*S1+1; S4=S1+2; S5=S2+1; S6=2*S2+1; S7=S2+2;... using Queue<T> class and prints it
  36. /// </summary>
  37. /// <param name="firstElem">The first element of the sequence</param>
  38. /// <param name="count">The count of elements to be generated and printed</param>
  39.         public static void MakeSequence(int firstElem, int count)
  40.         {
  41.             Queue<int> genericElements = new Queue<int>();
  42.             int n = (count - 1) / 3;
  43.             genericElements.Enqueue(firstElem);
  44.             Console.WriteLine("The first 50 elements of the sequence:\n{0,4}", firstElem);
  45.             for (int i = 0; i < n; i++)
  46.             {
  47.                 int seed = genericElements.Dequeue();
  48.                 int item1 = seed + 1;
  49.                 genericElements.Enqueue(item1);
  50.                 int item2 = 2 *seed + 1;
  51.                 genericElements.Enqueue(item2);
  52.                 int item3 = seed + 2;
  53.                 genericElements.Enqueue(item3);
  54.                 Console.Write("{0,4}, {1,4}, {2,4}\n", item1, item2, item3);
  55.              }
  56.             int residue = (count - 1) % 3;  //let's fill the sequence to its end
  57.             //  after the (1+count/3)-th element is dequeued, there'll still be elements in the queue
  58.             int lastSeed=genericElements.Dequeue();
  59.             switch (residue)
  60.             {
  61.                 case 1:
  62.                     Console.Write("{0,4}\n", lastSeed+1);
  63.                     break;
  64.                 case 2:
  65.                     Console.Write("{0,4}, {1,4}\n", lastSeed + 1, (2 * lastSeed + 1));
  66.                     break;
  67.                 case 0:
  68.                 default:
  69.                     break;
  70.             }
  71.         }
  72.     }
  73. }
Advertisement
Add Comment
Please, Sign In to add comment