Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

C++ Help Create a matrix based graph representation. It will need to support the

ID: 3836451 • Letter: C

Question

C++ Help

Create a matrix based graph representation.

It will need to support the following operations.

Ask the user how many points there are.

Ask the user to label those points, ie "A", "B", "C"...

Define the matrix as a square matrix based on the number of points, also keep an array of the labels.

Repeatedly ask the user to define edges between two points. Add these edges to the matrix.

Have a list method that will list out all of the edges in the graph.

Sample Graph Lab Flow:

How many vertices? 6
What is the label for vertex 1? A
What is the label for vertex 2? B
What is the label for vertex 3? C
What is the label for vertex 4? D
What is the label for vertex 5? E
What is the label for vertex 6? F

Define an edge by listing a pair of vertices, i.e. "A B", or -1 to stop.
A B
Added Edge A->B
B A
Added Edge B->A
-1

Your edges are: AB, BA

Explanation / Answer

Here is the code for you:

#include <iostream>
using namespace std;
int main()
{
    int numOfVertices;
    cout << "How many vertices? ";
    cin >> numOfVertices;
    char labels[numOfVertices];
    int adjacency[numOfVertices][numOfVertices];
    for(int i = 0; i < numOfVertices; i++)
        for(int j = 0; j < numOfVertices; j++)
            adjacency[i][j] = 0;
    for(int i = 0; i < numOfVertices; i++)
    {
       cout << "What is the label for vertex " << i+1 <<"? ";
       cin >>labels[i];
    }
    cout << "Define an edge by listing a pair of vertices, i.e. "A B", or -1 to stop." << endl;
    while(true)
    {
       string temp1, temp2;
        cin >> temp1;
        if(temp1.compare("-1") == 0)
            break;
        cin >> temp2;
        int i, j;
        for(i = 0; i < numOfVertices; i++)
            if(temp1[0] == labels[i])
               break;
        for(j = 0; j < numOfVertices; j++)
           if(temp2[0] == labels[j])      
               break;
        adjacency[i][j] = 1;
        cout << "Added Edge " << temp1[0] << "->" << temp2[0] << endl;  
    }      
    cout << "Your edges are: ";
    for(int i = 0; i < numOfVertices; i++)
        for(int j = 0; j < numOfVertices; j++)
            if(adjacency[i][j] == 1)
                cout << labels[i] << labels[j] << " ";
    cout << endl;          
}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote