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 }
  • 相关阅读:
    Fraction to Recurring Decimal
    Compare Version Numbers
    回溯法 -数据结构与算法
    Maximum Gap
    STL——迭代器的概念
    STL——内存基本处理工具
    STL——空间的配置和释放std::alloc(第一级配置器和第二级配置器)
    careercup-中等难度 17.12
    careercup-中等难度 17.11
    careercup-中等难度 17.9
  • 原文地址:https://www.cnblogs.com/xiangsoft/p/2490913.html
Copyright © 2011-2022 走看看