Oplossing opgave 6

static void Main(string[] args)
{
    char input = 'j';
    do
    {
        Console.WriteLine("Onderschepte code");
        char[] code = MaakSignaal();
        Console.WriteLine();
        VisualiseerCode(code);
        AnalyseerCode(code);
        Console.WriteLine("Wenst u opnieuw te beginnen?");
        input = char.Parse(Console.ReadLine());
    } while (input == 'j');
}

private static void AnalyseerCode(char[] code)
{
    Console.WriteLine();
    Console.Write($"Er werden {CountSpecials(code)} speciale tekens gevonden. Dit is ");
    if (!IsVerdacht(CountSpecials(code)))
    {
        Console.Write("g");
    }
    Console.WriteLine("een verdacht signaal");
}

private static void VisualiseerCode(char[] code)
{
    Console.WriteLine("Detectie van de speciale tekens:");
    for (int i = 0; i < code.Length; i++)
    {
        if (NeedsColor(code[i]))
        {
            WriteCharInRed(code[i]);
        }
        else
            Console.Write(".");
    }
}

private static char[] MaakSignaal()
{
    const int S_LENGTH = 100;
    Random r = new Random();
    char[] code = new char[S_LENGTH];
    for (int i = 0; i < code.Length; i++)
    {
        code[i] = (char)r.Next('A', 'Z' + 1);
        Console.Write(code[i]);
    }
    return code;
}

private static bool IsVerdacht(int v)
{

    if (v % 3 == 0)
    {
        return true;
    }
    return false;
}

static bool NeedsColor(char c)
{
    switch (c)
    {
        case 'X':
        case 'Y':
        case 'Z':
        case 'Q':
            return true;
    }
    return false;
}

static void WriteCharInRed(char c)
{
    Console.ForegroundColor = ConsoleColor.Red;
    Console.Write(c);
    Console.ResetColor();
}

static int CountSpecials(char[] ar)
{
    int total = 0;
    for (int i = 0; i < ar.Length; i++)
    {
        if (NeedsColor(ar[i]))
            total++;
    }
    return total;
}

Last updated

Was this helpful?