UVA 706

來源:互聯網
上載者:User

題目連結地址   706 - LCD Display

/** 706 - LCD Display* 作者 儀冰* QQ 974817955** 【問題描述】* 就是讓0-9之間的數變成顯示器顯示的形式。看輸入輸出範例。** 【輸入範例】2 123453 678900 0* 【輸出範例】      --   --        --   |    |    | |  | |   |    |    | |  | |      --   --   --   --   | |       |    |    |   | |       |    |    |      --   --        -- ---   ---   ---   ---   ---|         | |   | |   | |   ||         | |   | |   | |   ||         | |   | |   | |   | ---         ---   ---|   |     | |   |     | |   ||   |     | |   |     | |   ||   |     | |   |     | |   | ---         ---   ---   ---*/#include <iostream>#include <cstring>using namespace std;const int SIZE = 8;//經分析0-9共10個數字,一共有5個不同的部分,//不外乎是從這5部分中選幾部分組合而成void FirstPart(int i, int lcTotalSize, int lcSize);void SecondPart(int i, int lcTotalSize, int lcSize);void ThirdPart(int i, int lcTotalSize, int lcSize);void FourthPart(int i, int lcTotalSize, int lcSize);void FifthPart(int i, int lcTotalSize, int lcSize);int main(){    int lcSize = 1;         //LC顯示器的大小(即題目中輸入的s)    int lcTotalSize = 0;    //顯示器顯示數位大小    int number = 0;         //顯示的數字串    int numberOfLc[SIZE];   //把數字串一位一位拆分存到此數組    int len = 0;            //紀錄numberOfLc數組的長度//    int count = 0;          //計數器,為了最後一組資料不輸出換行。    int numberLength = 0;   //紀錄數字串的長度    while (cin >> lcSize >> number)    {        if ((lcSize==0) && (number==0))        {            break;        }        //if (count > 0)        //{        //    cout << endl;        //}        //count++;        memset(numberOfLc, -1, sizeof(numberOfLc)); //初始化數組        numberLength = 0; //初始化字串長度        //把number一位一位的拆分        if (number == 0)        {            numberOfLc[numberLength] = 0;            numberLength++;        }        while (number)        {            numberOfLc[numberLength] = number%10;            numberLength++;            number /= 10;        }        lcTotalSize = (lcSize<<1) + 3;  //計算輸出結果的總行數        for (int i=1; i<=lcTotalSize; i++)        {            for (int j=numberLength-1; j>=0; j--)            {                switch (numberOfLc[j])                {                    case 0:                         if ((i == 1) || (i == lcTotalSize))                         {                             //顯示0的第一行或最後一行                             SecondPart(i, lcTotalSize, lcSize);                         }                         else if (i == (lcTotalSize>>1)+1)                         {                             //顯示0的中間行                             FirstPart(i, lcTotalSize, lcSize);                         }                         else                         {                             //顯示0的其它行                             FifthPart(i, lcTotalSize, lcSize);                         }                         if (j > 0)                         {                             //每一行的最後不輸出空格,否則每一個數字後輸出空格                             cout << " ";                         }                         break;                    case 1:                         if ((i==1) || (i==(lcTotalSize>>1)+1) || (i==lcTotalSize))                         {                             //顯示1的第一行或中間行或最後一行                             FirstPart(i, lcTotalSize, lcSize);                         }                         else                         {                             //顯示1的其它行                             ThirdPart(i, lcTotalSize, lcSize);                         }                         if (j > 0)                         {                             //每一行的最後不輸出空格,否則每一個數字後輸出空格                             cout << " ";                         }                         break;                    case 2:                         if ((i==1) || (i==(lcTotalSize>>1)+1) || (i==lcTotalSize))                         {                             //顯示2的第一行或中間行或最後一行                             SecondPart(i, lcTotalSize, lcSize);                         }                         else if((i>1) && (i<(lcTotalSize>>1)+1))                         {                             //顯示2的上半段                             ThirdPart(i, lcTotalSize, lcSize);                         }                         else                         {                             //顯示2的下半段                             FourthPart(i, lcTotalSize, lcSize);                         }                         if (j > 0)                         {                             //每一行的最後不輸出空格,否則每一個數字後輸出空格                             cout << " ";                         }                         break;                    case 3:                         if ((i==1) || (i==(lcTotalSize>>1)+1) || (i==lcTotalSize))                         {                             //顯示3的第一行或中間行或最後一行                             SecondPart(i, lcTotalSize, lcSize);                         }                         else                         {                             //顯示3的其它行                             ThirdPart(i, lcTotalSize, lcSize);                         }                         if (j > 0)                         {                             //每一行的最後不輸出空格,否則每一個數字後輸出空格                             cout << " ";                         }                         break;                    case 4:                         if ((i==1) || (i==lcTotalSize))                         {                             //顯示4的第一行或最後一行                             FirstPart(i, lcTotalSize, lcSize);                         }                         else if (i == (lcTotalSize>>1)+1)                         {                             //顯示4的中間行                             SecondPart(i, lcTotalSize, lcSize);                         }                         else if ((i>1) && (i<(lcTotalSize>>1)+1))                         {                             //顯示4的上半段                             FifthPart(i, lcTotalSize, lcSize);                         }                         else                         {                             //顯示4的下半段                             ThirdPart(i, lcTotalSize, lcSize);                         }                         if (j > 0)                         {                             //每一行的最後不輸出空格,否則每一個數字後輸出空格                             cout << " ";                         }                         break;                    case 5:                         if ((i==1) || (i==(lcTotalSize>>1)+1) || (i==lcTotalSize))                         {                             //顯示5的第一行或中間行或最後一行                             SecondPart(i, lcTotalSize, lcSize);                         }                         else if ((i>1) && (i<(lcTotalSize>>1)+1))                         {                             //顯示5的上半段                             FourthPart(i, lcTotalSize, lcSize);                         }                         else                         {                             //顯示5的下半段                             ThirdPart(i, lcTotalSize, lcSize);                         }                         if (j > 0)                         {                             //每一行的最後不輸出空格,否則每一個數字後輸出空格                             cout << " ";                         }                         break;                    case 6:                         if ((i==1) || (i==(lcTotalSize>>1)+1) || (i==lcTotalSize))                         {                             //顯示6的第一行或中間行或最後一行                             SecondPart(i, lcTotalSize, lcSize);                         }                         else if ((i>1) && (i<(lcTotalSize>>1)+1))                         {                             //顯示6的上半段                             FourthPart(i, lcTotalSize, lcSize);                         }                         else                         {                             //顯示6的下半段                             FifthPart(i, lcTotalSize, lcSize);                         }                         if (j > 0)                         {                             //每一行的最後不輸出空格,否則每一個數字後輸出空格                             cout << " ";                         }                         break;                    case 7:                         if (i == 1)                         {                             //顯示7的第一行                             SecondPart(i, lcTotalSize, lcSize);                         }                         else if ((i==(lcTotalSize>>1)+1) || (i==lcTotalSize))                         {                             //顯示7的中間行或最後一行                             FirstPart(i, lcTotalSize, lcSize);                         }                         else                         {                             //顯示其它行                             ThirdPart(i, lcTotalSize, lcSize);                         }                         if (j > 0)                         {                             //每一行的最後不輸出空格,否則每一個數字後輸出空格                             cout << " ";                         }                         break;                    case 8:                         if ((i==1) || (i==(lcTotalSize>>1)+1) || (i==lcTotalSize))                         {                             //顯示8的第一行或中間行或最後一行                             SecondPart(i, lcTotalSize, lcSize);                         }                         else                         {                             //顯示8的其它行                             FifthPart(i, lcTotalSize, lcSize);                         }                         if (j > 0)                         {                             //每一行的最後不輸出空格,否則每一個數字後輸出空格                             cout << " ";                         }                         break;                    case 9:                         if ((i==1) || (i==(lcTotalSize>>1)+1) || (i==lcTotalSize))                         {                             //顯示9的第一行或中間行或最後一行                             SecondPart(i, lcTotalSize, lcSize);                         }                         else if ((i>1) && (i<(lcTotalSize>>1)+1))                         {                             //顯示9的上半段                             FifthPart(i, lcTotalSize, lcSize);                         }                         else                         {                             //顯示9的下半段                             ThirdPart(i, lcTotalSize, lcSize);                         }                         if (j > 0)                         {                             //每一行的最後不輸出空格,否則每一個數字後輸出空格                             cout << " ";                         }                         break;                   default : break;                }            } //內層for (int j=0; j<len; j++)結束            cout << endl;        } //外層for (int i=1; i<=lcTotalSize; i++)結束        cout << endl;    } //while迴圈結束    return 0;}void FirstPart(int i, int lcTotalSize, int lcSize){    for (int k=0; k<lcSize+2; k++)    {        cout << " ";    }}void SecondPart(int i, int lcTotalSize, int lcSize){    cout << " ";    for (int k=0; k<lcSize; k++)    {        cout << "-";    }    cout << " ";}void ThirdPart(int i, int lcTotalSize, int lcSize){    for (int k=0; k<lcSize+1; k++)    {        cout << " ";    }    cout << "|";}void FourthPart(int i, int lcTotalSize, int lcSize){    cout << "|";    for (int k=0; k<lcSize+1; k++)    {        cout << " ";    }}void FifthPart(int i, int lcTotalSize, int lcSize){    cout << "|";    for (int k=0; k<lcSize; k++)    {        cout << " ";    }    cout << "|";}


 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.