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;
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.