Advertisement
dmilicev

hourglass_numbers_pattern_v1.c

Nov 7th, 2023
578
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 5.07 KB | None | 0 0
  1. /*
  2.  
  3.     hourglass_numbers_pattern_v1.c
  4.  
  5.  Hourglass pattern with abs() and longest row.
  6.  
  7.  The number of stars in the longest row of hourglass is same as
  8.  the number of rows of the upper triangle of hourglass.
  9.  
  10.  Hourglass will have 2*n-1 rows.
  11.  
  12.  Example: nr = 4
  13.  
  14. *-*-*-*-*-*-*-
  15. --*-*-*-*-*-
  16. ----*-*-*-
  17. ------*-
  18. ----*-*-*-
  19. --*-*-*-*-*-
  20. *-*-*-*-*-*-*-
  21.  
  22. row  spaces     *          r
  23.  
  24.  0.     0       7         -3
  25.  1.     1       5         -2
  26.  2.     2       3         -1
  27.  3.     3       1          0
  28.  4.     2       3          1
  29.  5.     1       5          2
  30.  6.     0       7          3
  31.  
  32.  
  33.     You can find all my C programs at Dragan Milicev's pastebin:
  34.  
  35.     https://pastebin.com/u/dmilicev
  36.  
  37. */
  38.  
  39. #include "stdio.h"
  40. #include "stdlib.h"     // for function abs()
  41.  
  42. /*
  43. *******
  44. -*****
  45. --***
  46. ---*
  47. --***
  48. -*****
  49. *******
  50. */
  51. void hourglass_of_stars_v11(int n){
  52. // n - number of rows in upper triangle of hourglass
  53.  
  54.     int r, c;   // r - row, c - column
  55.  
  56.     for (r = -n+1; r < n; r++){             // loop for rows
  57.         for (c = 0; c < n-abs(r)-1; c++)    // print "-"
  58.             printf("-");
  59.  
  60.         for (c = 0; c < 2*abs(r)+1; c++)    // print "*"
  61.             printf("*");
  62.  
  63.         printf("\n");                       // new row
  64.     }
  65. }
  66.  
  67. /*
  68. *-*-*-*-*-*-*-
  69. --*-*-*-*-*-
  70. ----*-*-*-
  71. ------*-
  72. ----*-*-*-
  73. --*-*-*-*-*-
  74. *-*-*-*-*-*-*-
  75. */
  76. void hourglass_of_stars_v12(int n){
  77. // n - number of rows in upper triangle of hourglass
  78.  
  79.     int r, c;   // r - row, c - column
  80.  
  81.     for (r = -n + 1; r < n; r++){               // loop for rows
  82.         for (c = 0; c < n-abs(r)-1; c++)        // print "--"
  83.             printf("--");
  84.  
  85.         for (c = 0; c < 2*abs(r)+1; c++)        // print "*-"
  86.             printf("*-");
  87.  
  88.         printf("\n");                           // new row
  89.     }
  90. }
  91.  
  92. /*
  93. 1234321
  94. -12321
  95. --121
  96. ---1
  97. --121
  98. -12321
  99. 1234321
  100. */
  101. void hourglass_of_numbers_v211(int n){
  102. // n - number of rows in upper triangle of hourglass
  103.     int r, c, num;  // r - row, c - column, num - current number
  104.  
  105.     for (r = -n+1; r < n; r++){             // loop for all rows of the hourglass
  106.         for (c = 0; c < n-abs(r)-1; c++)    // print blanks "-"
  107.             printf("-");
  108.  
  109.         num = 1;
  110.  
  111.         for (c = 0; c < 2*abs(r)+1; c++){   // print numbers
  112.             if( c<abs(r) )
  113.                 printf("%d", num++);
  114.             else
  115.                 printf("%d", num--);
  116.         }
  117.  
  118.         printf("\n");                       // new row
  119.     }
  120. }
  121.  
  122. /*
  123. 1-2-3-4-3-2-1-
  124. --1-2-3-2-1-
  125. ----1-2-1-
  126. ------1-
  127. ----1-2-1-
  128. --1-2-3-2-1-
  129. 1-2-3-4-3-2-1-
  130. */
  131. void hourglass_of_numbers_v212(int n){
  132. // n - number of rows in upper triangle of hourglass
  133.     int r, c, num;  // r - row, c - column, num - current number
  134.  
  135.     for (r = -n+1; r < n; r++){             // loop for all rows of the hourglass
  136.         for (c = 0; c < n-abs(r)-1; c++)    // print blanks "--"
  137.             printf("--");
  138.  
  139.         num = 1;
  140.  
  141.         for (c=0; c<2*abs(r)+1; c++){       // print numbers
  142.             if( c<abs(r) )
  143.                 printf("%d-", num++);
  144.             else
  145.                 printf("%d-", num--);
  146.         }
  147.  
  148.         printf("\n");                       // new row
  149.     }
  150. }
  151.  
  152. /*
  153. 4321234
  154. -43234
  155. --434
  156. ---4
  157. --434
  158. -43234
  159. 4321234
  160. */
  161. void hourglass_of_numbers_v221(int n){
  162. // n - number of rows in upper triangle of hourglass
  163.     int r, c, num;  // r - row, c - column, num - current number
  164.  
  165.     for (r = -n+1; r < n; r++){             // loop for all rows of the hourglass
  166.         for (c = 0; c < n-abs(r)-1; c++)    // print blanks "-"
  167.             printf("-");
  168.  
  169.         num = n;
  170.  
  171.         for (c = 0; c < 2*abs(r)+1; c++){   // print numbers
  172.             if( c < abs(r) )
  173.                 printf("%d", num--);
  174.             else
  175.                 printf("%d", num++);
  176.         }
  177.  
  178.         printf("\n");                       // new row
  179.     }
  180. }
  181.  
  182. /*
  183. 4-3-2-1-2-3-4-
  184. --4-3-2-3-4-
  185. ----4-3-4-
  186. ------4-
  187. ----4-3-4-
  188. --4-3-2-3-4-
  189. 4-3-2-1-2-3-4-
  190. */
  191. void hourglass_of_numbers_v222(int n){
  192. // n - number of rows in upper triangle of hourglass
  193.     int r, c, num;  // r - row, c - column, num - current number
  194.  
  195.     for (r = -n+1; r < n; r++){             // loop for all rows of the hourglass
  196.         for (c = 0; c < n-abs(r)-1; c++)    // print blanks "--"
  197.             printf("--");
  198.  
  199.         num = n;
  200.  
  201.         for (c = 0; c < 2*abs(r)+1; c++){   // print numbers
  202.             if( c < abs(r) )
  203.                 printf("%d-", num--);
  204.             else
  205.                 printf("%d-", num++);
  206.         }
  207.  
  208.         printf("\n");                       // new row
  209.     }
  210. }
  211.  
  212.  
  213. int main(void)
  214. {
  215.     int n=4;    // n - number of rows of the upper triangle of hourglass
  216.  
  217.     printf("\n 1.1 \n\n");
  218.     hourglass_of_stars_v11(n);
  219.  
  220.     printf("\n 1.2 \n\n");
  221.     hourglass_of_stars_v12(n);
  222.  
  223.     printf("\n 2.1.1 \n\n");
  224.     hourglass_of_numbers_v211(n);
  225.  
  226.     printf("\n 2.1.2 \n\n");
  227.     hourglass_of_numbers_v212(n);
  228.  
  229.     printf("\n 2.2.1 \n\n");
  230.     hourglass_of_numbers_v221(n);
  231.  
  232.     printf("\n 2.2.2 \n\n");
  233.     hourglass_of_numbers_v222(n);
  234.  
  235.     return 0;
  236. }
  237.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement