1. 程式人生 > 其它 >面對物件程式設計--前三次總結

面對物件程式設計--前三次總結

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

整體思路介紹

  1. 該題目要求先判斷輸入的字串長度是否小於11,如諾是,則輸出"null data"
  2. 再則判斷結束符是不是為1,如果不是1的話·,則輸出“validate error”,如諾為1,則進行下一步操作。
  3. 再跟據二進位制來判斷奇偶效驗是不是正確,錯誤的話,則輸出“parity check error”。
  4. 如果都不合格,那就輸出“validate error”。

度量分析

圈複雜度分析使用SourceMonitor軟體

 

核心程式碼分析

判斷長度是否大於11

 

 

 

 

前標計算方法: 

 

判斷結束符和二進位制算出來的奇偶效驗是否正確:

 

 

 

 

 

 

 判斷之後進行輸出:

 

每十個進行判斷:

 

 

 優點

  1. 判斷條件清晰,可修改性高。
  2. 把判斷輸出放一起,看起來比較易懂。

缺點

  1. 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軟體

 

 

 

串列埠字元解析