Advertisement
dmilicev

from_1_to_n_and_back_to_1.c

Oct 30th, 2023 (edited)
490
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 7.05 KB | None | 0 0
  1. /*
  2.  
  3.     from_1_to_n_and_back_to_1.c
  4.  
  5.  
  6.     You can find all my C programs at Dragan Milicev's pastebin:
  7.  
  8.     https://pastebin.com/u/dmilicev
  9.  
  10. */
  11.  
  12. #include <stdio.h>
  13. #include "stdlib.h"     // for function abs()
  14.  
  15. /*
  16. 1 2 3 4 3 2 1
  17. */
  18. void from_1_to_n_to_1_v1(int n){
  19.     int i;
  20.  
  21.     for(i=1;i<=n;i++)       // growing sequence
  22.         printf("%d-",i);
  23.  
  24.     for(i=n-1;i>0;i--)      // descending sequence
  25.         printf("%d-",i);
  26.  
  27.     printf("\n");
  28. }
  29.  
  30. /*
  31. 1 2 3 4 3 2 1
  32. */
  33. void from_1_to_n_to_1_v2(int n){
  34.     int i, cn=1;    // cn - current number
  35.  
  36.     for(i=1;i<=2*n-1;i++)
  37.         if(i<n)
  38.             printf("%d-",cn++);
  39.         else
  40.             printf("%d-",cn--);
  41.  
  42.     printf("\n");
  43. }
  44.  
  45. /*
  46. ------1
  47. ----1 2 1
  48. --1 2 3 2 1
  49. 1 2 3 4 3 2 1
  50. */
  51. void triangle_v1(int n){
  52.     int r, j, cn;   // cn - current number
  53.  
  54.     for(r=0;r<n;r++){               // for n rows
  55.  
  56.         for(j=n-r-1;j>0;j--)        // count blanko
  57.             printf("--");           // print blanko in row r
  58.  
  59.         cn=1;
  60.         for(j=0;j<=2*r;j++)         // print numbers in row r
  61.             if(j<r)
  62.                 printf("%d-",cn++);
  63.             else
  64.                 printf("%d-",cn--);
  65.  
  66.         printf("\n");               // new row
  67.     }
  68. }
  69.  
  70. /*
  71. ------4
  72. ----4 3 4
  73. --4 3 2 3 4
  74. 4 3 2 1 2 3 4
  75. */
  76. void triangle_v2(int n){
  77.     int r, j, cn;   // cn - current number
  78.  
  79.     for(r=0;r<n;r++){               // for n rows
  80.  
  81.         for(j=n-r-1;j>0;j--)        // count blanko
  82.             printf("--");           // print blanko in row r
  83.  
  84.         cn=n;
  85.         for(j=0;j<=2*r;j++)         // print numbers in row r
  86.             if(j<r)
  87.                 printf("%d-",cn--);
  88.             else
  89.                 printf("%d-",cn++);
  90.  
  91.         printf("\n");               // new row
  92.     }
  93. }
  94.  
  95. /*
  96. 1 2 3 4 3 2 1
  97. --1 2 3 2 1
  98. ----1 2 1
  99. ------1
  100. */
  101. void inverted_triangle_v1(int n){
  102.     int r, j, cn;   // cn - current number
  103.  
  104.     for(r=0;r<n;r++){               // for n rows
  105.  
  106.         for(j=0;j<r;j++)            // count blanko
  107.             printf("--");           // print blanko
  108.  
  109.         cn=1;
  110.         for(j=2*(n-r)-1;j>0;j--)    // print numbers pattern
  111.             if(j>n-r)
  112.                 printf("%d-",cn++);
  113.             else
  114.                 printf("%d-",cn--);
  115.  
  116.         printf("\n");               // new row
  117.     }
  118. }
  119.  
  120. /*
  121. 4 3 2 1 2 3 4
  122. --4 3 2 3 4
  123. ----4 3 4
  124. ------4
  125. */
  126. void inverted_triangle_v2(int n){
  127.     int r, j, cn;   // cn - current number
  128.  
  129.     for(r=0;r<n;r++){               // for n rows
  130.  
  131.         for(j=0;j<r;j++)            // count blanko
  132.             printf("--");           // print blanko
  133.  
  134.         cn=n;
  135.         for(j=2*(n-r)-1;j>0;j--)    // print numbers pattern
  136.             if(j>n-r)
  137.                 printf("%d-",cn--);
  138.             else
  139.                 printf("%d-",cn++);
  140.  
  141.         printf("\n");               // new row
  142.     }
  143. }
  144.  
  145. /*
  146. ------1
  147. ----1 2 1
  148. --1 2 3 2 1
  149. 1 2 3 4 3 2 1
  150. --1 2 3 2 1
  151. ----1 2 1
  152. ------1
  153. */
  154. void diamond_v1(int n){
  155.     int r, j, cn;   // cn - current number
  156.  
  157. // upper triangle of a diamond with n rows
  158.     for(r=0;r<n;r++){               // for n rows
  159.  
  160.         for(j=n-r-1;j>0;j--)        // count blanko
  161.             printf("--");           // print blanko in row r
  162.  
  163.         cn=1;
  164.         for(j=0;j<=2*r;j++)         // print numbers in row r
  165.             if(j<r)
  166.                 printf("%d-",cn++);
  167.             else
  168.                 printf("%d-",cn--);
  169.  
  170.         printf("\n");               // new row
  171.     }
  172.  
  173. // down triangle, the rest of the diamond without the first longest row
  174.     for(r=1;r<n;r++){               // without the first longest row
  175.  
  176.         for(j=0;j<r;j++)            // count blanko
  177.             printf("--");           // print blanko
  178.  
  179.         cn=1;
  180.         for(j=2*(n-r)-1;j>0;j--)    // print numbers pattern
  181.             if(j>n-r)
  182.                 printf("%d-",cn++);
  183.             else
  184.                 printf("%d-",cn--);
  185.  
  186.         printf("\n");               // new row
  187.     }
  188. }
  189.  
  190. /*
  191. ------4
  192. ----4 3 4
  193. --4 3 2 3 4
  194. 4 3 2 1 2 3 4
  195. --4 3 2 3 4
  196. ----4 3 4
  197. ------4
  198. */
  199. void diamond_v2(int n){
  200.     int r, j, cn;   // cn - current number
  201.  
  202. // upper triangle of a diamond with n rows
  203.     for(r=0;r<n;r++){               // for n rows
  204.  
  205.         for(j=n-r-1;j>0;j--)        // count blanko
  206.             printf("--");           // print blanko in row r
  207.  
  208.         cn=n;
  209.         for(j=0;j<=2*r;j++)         // print numbers in row r
  210.             if(j<r)
  211.                 printf("%d-",cn--);
  212.             else
  213.                 printf("%d-",cn++);
  214.  
  215.         printf("\n");               // new row
  216.     }
  217.  
  218. // down triangle, the rest of the diamond without the first longest row
  219.     for(r=1;r<n;r++){               // without the first longest row
  220.  
  221.         for(j=0;j<r;j++)            // count blanko
  222.             printf("--");           // print blanko
  223.  
  224.         cn=n;
  225.         for(j=2*(n-r)-1;j>0;j--)    // print numbers pattern
  226.             if(j>n-r)
  227.                 printf("%d-",cn--);
  228.             else
  229.                 printf("%d-",cn++);
  230.  
  231.         printf("\n");               // new row
  232.     }
  233. }
  234.  
  235. /*
  236. ------1-
  237. ----1-2-1-
  238. --1-2-3-2-1-
  239. 1-2-3-4-3-2-1-
  240. --1-2-3-2-1-
  241. ----1-2-1-
  242. ------1-
  243. */
  244. void diamond_v3(int n){ // n - number of rows in upper triangle of diamond
  245.     int r, c, num;  // r - row, c - column, num- current number
  246.  
  247.     for (r = -n + 1; r < n; r++){           // loop for all rows of the diamond
  248.         for (c=0; c<abs(r); c++)            // print blanks "--"
  249.             printf("--");
  250.  
  251.         num=1;
  252.  
  253.         for (c=0; c<2*(n-abs(r))-1; c++){   // print numbers
  254.             if(c<n-abs(r)-1)
  255.                 printf("%d-", num++);
  256.             else
  257.                 printf("%d-", num--);
  258.         }
  259.  
  260.         printf("\n");                       // new row
  261.     }
  262. }
  263.  
  264. /*
  265. ------4-
  266. ----4-3-4-
  267. --4-3-2-3-4-
  268. 4-3-2-1-2-3-4-
  269. --4-3-2-3-4-
  270. ----4-3-4-
  271. ------4-
  272. */
  273. void diamond_v4(int n){ // n - number of rows in upper triangle of diamond
  274.     int r, c, num;  // r - row, c - column, num- current number
  275.  
  276.     for (r = -n + 1; r < n; r++){           // loop for all rows of the diamond
  277.         for (c=0; c<abs(r); c++)            // print blanks "--"
  278.             printf("--");
  279.  
  280.         num=4;
  281.  
  282.         for (c=0; c<2*(n-abs(r))-1; c++){   // print numbers
  283.             if(c<n-abs(r)-1)
  284.                 printf("%d-", num--);
  285.             else
  286.                 printf("%d-", num++);
  287.         }
  288.  
  289.         printf("\n");                       // new row
  290.     }
  291. }
  292.  
  293.  
  294. int main(void){
  295.     int i, n=4;
  296.  
  297.     printf("\n 1. \n\n");
  298.     from_1_to_n_to_1_v1(n);
  299.  
  300.     printf("\n 2. \n\n");
  301.     from_1_to_n_to_1_v2(n);
  302.  
  303.     printf("\n 3. \n\n");
  304.     triangle_v1(n);
  305.  
  306.     printf("\n 3.1 \n\n");
  307.     triangle_v2(n);
  308.  
  309.     printf("\n 4. \n\n");
  310.     inverted_triangle_v1(n);
  311.  
  312.     printf("\n 4.1 \n\n");
  313.     inverted_triangle_v2(n);
  314.  
  315.     printf("\n 5. \n\n");
  316.     diamond_v1(n);
  317.  
  318.     printf("\n 5.1 \n\n");
  319.     diamond_v2(n);
  320.  
  321.     printf("\n 6. \n\n");
  322.     diamond_v3(n);
  323.  
  324.     printf("\n 6.1 \n\n");
  325.     diamond_v4(n);
  326.  
  327.     printf("\n\n");
  328.     return 0;
  329. } // main()
  330.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement