[ create a new paste ] login | about

Link: http://codepad.org/KjG1rYsj    [ raw code | output | fork ]

C++, pasted on Jan 17:
#include <iostream>
using namespace std;

typedef unsigned int uint;

class Graph {

public:
    Graph(uint NoOfNodes);
    void addEdge(uint Node1, uint Node2);
    bool hasEdge(uint Node1, uint Node2);
    uint noOfEdges();
    uint noOfNodes();
    void printGraph();
    //int maxGrad();
    //int minGrad();
    //bool reachable(uint Node1, uint Node2);
    ~Graph();
private:
    uint mNoOfNodes;
    uint **AdjacencyMatrix;
};

Graph :: Graph (uint NoOfNodes ) {
    mNoOfNodes = NoOfNodes ;
    AdjacencyMatrix = new uint *[ NoOfNodes ];
    for ( uint i =0; i < NoOfNodes ; i ++)
    AdjacencyMatrix [ i ] = new uint [ NoOfNodes ];
  }

Graph::~Graph() {
    if (mNoOfNodes > 0) delete[] AdjacencyMatrix;
}

void Graph::addEdge(uint Node1, uint Node2)
{
    AdjacencyMatrix[Node1][Node2]=1;
    AdjacencyMatrix[Node2][Node1]=1;
}

bool Graph::hasEdge(uint Node1, uint Node2) {
    if (mNoOfNodes < 1) return false;
    return AdjacencyMatrix[Node1][Node2]==1;
}

uint Graph::noOfEdges() {
    uint cnt = 0;
    for (uint i = 0; i < mNoOfNodes; i++){
        for(uint e=0; e<mNoOfNodes; e++){
            if(AdjacencyMatrix[i][e]==1) cnt++;
	}
    }
    return cnt / 2;
}
uint Graph::noOfNodes() {
    return mNoOfNodes;
}

/*int Graph::maxGrad() {

}

int Graph::minGrad(){

}

bool Graph::reachable(uint Node1, uint Node2){

}*/

void Graph::printGraph(){
    if (noOfNodes() == 0) return;
    cout<<"Anzahl der Knoten: "<<noOfNodes()<<endl;
    cout<<"Anzahl der Kanten: "<<noOfNodes()<<endl;
    //cout<<"Maxgrad: "<<maxGrad()<<endl;
    //cout<<"Mingrad: "<<minGrad()<<endl;
    for(uint z=0; AdjacencyMatrix[z]!=0; z++){
	cout<<"Knoten "<<z+1<<" ist verbunden mit den/dem Knoten: ";
	for(uint e=0; AdjacencyMatrix[e]!=0; e++){
            if(AdjacencyMatrix[z][e]==1) cout<<e+1<<"  ";
            }
	cout<<endl;
	}
    cout<<endl;
    cout<<endl;
}

int main() {
    
    //Statt a, b, c... wird 1, 2, 3... verwendet

    Graph b(8);
    cout << "Beispiel b):" << endl;
    uint n = b.noOfNodes();
    for (uint i = 0; i < n; i++)
    b.addEdge(i, (i+1) % n);
    if (b.hasEdge(3,4))
    cout << "Kante (3,4) existiert!" << endl;
    else cout << "Kante (3,4) existiert nicht!" << endl;
    //b.maxGrad();
    //b.minGrad();
    b.printGraph();

    Graph a(7);
    cout << "Beispiel a):" << endl;
    uint f = a.noOfNodes();
    a.addEdge(0, 2);
    a.addEdge(2, 1);
    a.addEdge(1, 6);
    a.addEdge(2, 4);
    a.addEdge(6, 5);
    a.addEdge(5, 4);
    a.addEdge(4, 3);
    a.addEdge(5, 3);
    if (a.hasEdge(0,5))
    cout << "Kante (0,5) existiert!" << endl;
    else cout << "Kante (0,5) existiert nicht!" << endl;
    //a.maxGrad();
    //a.minGrad();
    a.printGraph();

    return 0;
}


Output:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Beispiel b):
Kante (3,4) existiert!
Anzahl der Knoten: 8
Anzahl der Kanten: 8
Knoten 1 ist verbunden mit den/dem Knoten: 2  8  17  19  34  36  51  53  68  70  85  87  102  104  113  119  130  
Knoten 2 ist verbunden mit den/dem Knoten: 1  3  18  20  35  37  52  54  69  71  86  88  97  103  114  
Knoten 3 ist verbunden mit den/dem Knoten: 2  4  19  21  36  38  53  55  70  72  81  87  98  
Knoten 4 ist verbunden mit den/dem Knoten: 3  5  20  22  37  39  54  56  65  71  82  
Knoten 5 ist verbunden mit den/dem Knoten: 4  6  21  23  38  40  49  55  66  
Knoten 6 ist verbunden mit den/dem Knoten: 5  7  22  24  33  39  50  
Knoten 7 ist verbunden mit den/dem Knoten: 6  8  17  23  34  
Knoten 8 ist verbunden mit den/dem Knoten: 1  7  18  

Segmentation fault


Create a new paste based on this one


Comments: