TMaze::TMaze(int ANumerOfNodes, int ANumberOfLinks) { NumberOfNodes = ANumerOfNodes; NumberOfLinks = ANumberOfLinks; if(!CheckCorrectessOfKand()) { std::cout<<"Error!"; return ; } Nodes = new TNode[NumberOfNodes]; Links = new TLink[NumberOfLinks]; TNode *oNode; bool bSucces = false; for(int iK = 0; iK < NumberOfNodes; iK++) { oNode = new TNode; while(!bSucces) { bSucces = true; oNode->RandomPosition(); for(int iI = 0; iI < iK; iI++) { if(NodeAreEquals(*oNode, Nodes[iI])) { bSucces = false; break; } } } Nodes[iK] = *oNode; } for(int iK = 0; iK < NumberOfLinks; iK++) { bool BSucces = false; TNode oNode1, oNode2; TLink *oLink; while(!BSucces) { oLink = new TLink; BSucces = true; oNode1 = Nodes[rand() % NumberOfNodes]; oNode2 = Nodes[rand() % NumberOfNodes]; if(NodeAreEquals(oNode1, oNode2)) { BSucces = false; } if(BSucces) { Links[iK] = *oLink; for(int iI = 0; iI < iK; iI++) { TLink oLinkTemp = Links[iI]; if(!LinksAreEquals(*oLink, oLinkTemp)) { BSucces = false; } } } } Links[iK] = *oLink; } }