Question
So I have errors that I need help fixing for c++11. This deals with undirected graph in the format of adjacency matrix. prompt: Write a
So I have errors that I need help fixing for c++11. This deals with undirected graph in the format of adjacency matrix.
prompt:
Write a C++ 11 function named is_connected() to determine whether an undirected unweighted graph is connected when the graph is stored in the adjacency matrix format.
Write a main program that hard-codes the entries of the adjacency matrix and then passes the matrix to the is_connected function. Every graph has vertices labeled with consecutive unsigned integers starting at 0.
So I have those done already, and I need help with these compiler issues that make no sense. One of them is I already included the packages for them
Errors:
In file included from lin_0912.cpp:7:0: lin_0912.h: In function bool is_connected(Matrix&): lin_0912.h:129:6: error: vector was not declared in this scope vector< bool >reached(graph.size(),false); ^ lin_0912.h:129:6: note: suggested alternative: In file included from /usr/include/c++/4.8/vector:64:0, from lin_0912.cpp:4: /usr/include/c++/4.8/bits/stl_vector.h:210:11: note: std::vector class vector : protected _Vector_base<_Tp, _Alloc> ^ In file included from lin_0912.cpp:7:0: lin_0912.h:129:14: error: expected primary-expression before bool vector< bool >reached(graph.size(),false); ^ lin_0912.h:129:14: error: expected ; before bool lin_0912.h:130:7: error: queue was not declared in this scope queue< uint8_t > to_be_explored; ^ lin_0912.h:130:7: note: suggested alternative: In file included from /usr/include/c++/4.8/queue:64:0, from lin_0912.cpp:5: /usr/include/c++/4.8/bits/stl_queue.h:93:11: note: std::queue class queue ^ In file included from lin_0912.cpp:7:0: lin_0912.h:130:22: error: expected primary-expression before > token queue< uint8_t > to_be_explored; ^ lin_0912.h:130:24: error: to_be_explored was not declared in this scope queue< uint8_t > to_be_explored; ^ lin_0912.h:137:9: error: reached was not declared in this scope reached.at(current_node)=true; ^ lin_0912.h:146:19: error: reached was not declared in this scope return find(reached.begin(), reached.end(), false) == reached.end(); ^ lin_0912.h:146:56: error: find was not declared in this scope return find(reached.begin(), reached.end(), false) == reached.end(); ^ lin_0912.h:146:56: note: suggested alternative: In file included from /usr/include/c++/4.8/algorithm:62:0, from lin_0912.h:9, from lin_0912.cpp:7: /usr/include/c++/4.8/bits/stl_algo.h:4432:5: note: std::find find(_InputIterator __first, _InputIterator __last, ^ lin_0912.cpp: In function int main(): lin_0912.cpp:23:28: error: invalid initialization of reference of type Matrix& from expression of type Matrix cout< ^ In file included from lin_0912.cpp:7:0: lin_0912.h:126:9: error: in passing argument 1 of bool is_connected(Matrix&) bool is_connected(Matrix & graph) ^ lin_0912.h: In function bool is_connected(Matrix&): lin_0912.h:147:4: warning: control reaches end of non-void function [-Wreturn-type] }
the matrix class:.h
#ifndef MATRIX_H #define MATRIX_H
#include#include #include #include #include
/** * A generic 2-dimensional array class */ template class Matrix { public: /** * Constructor, specifying number of both rows and columns * @param rows the number of rows * @param cols the number of columns */ Matrix( uint16_t rows, uint16_t cols ); /** * Access to an element to allow modification * @param row the row index * @param col the column index * @return reference to the element at that position */ Object & at( uint16_t row, uint16_t col ); /** * Constant access to an element * @param row the row index * @param col the column index * @return constant reference to the element at that position */ const Object & at( uint16_t row, uint16_t col ) const; /** * Destructor to free allocated memory */ ~Matrix(); /** * Copy constructor to make 1-1 copy of existing matrix * @param m the existing matrix to be copied */ Matrix( const Matrix & m ); // Copy constructor /** * Disallow the rvalue copy constructor */ Matrix( const Matrix && m ) = delete; /** * Assignment operator to make 1-1 copy of existing matrix * @param m the existing matrix to be copied */ Matrix & operator= ( const Matrix & m ); // Assignment operator /** * Disallow the rvalue assignment operator */ Matrix & operator= ( const Matrix && m ) = delete; /** * Accessor to determine how many rows are in the matrix * @return the number of rows in the matrix */ uint16_t numrows() const; /** * Accessor to determine how many columns are in the matrix * @return the number of columns in the matrix */ uint16_t numcols() const; private: uint16_t rows; uint16_t cols; Object* data; }; template Matrix::Matrix( uint16_t rows, uint16_t cols ) : rows( rows ), cols( cols ) { data = new Object[ rows * cols ]; } template Matrix::~Matrix() { delete[] data; } template Object & Matrix::at( uint16_t row, uint16_t col ) { assert( row < rows && col < cols ); return data[ cols * row + col ]; } template const Object & Matrix::at( uint16_t row, uint16_t col ) const { assert( row < rows && col < cols ); return data[ cols * row + col ]; } template uint16_t Matrix::numrows() const { return rows; } template uint16_t Matrix::numcols() const { return cols; } bool is_connected(Matrix & graph) { vector< bool >reached(graph.size(),false); queue< uint8_t > to_be_explored; to_be_explored.push(0); while(!to_be_explored.empty()) { uint8_t current_node=to_be_explored.front(); to_be_explored.pop(); reached.at(current_node)=true; for(uint8_t adjacent=0; adjacent
.cpp:
#include #include #include #include #include "lin_0912.h" using namespace std; int main() { Matrix graph(6,6); graph.at(0, 1)=true; graph.at(0,2)=true; graph.at(2,0)=true; graph.at(2,1)=true; graph.at(3,4)=true; graph.at(3,5)=true; graph.at(4,3)=true; graph.at(5,3)=true; cout<< is_connected(graph)<
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started