面對物件程式設計--前三次總結
PTA大作業2--7-2
題目集7-2的題目是串列埠字元解析,RS232是串列埠常用的通訊協議,在非同步通訊模式下,串列埠可以一次傳送5~8位資料,收發雙方之間沒有資料傳送時線路維持高電平,相當於接收方持續收到資料“1”(稱為空閒位),傳送方有資料傳送時,會在有效資料(5~8位,具體位數由通訊雙方提前設定)前加上1位起始位“0”,在有效資料之後加上1位可選的奇偶校驗位和1位結束位“1”。請編寫程式,模擬串列埠接收處理程式,注:假定有效資料是8位,奇偶校驗位採用奇校驗。
題目要求:過濾掉空閒、起始、結束以及奇偶校驗位之後的資料,資料之前加上序號和英文冒號。
如有多個數據,每個資料單獨一行顯示。
若資料不足11位或者輸入資料全1沒有起始位,則輸出"null data",
若某個資料的結束符不為1,則輸出“validate error”。
若某個資料奇偶校驗錯誤,則輸出“parity check error”。
若資料結束符和奇偶校驗均不合格,輸出“validate error”。
如:11011或11111111111111111。
例如:
1:11101011
2:01001101
3:validate error
整體思路介紹
- 該題目要求先判斷輸入的字串長度是否小於11,如諾是,則輸出"null data"
- 再則判斷結束符是不是為1,如果不是1的話·,則輸出“validate error”,如諾為1,則進行下一步操作。
- 再跟據二進位制來判斷奇偶效驗是不是正確,錯誤的話,則輸出“parity check error”。
- 如果都不合格,那就輸出“validate error”。
度量分析
圈複雜度分析使用SourceMonitor軟體
核心程式碼分析
判斷長度是否大於11
前標計算方法:
判斷結束符和二進位制算出來的奇偶效驗是否正確:
判斷之後進行輸出:
每十個進行判斷:
優點
- 判斷條件清晰,可修改性高。
- 把判斷輸出放一起,看起來比較易懂。
缺點
- if-else語句用的太多了,導致太複雜。
PTA大作業3--7-1
題目集7-1的題目是:點線形系列1-計算兩點之間的距離 。
題目要求:4個double型別的實數,兩個點的x,y座標,依次是x1、y1、x2、y2,兩個點的座標之間以空格分隔,每個點的x,y座標以英文“,”分隔。例如:0,0 1,1或0.1,-0.3 +3.5,15.6。
若輸入格式非法,輸出"Wrong Format"。
若輸入格式合法但座標點的數量超過兩個,輸出“wrong number of points”。
整體思路介紹
1.該題目要求輸入四個數,也就是兩個點的座標;
2.判斷輸入是否合法,不合法則輸出"Wrong Format"。
3.諾合法,判斷輸入的座標點的個數,如果超過兩個,輸出“wrong number of points”。
4.通過兩座標點之間的計算公式,計算輸入的兩個座標點之間的距離公式。
度量分析
圈複雜度分析使用SourceMonitor軟體
核心程式碼:
空格分離
String[] s2=s1.split(" ");
判斷合法:
for(int i=0;i<s2.length;i++)
{
String[] s3=s2[i].split(",");//逗號分離
if(s3.length>2)
flag=1;
for(int j=0;j<s3.length;j++)
{
index=0;
for(int k=0;k<s3[j].length();k++)
{
if(s3[j].charAt(k)=='.'){
index++;
if(s3[j].length()==k+1)
flag=1;
}
}
if(index>=2){
flag=1;
}
if(s3[j].charAt(0)=='-'||s3[j].charAt(0)=='+')
{
if(s3[j].charAt(1)<'0'||s3[j].charAt(1)>'9')
flag=1;
if(s3[j].charAt(1)=='0'&&s3[j].charAt(2)!='.')
flag=1;
}
if(s3[j].charAt(0)=='0'&&s3[j].charAt(1)!='.')
flag=1;
}
}
字元型轉換為浮點型
double[] a=new double[4];
for(int i=0;i<s2.length;i++){
String[] s3=s2[i].split(",");
if(i==0){
for(int j=0;j<4;j++){
a[j]=Double.parseDouble(s3[i]);
}
}
if(i==1){
for(int j=2;j<4;j++){
a[j]=Double.parseDouble(s3[i]);
}
}
}
判斷合法和長度後輸出
if(flag==1){
System.out.printf("Wrong Format");
}
else if(s2[].length>2){
System.out.printf("wrong number of points");
}
合法並且長度對之後,賦值計算輸出:
else{
double x1=a[0];
double y1=a[1];
double x2=a[2];
double y2=a[3];
double distance=Math.sqrt(((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)));
System.out.println(distance);
}
PTA大作業2--7-2
題目集7-2的題目是點線形系列2-線的計算,
題目要求:使用者輸入一組選項和資料,進行與直線有關的計算。選項包括:
1:輸入兩點座標,計算斜率,若線條垂直於X軸,輸出"Slope does not exist"。
2:輸入三個點座標,輸出第一個點與另外兩點連線的垂直距離。
3:輸入三個點座標,判斷三個點是否在一條線上,輸出true或者false。
4:輸入四個點座標,判斷前兩個點所構成的直線與後兩點構成的直線是否平行,輸出true或者false.
5:輸入四個點座標,計算輸出前兩個點所構成的直線與後兩點構成的直線的交點座標,x、y座標之間以英文分隔",",並輸出交叉點是否在兩條線段之內(不含四個端點)的判斷結果(true/false),判斷結果與座標之間以一個英文空格分隔。若兩條線平行,沒有交叉點,則輸出"is parallel lines,have no intersection point"。
整體思路介紹
度量分析
圈複雜度分析使用SourceMonitor軟體
串列埠字元解析