コード例 #1
0
ファイル: 2_4.cpp プロジェクト: iaalm/recipes
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");
}
コード例 #2
0
ファイル: 2_4.cpp プロジェクト: iaalm/recipes
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;
}
コード例 #3
0
ファイル: 2_4.cpp プロジェクト: iaalm/recipes
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;
}
コード例 #4
0
ファイル: NetworkPlanning.cpp プロジェクト: ddolgushin/study
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;
}