zoukankan      html  css  js  c++  java
  • 输出复杂的菱形(续)

    根据上次的帖子改了下,让其更智能

    如能更改边框、内填充、外填充、高度、个数

    效果如下图:

    代码如下所示

      1 #include <iostream>
      2 
      3 using namespace std;
      4 
      5 void DrawRhombus(int totalRhombusHeight, int totalRhombusNum, int maxSpaceNum, int rhombusMiddleLine,char rhombusBorder, char rhombusFill, char rhombusOutFill);
      6 
      7 int main(void){
      8     int totalRhombusHeight;
      9     int totalRhombusNum;
     10     int maxSpaceNum;
     11     int rhombusMiddleLine;
     12     char rhombusBorder;
     13     char rhombusFill;
     14     char rhombusOutFill;
     15     
     16     cout << "Please type the height of rhombus:";
     17     cin >> totalRhombusHeight;
     18     cout << "Please type the numbers of rhombus:";
     19     cin >> totalRhombusNum;
     20     cout << "Please type the border of rhombus:";
     21     cin >> rhombusBorder;
     22     cout << "Please type the fill of rhombus:";
     23     cin >> rhombusFill;
     24     cout << "Please type the out fill of rhombus:";
     25     cin >> rhombusOutFill;
     26     
     27     if(0 == totalRhombusHeight % 2){
     28         cout << "The height of rhombus is wrong, the program will exit.";
     29         return -1;
     30     }
     31     
     32     rhombusMiddleLine = (totalRhombusHeight + 1) / 2;
     33     maxSpaceNum = (rhombusMiddleLine - 1) * 2 - 1;
     34     
     35     if(79 < (maxSpaceNum + 2) * totalRhombusNum){
     36         cout << "Not enough width of line. the program will exit.";
     37         return -1;
     38     }
     39     
     40     
     41     DrawRhombus(totalRhombusHeight, totalRhombusNum, maxSpaceNum, rhombusMiddleLine, rhombusBorder, rhombusFill, rhombusOutFill);
     42     
     43     return 0;
     44 }
     45 
     46 void DrawRhombus(int totalRhombusHeight, int totalRhombusNum, int maxSpaceNum, int rhombusMiddleLine,char rhombusBorder, char rhombusFill, char rhombusOutFill){
     47     int lineNum;
     48     int firstSpace;
     49     int secondSpace;
     50     int maxFirstSpace = rhombusMiddleLine - 1;
     51     int spaceNum = 0;
     52     
     53     for(lineNum = 1; lineNum <= totalRhombusHeight; ++lineNum){
     54         if(lineNum <= rhombusMiddleLine){
     55             //first step of rhombus
     56             for(int nowRhombusNum = 1; nowRhombusNum <= totalRhombusNum; ++nowRhombusNum){
     57                 if(1 == nowRhombusNum){
     58                     for(firstSpace = 1; firstSpace <= rhombusMiddleLine - lineNum; ++firstSpace){
     59                         cout << rhombusOutFill;
     60                         spaceNum++;
     61                     }
     62                     cout << rhombusBorder;
     63                     spaceNum++;
     64                 } else {
     65                     for(firstSpace = 1; firstSpace <= (rhombusMiddleLine - lineNum) * 2; ++firstSpace){
     66                         cout << rhombusOutFill;
     67                         spaceNum++;
     68                     }
     69                     cout << rhombusBorder;
     70                     spaceNum++;
     71                 }
     72                 
     73                 if(lineNum > 1){
     74                     for(secondSpace = 1; secondSpace <= (lineNum - 1) * 2 - 1; ++secondSpace){
     75                         cout << rhombusFill;
     76                         spaceNum++;
     77                     }
     78                     cout << rhombusBorder;
     79                     spaceNum++;
     80                 }
     81             }
     82         } else {
     83             //second step of rhombus
     84             for(int nowRhombusNum = 1; nowRhombusNum <= totalRhombusNum; ++nowRhombusNum){
     85                 if(1 == nowRhombusNum){
     86                     for(firstSpace = 1; firstSpace <= lineNum - rhombusMiddleLine; ++firstSpace){
     87                         cout << rhombusOutFill;
     88                         spaceNum++;
     89                     }
     90                     cout << rhombusBorder;
     91                     spaceNum++;
     92                 } else {
     93                     for(firstSpace = 1; firstSpace <= (lineNum - rhombusMiddleLine) * 2; ++firstSpace){
     94                         cout << rhombusOutFill;
     95                         spaceNum++;
     96                     }
     97                     cout << rhombusBorder;
     98                     spaceNum++;
     99                 }
    100                 
    101                 if(lineNum != totalRhombusHeight){
    102                     for(secondSpace = 1; secondSpace <= maxSpaceNum - (lineNum - rhombusMiddleLine) * 2; ++secondSpace){
    103                         cout << rhombusFill;
    104                         spaceNum++;
    105                     }
    106                     cout << rhombusBorder;
    107                     spaceNum++;
    108                 }
    109             }
    110         }
    111         
    112         for(int nowSpaceNum = spaceNum; nowSpaceNum < 79; ++nowSpaceNum){
    113             cout << rhombusOutFill;
    114         }
    115         spaceNum = 0;
    116         
    117         cout << endl;
    118     }
    119 }
  • 相关阅读:
    toj 2975 Encription
    poj 1797 Heavy Transportation
    toj 2971 Rotating Numbers
    zoj 2281 Way to Freedom
    toj 2483 Nasty Hacks
    toj 2972 MOVING DHAKA
    toj 2696 Collecting Beepers
    toj 2970 Hackle Number
    toj 2485 Card Tric
    js页面定位,相关几个属性
  • 原文地址:https://www.cnblogs.com/xiangsoft/p/2490913.html
Copyright © 2011-2022 走看看