using System.Collections.Generic;
class NumberStatisticsCalculator
Console.WriteLine("\nNumber Statistics Calculator");
Console.WriteLine("--------------------------");
Console.WriteLine("Enter numbers (type 'done' when finished)");
Queue<int> numberQueue = new Queue<int>();
HashSet<int> uniqueNumbers = new HashSet<int>();
List<int> numberList = new List<int>();
Console.Write("Enter number: ");
string input = Console.ReadLine();
if (input.ToLower() == "done") break;
if (int.TryParse(input, out int number))
numberQueue.Enqueue(number);
uniqueNumbers.Add(number);
Console.WriteLine("Invalid input! Please enter a valid number or 'done'.");
if (numberList.Count == 0)
Console.WriteLine("No numbers were entered. Exiting.");
int totalNumbers = numberList.Count;
double average = numberList.Average();
double median = CalculateMedian(numberList);
int uniqueCount = uniqueNumbers.Count;
Dictionary<int, int> frequencyMap = new Dictionary<int, int>();
foreach (int num in numberList)
if (frequencyMap.ContainsKey(num))
Console.WriteLine("\nStatistics:");
Console.WriteLine("----------");
Console.WriteLine($"Numbers entered: {totalNumbers}");
Console.WriteLine($"Unique numbers: {uniqueCount}");
Console.WriteLine($"Average: {average:F1}");
Console.WriteLine($"Median: {median:F1}");
Console.WriteLine($"Numbers in ascending order: {string.Join(", ", numberList)}");
Console.WriteLine("\nFrequency Analysis:");
foreach (var pair in frequencyMap)
Console.WriteLine($"{pair.Key} appears {pair.Value} time{(pair.Value > 1 ? "s" : "")}");
Console.Write("\nWould you like to process another set? (y/n): ");
string response = Console.ReadLine().ToLower();
if (response != "y") break;
Console.WriteLine("Goodbye!");
static double CalculateMedian(List<int> sortedNumbers)
int count = sortedNumbers.Count;
return sortedNumbers[count / 2];
return (sortedNumbers[(count / 2) - 1] + sortedNumbers[count / 2]) / 2.0;