Array Of Struct And Menu - C# Programming Exercise

In this C# exercise, you are asked to expand the previous exercise (array of points) so that the program displays an interactive menu. The menu should allow the user to choose from the following options:

- Add data for one point.
- Display all the entered points.
- Calculate (and display) the average values for x and y.
- Exit the program.

This exercise will help you learn how to create interactive menus in a C# program, which is very useful for providing a user-friendly interface. Additionally, you will practice working with arrays and calculating average values, which will help you improve your skills in structured programming and data handling.

 Category

Arrays, Structures and Strings

 Exercise

Array Of Struct And Menu

 Objective

Write a C# program that expand the previous exercise (array of points), so that it displays a menu, in which the user can choose to:

- Add data for one point
- Display all the entered points
- Calculate (and display) the average values for x and y
- Exit the program

 Write Your C# Exercise

using System;  // Import the System namespace for basic functionality

// Define the Point struct to store 2D point data and RGB color information
struct Point
{
    public short x;  // X-coordinate of the point (short type)
    public short y;  // Y-coordinate of the point (short type)
    public byte r;  // Red color component (byte type)
    public byte g;  // Green color component (byte type)
    public byte b;  // Blue color component (byte type)
}

class Program  // Define the main class
{
    static void Main()  // The entry point of the program
    {
        // Define an array of Point structs with a size of 1000 to store up to 1000 points
        Point[] points = new Point[1000];
        int pointCount = 0;  // Initialize the counter for the number of points entered

        bool exit = false;  // Variable to control the exit condition of the loop

        // Menu loop to repeatedly show the options until the user chooses to exit
        while (!exit)
        {
            // Display the menu with options
            Console.WriteLine("\nMenu:");
            Console.WriteLine("1. Add data for one point");
            Console.WriteLine("2. Display all entered points");
            Console.WriteLine("3. Calculate and display average values for x and y");
            Console.WriteLine("4. Exit");
            Console.Write("Choose an option (1-4): ");

            // Read the user's menu choice
            string choice = Console.ReadLine();

            // Perform actions based on the user's choice
            switch (choice)
            {
                case "1":
                    // Add data for one point
                    if (pointCount < points.Length)
                    {
                        Console.WriteLine("\nEnter data for Point " + (pointCount + 1) + ":");

                        Console.Write("Enter X coordinate: ");
                        points[pointCount].x = short.Parse(Console.ReadLine());  // Get the X coordinate

                        Console.Write("Enter Y coordinate: ");
                        points[pointCount].y = short.Parse(Console.ReadLine());  // Get the Y coordinate

                        Console.Write("Enter Red color value (0-255): ");
                        points[pointCount].r = byte.Parse(Console.ReadLine());  // Get the red color component

                        Console.Write("Enter Green color value (0-255): ");
                        points[pointCount].g = byte.Parse(Console.ReadLine());  // Get the green color component

                        Console.Write("Enter Blue color value (0-255): ");
                        points[pointCount].b = byte.Parse(Console.ReadLine());  // Get the blue color component

                        pointCount++;  // Increment the counter for the number of points entered
                    }
                    else
                    {
                        Console.WriteLine("Maximum number of points reached.");
                    }
                    break;

                case "2":
                    // Display all entered points
                    if (pointCount > 0)
                    {
                        Console.WriteLine("\nEntered Points:");
                        for (int i = 0; i < pointCount; i++)
                        {
                            Console.WriteLine($"Point {i + 1}: X = {points[i].x}, Y = {points[i].y}, Color = RGB({points[i].r}, {points[i].g}, {points[i].b})");
                        }
                    }
                    else
                    {
                        Console.WriteLine("No points entered yet.");
                    }
                    break;

                case "3":
                    // Calculate and display the average values for x and y
                    if (pointCount > 0)
                    {
                        float sumX = 0, sumY = 0;
                        for (int i = 0; i < pointCount; i++)
                        {
                            sumX += points[i].x;  // Sum of X coordinates
                            sumY += points[i].y;  // Sum of Y coordinates
                        }

                        float avgX = sumX / pointCount;  // Calculate average of X
                        float avgY = sumY / pointCount;  // Calculate average of Y

                        Console.WriteLine($"\nAverage X: {avgX:F2}");
                        Console.WriteLine($"Average Y: {avgY:F2}");
                    }
                    else
                    {
                        Console.WriteLine("No points entered yet to calculate averages.");
                    }
                    break;

                case "4":
                    // Exit the program
                    exit = true;
                    Console.WriteLine("Exiting the program.");
                    break;

                default:
                    // Handle invalid menu choices
                    Console.WriteLine("Invalid choice, please select a valid option.");
                    break;
            }
        }
    }
}

 Share this C# exercise

 More C# Programming Exercises of Arrays, Structures and Strings

Explore our set of C# programming exercises! Specifically designed for beginners, these exercises will help you develop a solid understanding of the basics of C#. From variables and data types to control structures and simple functions, each exercise is crafted to challenge you incrementally as you build confidence in coding in C#.

  •  Books database

    In this C# exercise, you are asked to create a small database that will be used to store information about books. For each book, the following data should be kept:

  •  Triangle V2

    In this C# exercise, you are asked to create a program that asks the user for their name and then displays a triangle made from that name, starting with 1 letter and ...

  •  Rectangle V3

    In this C# exercise, you are asked to create a program that asks the user for their name and a size, then displays a hollow rectangle made from that name.

  •  Centered triangle

    In this C# exercise, you are asked to create a program that asks the user for their name and a size, then displays a hollow rectangle made from t...

  •  Cities database

    In this exercise, you are asked to create a database to store information about cities. In the first approach, you will store only the name...

  •  Banner

    This Exercise in C# involves creating a program that imitates the basic Unix SysV "banner" utility, allowing you to display large texts in a similar manner. The purpo...