Drop links or images here to add them to the editor.

Calculating the stops between stations.

★★★

The Victoria line is a London Underground line that runs between Brixton in south London and Walthamstow Central in the north-east, via the West End. It is printed in light blue on the Tube map and is one of the only two lines on the network to run completely underground. There are sixteen stations on the line. This program outputs the number of stops between two stations on a ticket on the Victoria line.

London underground

Make

Write a program to output how many stops there are between two stations on the Victoria line.

Success Criteria

Remember to add a comment before a subprogram, selection or iteration statement to explain its purpose.

Complete the subprogram called get_station that:

  1. Reads a station from stdin.
  2. If the station is in the station list it returns the name of the station.
  3. If the station is not in the station list it outputs "Invalid station.".
  4. The function is run until a valid station is entered and returned.

Complete the subprogram called calculate_stops that:

  1. Takes a parameter that is an array of the two stations on a ticket.
  2. Returns the number of stops between each station.

Complete the main program so that:

  1. get_station is called to read the first station.
  2. get_station is called again for the second station. Stations can be entered in any order.
  3. calculate_stops is called to calculate the number of stops.
  4. The number of stops is output with plurals correctly used. E.g. 1 stop / 2 stops.

Typical inputs and outputs from the program would be:

Enter station:
Stockwell
Enter station:
Pimlico
Stockwell to Pimlico is 2 stops.
Enter station:
Brixton
Enter station:
Stockwell
Brixton to Stockwell is 1 stop.
Enter station:
Paddington
Invalid station.
Enter station:
Stockwell
Enter station:
Pimlico
Stockwell to Pimlico is 2 stops.
🆘 If you're really stuck, use this Parsons code sorting exercise
Complete program
// London Underground program

using System;

class Submission
{
---
    // -------------------------
    // Subprograms
    // -------------------------
    // Read a valid station name
    static string get_station(string[] stations)
    {
---
        Console.WriteLine("Enter station:");
        string station = Console.ReadLine();
        while (Array.IndexOf(stations, station) == -1)
        {
---
            Console.WriteLine("Invalid station.");
            Console.WriteLine("Enter station:");
            station = Console.ReadLine();
---
        }
---
        return station;
---
    }


---
    // Calculate the number of stops between two stations
    static int calculate_stops(string[] stations, string[] ticket)
    {
---
        int start_at = Array.IndexOf(stations, ticket[0]);
        int stop_at = Array.IndexOf(stations, ticket[1]);
        int stops = Math.Abs(start_at - stop_at);
        return stops;
---
    }


---
    // -------------------------
    // Main program
    // -------------------------
    public static void Main(string[] args)
    {
---
        // Victoria line
        string[] stations = {"Brixton", "Stockwell", "Vauxhall", "Pimlico", "Victoria", "Green Park", "Oxford Circus", "Warren Street", "Euston", "King's Cross", "Highbury & Islington", "Finsbury Park", "Seven Sisters", "Tottenham Hale", "Blackhorse Road", "Walthamstow Central"};
        string[] ticket = {"", ""}; // The two stations on the ticket
        ticket[0] = get_station(stations);
        ticket[1] = get_station(stations);
        int stops = calculate_stops(stations, ticket);
---
        if (stops == 1)
        {
---
            Console.WriteLine($"{ticket[0]} to {ticket[1]} is {stops} stop.");
---
        }
---
        else
        {
---
            Console.WriteLine($"{ticket[0]} to {ticket[1]} is {stops} stops.");
---
        }
---
    }
}