昨天去见导师了,导师把毕业设计的题目说了一下,是一个硬件项目,转台控制系统,代码是已经有了,导师说有些源代码有些地方还没完全实现要求,所以我需要把代码读懂后,进行改进,导师还很贴心地把开发环境也给我了,前段时间看了一下PIC编程的教程,感觉和ANSI C
差别不是很大,只是编译器自己定义了一些接口和关键字,应该不会很难。
话说回来,导师开口就说代码有几千行,吓shi我了,回来一看,也没这么多嘛,我还是很有信心的~
然后就是减肥的事,真的不能更胖了!在家吃习惯了,到这边真是经常饿,但是为了和豆豆去了南方后能给她一个帅气的男盆友,我要忍!!
一切都没有变坏,我确定我尚能掌握,加油!!
~~~~~~~~~~~~我是萌萌的昏割线~~~~~~~~~~~~~
说一下,以后要是出现需要查询ASCII
的情况,别傻了吧唧新建test.cpp
了,直接用Ruby
就好,进入irb
,输入如下代码就可以得到结果:
'9'.ord # => 57
57.chr # => "9"
然后就是一道HOJ
题,题意是给一个字符串进行判断,是回文数还是镜像术,或者两者的特征都具备,题意还是很简单的,我的思路就是通过两次循环,分别判断这两个特征,然后根据两个布尔型变量的值的情况,进行输出。
当然,一开始还是WA
了,看了一下,如果字符串是奇数个,中间那个数没有考虑,改之~
好吧,又发现一个错误,如果只有一个数,肯定是满足回文数的,但是镜像术就不一定满足了,而且刚刚的循环无法判断,算了,写一个额外情况吧,改之~
但是,万万没想到,居然还是WA
。。。
想了好半天,考虑了无数种情况,还是不行,算了,就这样吧,代码如下:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
using namespace std;
int main(){
int pair[100], len;
for(int i = 0; i < 100; i++) pair[i] = 0;
pair[(int)'0'] = (int)'0';
pair[(int)'A'] = (int)'A';
pair[(int)'E'] = (int)'3';
pair[(int)'H'] = (int)'H';
pair[(int)'I'] = (int)'I';
pair[(int)'J'] = (int)'L';
pair[(int)'L'] = (int)'J';
pair[(int)'M'] = (int)'M';
pair[(int)'O'] = (int)'O';
pair[(int)'S'] = (int)'2';
pair[(int)'T'] = (int)'T';
pair[(int)'U'] = (int)'U';
pair[(int)'V'] = (int)'V';
pair[(int)'W'] = (int)'W';
pair[(int)'X'] = (int)'X';
pair[(int)'Y'] = (int)'Y';
pair[(int)'S'] = (int)'5';
pair[(int)'1'] = (int)'1';
pair[(int)'2'] = (int)'S';
pair[(int)'3'] = (int)'E';
pair[(int)'5'] = (int)'Z';
pair[(int)'8'] = (int)'8';
char str[30];
bool state[4];
while(scanf("%s", str) != EOF){
cout << str << ' ';
len = strlen(str);
if(len == 1){
if(pair[(int)str[0]] == (int)str[0]) cout << "-- is a mirrored palindrome." << endl << endl;
else cout << "-- is a regular palindrome." << endl << endl;
}else{
bool isPal = false, isMir = false;
for (int i = 0, j = len - 1; i < j; i++, j--){
if ((str[i] == 'O' && str[j] == '0') || (str[i] == '0' && str[j] == 'O')) isPal = true;
else if (str[i] == str[j]) isPal = true;
else{
isPal = false;
break;
}
}
for(int i = 0, j = len - 1; i < j; i++, j--){
if ((str[i] == 'O' && str[j] == '0') || (str[i] == '0' && str[j] == 'O')) isMir = true;
else if(pair[(int)str[i]] == (int)str[j]) isMir = true;
else{
isMir = false;
break;
}
}
if(len % 2 == 1)
if(pair[(int)str[len / 2]] != (int)str[len / 2])
if(isMir)
isMir = false;
if(!isPal && !isMir)
cout << "-- is not a palindrome." << endl << endl;
else if(!isPal && isMir)
cout << "-- is a mirrored string." << endl << endl;
else if(isPal && !isMir)
cout << " -- is a regular palindrome." << endl << endl;
else if(isPal && isMir)
cout << "-- is a mirrored palindrome." << endl << endl;
}
}
}