• <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;
            }

            性做久久久久久久| 久久福利青草精品资源站| 国产一区二区精品久久凹凸 | 亚洲伊人久久综合中文成人网| 激情久久久久久久久久| 久久久久国产一区二区| 97精品依人久久久大香线蕉97| 丁香狠狠色婷婷久久综合| 久久一区二区三区免费| 国产成人久久精品一区二区三区| 久久久久18| 2021久久国自产拍精品| 怡红院日本一道日本久久| 久久受www免费人成_看片中文| 国内精品九九久久久精品| 思思久久99热免费精品6| 色综合久久中文综合网| 亚洲AV无码久久精品成人| 欧美性猛交xxxx免费看久久久| 久久精品人成免费| 久久人与动人物a级毛片| 久久亚洲精品无码播放| 91精品国产综合久久四虎久久无码一级 | 亚洲国产成人精品久久久国产成人一区二区三区综| 久久精品综合网| 香蕉久久AⅤ一区二区三区| 91久久成人免费| 久久国产精品久久久| 麻豆亚洲AV永久无码精品久久| 人妻无码精品久久亚瑟影视| 99久久精品免费| 久久精品国产福利国产秒| 国内精品久久久久久野外| 久久99精品久久久久久久不卡| 一本久久a久久精品vr综合| 久久精品中文字幕大胸| 久久精品中文无码资源站| 久久久亚洲裙底偷窥综合| 久久精品卫校国产小美女| 亚洲欧洲日产国码无码久久99| 国产69精品久久久久9999APGF|