void PrintNum(FILE *fp,Num num,Num square) { int n; n = NumLen(num) + 1; do { n--; if(num.num[n] <= '9') fputc((char)num.num[n],fp); else fputc((char)(num.num[n] - '9' - 1 + 'A'),fp); }while(n != 0); fprintf(fp," "); n = NumLen(square) + 1; do { n--; if(square.num[n] <= '9') fputc((char)square.num[n],fp); else fputc((char)(square.num[n] - '9' - 1 + 'A'),fp); }while(n != 0); fprintf(fp,"\n"); }
int IsPalindrom(Num num) { int n,i,half; n = NumLen(num); half = n / 2; for(i = n;i > half;i--) { if(num.num[i] != num.num[n - i]) return 0; } return 1; }
Num Square(Num num,short base) { Num result; int i,j,acc = 0,n = NumLen(num); for(i = 0;i < LENGTH;i++) result.num[i] = '0'; for(i = 0;i <= n;i++) { acc = 0; for(j = 0;j <= n;j++) { result.num[i + j] += ((num.num[i] - '0') * (num.num[j] - '0') + acc); acc = (result.num[i + j] - '0') / base; result.num[i + j] = (result.num[i + j] - '0') % base + '0'; } result.num[i + j] += acc; } return result; }
bool NetworkPlan::parse(vector<char*> lines, vector<NodeInfo>& nodes) { const int bufSize = 128; char* chBuf = new char[bufSize]; vector<NumLen> outLinks; vector<string> tokens; _Tcrit = 0; _layers = new vector<vector<NetworkNode*>*>(); _critPaths = new vector<vector<NetworkNode*>*>(); // Добавляем вектор для первого критического пути. _critPaths->push_back(new vector<NetworkNode*>()); int size = lines.size(); // Считывание описания сети~ for (int i = 0; i < size; i++) { istringstream* iss = new istringstream(lines.at(i)); copy(istream_iterator<string>(*iss), istream_iterator<string>(), back_inserter<vector<string>>(tokens)); outLinks.clear(); delete iss; int tmpNum = 0; for (unsigned int i = 0; i < tokens.size(); i++) { int tmpNum2 = 0; int j = 0; double tmpLength = 0; if (i == 0) tmpNum = atoi(tokens.at(i).c_str()); else { iss = new istringstream(tokens.at(i)); j = 0; while (iss->getline(chBuf, bufSize, ',')) { string* strBuf = new string(chBuf); if (j++ == 0) tmpNum2 = atoi(strBuf->substr(1, strBuf->length() - 1).c_str()); else tmpLength = atof(strBuf->substr(0, strBuf->length() - 1).c_str()); delete strBuf; } delete iss; outLinks.push_back(NumLen(tmpNum2, tmpLength)); } } nodes.push_back(NodeInfo(new NetworkNode(tmpNum), outLinks)); tokens.clear(); } //~ delete[] chBuf; return true; }