Example #1
0
				std::string strGPGGA()const{
					// 失敗することが多いので、エラー処理を加えて無視するようにする
					try{
						std::string tmp;
						tmp = boost::format("$GPGGA,").str();
						hmLib::date UTCD;
						UTCD.from_time(getUTC());
						tmp += (boost::format("%02d%02d%02d.%03d,") % UTCD.Hour%UTCD.Min%UTCD.Sec%UTCD.mSec).str();
						int d = (int)abs(getPos().y);
						int m = (int)abs(getPos().y*60.) - d * 60;
						int n = (int)abs(getPos().y*600000.) - d * 600000 - m * 10000;
						tmp += (boost::format("%02d%02d.%04d,%c,") % d%m%n % (getPos().y > 0 ? 'N' : 'S')).str();
						d = (int)abs(getPos().x);
						m = (int)abs(getPos().x*60.) - d * 60;
						n = (int)abs(getPos().x*600000.) - d * 600000 - m * 10000;
						tmp += (boost::format("%03d%02d.%04d,%c,") % d%m%n % (getPos().x > 0 ? 'E' : 'W')).str();
						tmp += (boost::format("%d,%02d,%02d.%d,") % (int)getFail() % 3 % 1 % 0).str();
						d = (int)getHeight();
						m = (int)(getHeight()*10.) - d * 10;
						tmp += (boost::format("%05d,%d,M,") % d%m).str();
						tmp += (boost::format("%04d.%d,M,%03d.%d,0000*") % 0 % 0 % 0 % 0).str();
						char csum = 0;
						for(int i = 1; i < (int)tmp.size() - 1; i++)csum ^= tmp[i];
						tmp.push_back(csum);
						tmp.push_back(0x0d);
						tmp.push_back(0x0a);
						return tmp;
					}
					catch(const std::exception& ex){
						std::string tmp = ex.what();
						return tmp;
					}
				}
Example #2
0
int main() {
	while (1 == scanf("%s", s)) {
		int j = 1; 
		for (int i = 0; s[i]; ++i)
		  str[j++] = s[i];
		for (int i = 0; s[i]; ++i)
		  str[j++] = s[i];
		str[j] = '\0';
		scanf("%s", s + 1);
		getFail();
		bool f = false;
		int k = 0, len = (int) strlen(s + 1);
		for (int i = 1; i < j; ++i) {
			while (k > 0 && s[k + 1] != str[i]) k = p[k];
			if (s[k + 1] == str[i]) ++k;
			if (k == len) {
				f = true;
				break;
			}
		}
		if (f) puts("yes");
		else puts("no");
	}
	return 0;
}
Example #3
0
void find(char* T,char *P,int f[])
{
    int n = strlen(T),m = strlen(P);
    getFail(P,f);
    int j = 0;
    for(int i = 0;i < n;++i)
    {
        while(j && P[j] != T[i]) j = f[j];
        if(P[j] == T[i]) j++;
        if(j == m) printf("%d\n",i-m+1);
    }
}
Example #4
0
int kmp_find(unsigned char *T,unsigned char *P)//在T中寻找P出现的位置
{
	int n=strlen_unsigned(T),m=strlen_unsigned(P);
	getFail(P);
	int j=0;
	for(int i=0;i<n;i++)
	{
		while(j&&P[j]!=T[i])	j=Fail[j];
		if(P[j]==T[i])	j++;
		if(j==m)	return 1;//匹配成功
	}
	return 0;//匹配失败
}
Example #5
0
bool judge(int* T,int* P,int* f){
    int N = 2 * n - 1,M = n - 1;
    getFail(P,f);
    int j = 0;
    for(int i = 0;i < N;++i){
        while(j && P[j] != T[i % n])
            j = f[j];
        if(P[j] == T[i % n])
            j++;
        if(j == M){
            return true;
        }
    }
    return false;
}
Example #6
0
int main()
{
	scanf("%s", s); n = strlen(s);
	getFail();
	//for(int i = 0; i < n; i++) printf("%3c ", s[i]); puts("");
	//for(int i = 1; i <= n; i++) printf("%3d ", fail[i]); puts("");
	int cycle = -1;
	for(int i = 1; i <= n; i++)
	{
		int mid = 2 * fail[i] - i, res = i;
		if((i - mid) % 2) continue;
		cycle = (i - mid) / 2;
		if(i % cycle == 0 && mid % cycle == 0) res = cycle;
		printf("%d%s", res, i == n ? "\n" : " ");
	}
	for(int i = 0; i < cycle; i++) putchar(s[i]); puts("");
	return 0;
}
Example #7
0
				int normal_draw(dxO& dxo)override{
					try{
						try{
							IsDataModeMUIBut.set(Pint(70, 20), "Data");
							dxo.draw(Pint(5, 5), IsDataModeMUIBut);
						}
						catch(const hmLib::inquiries::unconnected_exception&){
							dxo.draw(Pint(5, 5), dxoStrP(Pint(70, 20), "Data", getClr(error, strobj)));
						}

						try{
							int gpsCh;
							dxRGB clr;
							if(inq_getPic_GPSCh() == inq_getRequest_GPSCh()){ clr = getClr(normal, butobj); } else{ clr = getClr(active, butobj); }

							if(inq_getRequest_GPSCh()){ gpsCh = 1; } else{ gpsCh = 0; }

							SetGPSNumBut.set(Pint(70, 20), (boost::format("GPS#:%d") % (int)gpsCh).str(), clr);
							auto ans = dxo.draw(Pint(80, 5), SetGPSNumBut);
							if(ans == -1){
								signal_changeGPSCh();
							}

						}
						catch(const hmLib::inquiries::unconnected_exception&){
							dxo.draw(Pint(80, 5), dxoStrP(Pint(70, 20), "NoCnct", getClr(error, strobj)));
						}

						try{
							auto Data = GPSData;//inquiry_getGPSData();
							auto Time = Data.getTime();
							dxo.draw(Pint(155, 5), dxoStrP(Pint(70, 20), (boost::format("Fail:%d") % static_cast<int>(Data.getFail())).str(), getTimeStrClr(Time)));
						}
						catch(const hmLib::inquiries::unconnected_exception&){
							dxo.draw(Pint(155, 5), dxoStrP(Pint(70, 20), "NoCnct", getClr(error, strobj)));
						}

					}
					catch(const hmLib::exceptions::exception& Excp){
						dxo.draw(Pint(0, 0), dxoButIO(getSize(), std::string("=ERR=") + Excp.what(), getClr(error, butobj), true, CLR::White, ALI::left));
					}

					return 0;
				}