• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            技術,瞎侃,健康,休閑……

            mahu@cppblog 人類的全部才能無非是時間和耐心的混合物
            posts - 11, comments - 13, trackbacks - 0, articles - 12
              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

            Booklet Printing

            Posted on 2006-06-16 23:26 mahudu@cppblog 閱讀(435) 評論(0)  編輯 收藏 引用 所屬分類: C/C++
            ???

            When printing out a document, normally the first page is printed first, then the second, then the third, and so on until the end. However, when creating a fold-over booklet, the order of printing must be altered. A fold-over booklet has four pages per sheet, with two on the front and two on the back. When you stack all the sheets in order, then fold the booklet in half, the pages appear in the correct order as in a regular book.

            For example, a 4-page booklet would print on 1 sheet of paper: the front will contain page 4 then page 1, and the back will contain page 2 then page 3.

                                   Front              Back
            ------------- -------------
            | | | | | |
            | 4 | 1 | | 2 | 3 |
            | | | | | |
            ------------- -------------

            Your task is to write a program that takes as input the number of pages to be printed, then generates the printing order.

            Input?

            The input file contains one or more test cases, followed by a line containing the number 0 that indicates the end of the file.

            Each test case consists of a positive integer n on a line by itself, where n is the number of pages to be printed; n will not exceed 100.

            Output?

            For each test case, output a report indicating which pages should be printed on each sheet, exactly as shown in the example. If the desired number of pages does not completely fill up a sheet, then print the word Blank in place of a number. If the front or back of a sheet is entirely blank, do not generate output for that side of the sheet.

            Output must be in ascending order by sheet, front first, then back.

            Sample Input?

            1
            14
            4
            0

            Sample Output?

            Printing order for 1 pages:
            Sheet 1, front: Blank, 1
            Printing order for 14 pages:
            Sheet 1, front: Blank, 1
            Sheet 1, back : 2, Blank
            Sheet 2, front: 14, 3
            Sheet 2, back : 4, 13
            Sheet 3, front: 12, 5
            Sheet 3, back : 6, 11
            Sheet 4, front: 10, 7
            Sheet 4, back : 8, 9
            Printing order for 4 pages:
            Sheet 1, front: 4, 1
            Sheet 1, back : 2, 3

            Solution

            #include?<iostream>
            using?namespace?std;
            #define?PAGES?100

            typedef?
            struct?side{????
            ????
            int?left,right;
            }
            side;

            typedef?
            struct?sheet{
            ????side?front;
            ????side?back;????
            }
            sheet;

            int?numSides;
            sheet?sheets[PAGES];

            void?PrintPages(int?numSides){
            ????
            int?numSidesNew;????
            ????
            int?add,pages;
            ????add?
            =?numSides%4;
            ????
            if(add?!=?0){
            ????????numSidesNew?
            =?numSides?+?4?-?add;????//?增加后的總面數,numSides為實際的總面數
            ????}

            ????
            else
            ????????numSidesNew?
            =?numSides;
            ????pages?
            =?numSidesNew?/?4;????//?總紙張數
            ????for(int?i?=?0;?i?<?pages;?i++){
            ????????sheets[i].front.left?
            =?numSidesNew?-?2*i;
            ????????
            if(sheets[i].front.left?>?numSides){
            ????????????sheets[i].front.left?
            =?0;????//?表明應為blank
            ????????}

            ????????sheets[i].front.right?
            =?2*i+1;
            ????????
            if(sheets[i].front.right?>?numSides){
            ????????????sheets[i].front.right?
            =?0;????//?表明應為blank
            ????????}

            ????????sheets[i].back.left?
            =?2*(i+1);
            ????????
            if(sheets[i].back.left?>?numSides){
            ????????????sheets[i].back.left?
            =?0;????//?表明應為blank
            ????????}

            ????????sheets[i].back.right?
            =?numSidesNew?-?2*i?-?1;
            ????????
            if(sheets[i].back.right?>?numSides){
            ????????????sheets[i].back.right?
            =?0;
            ????????}

            ????}


            ????cout?
            <<?"Printing?order?for?"?<<?numSides?<<?"?pages:"?<<?endl;
            ????
            for(int?j?=?0;?j?<?pages;?j++){
            ????????
            if(sheets[j].front.left?||?sheets[j].front.right){
            ????????????cout?
            <<?"Sheet?"?<<?j+1?<<",?front:?";
            ????????????
            if(sheets[j].front.left)
            ????????????????cout?
            <<?sheets[j].front.left?<<?",";
            ????????????
            else
            ????????????????cout?
            <<?"Blank,";
            ????????????cout?
            <<?"?";
            ????????????
            if(sheets[j].front.right)
            ????????????????cout?
            <<?sheets[j].front.right;
            ????????????
            else
            ????????????????cout?
            <<?"Blank,";
            ????????????cout?
            <<?endl;
            ????????}

            ????????
            if(sheets[j].back.left?||?sheets[j].back.right){
            ????????????cout?
            <<?"Sheet?"?<<?j+1?<<",?back?:?";
            ????????????
            if(sheets[j].back.left)
            ????????????????cout?
            <<?sheets[j].back.left?<<?",";
            ????????????
            else
            ????????????????cout?
            <<?"Blank,";
            ????????????cout?
            <<?"?";
            ????????????
            if(sheets[j].back.right)
            ????????????????cout?
            <<?sheets[j].back.right;
            ????????????
            else
            ????????????????cout?
            <<?"Blank";
            ????????????cout?
            <<?endl;
            ????????}


            ????}

            }



            int?main()
            {
            ????
            int?numSides;
            ????
            while(cin?>>?numSides){
            ????????
            if(numSides?==?0){
            ????????????
            break;
            ????????}

            ????????PrintPages(numSides);
            ????}

            ????
            return?0;
            }

            久久久久噜噜噜亚洲熟女综合| 久久精品中文无码资源站| 影音先锋女人AV鲁色资源网久久| 狠狠色婷婷综合天天久久丁香| 伊人久久精品影院| 无码AV中文字幕久久专区| 嫩草影院久久国产精品| 国产三级观看久久| 久久人人爽人人爽人人片AV高清 | 久久精品国产只有精品66| 久久夜色精品国产亚洲av| 久久久久久久久久久久中文字幕 | 久久综合精品国产一区二区三区 | 国内精品人妻无码久久久影院导航| 欧美伊人久久大香线蕉综合| 久久精品a亚洲国产v高清不卡 | 久久大香萑太香蕉av| 人人狠狠综合久久88成人| 日本精品久久久久中文字幕8| 久久久久av无码免费网| 精品九九久久国内精品| 亚洲欧洲日产国码无码久久99| 久久精品无码一区二区日韩AV | 久久久久无码精品国产app| 亚洲AV无码久久精品成人 | 99久久免费只有精品国产| 国产精品中文久久久久久久 | 人妻精品久久久久中文字幕一冢本| 欧美伊香蕉久久综合类网站| yy6080久久| 久久伊人中文无码| 久久久噜噜噜久久| 久久久青草青青国产亚洲免观| 久久露脸国产精品| 精品无码人妻久久久久久| 国产无套内射久久久国产| 久久久精品国产Sm最大网站| 久久久久亚洲精品无码网址| 久久精品国产清自在天天线| 久久久久国色AV免费看图片| 久久伊人五月天论坛|