Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- from_1_to_n_and_back_to_1.c
- You can find all my C programs at Dragan Milicev's pastebin:
- https://pastebin.com/u/dmilicev
- */
- #include <stdio.h>
- #include "stdlib.h" // for function abs()
- /*
- 1 2 3 4 3 2 1
- */
- void from_1_to_n_to_1_v1(int n){
- int i;
- for(i=1;i<=n;i++) // growing sequence
- printf("%d-",i);
- for(i=n-1;i>0;i--) // descending sequence
- printf("%d-",i);
- printf("\n");
- }
- /*
- 1 2 3 4 3 2 1
- */
- void from_1_to_n_to_1_v2(int n){
- int i, cn=1; // cn - current number
- for(i=1;i<=2*n-1;i++)
- if(i<n)
- printf("%d-",cn++);
- else
- printf("%d-",cn--);
- printf("\n");
- }
- /*
- ------1
- ----1 2 1
- --1 2 3 2 1
- 1 2 3 4 3 2 1
- */
- void triangle_v1(int n){
- int r, j, cn; // cn - current number
- for(r=0;r<n;r++){ // for n rows
- for(j=n-r-1;j>0;j--) // count blanko
- printf("--"); // print blanko in row r
- cn=1;
- for(j=0;j<=2*r;j++) // print numbers in row r
- if(j<r)
- printf("%d-",cn++);
- else
- printf("%d-",cn--);
- printf("\n"); // new row
- }
- }
- /*
- ------4
- ----4 3 4
- --4 3 2 3 4
- 4 3 2 1 2 3 4
- */
- void triangle_v2(int n){
- int r, j, cn; // cn - current number
- for(r=0;r<n;r++){ // for n rows
- for(j=n-r-1;j>0;j--) // count blanko
- printf("--"); // print blanko in row r
- cn=n;
- for(j=0;j<=2*r;j++) // print numbers in row r
- if(j<r)
- printf("%d-",cn--);
- else
- printf("%d-",cn++);
- printf("\n"); // new row
- }
- }
- /*
- 1 2 3 4 3 2 1
- --1 2 3 2 1
- ----1 2 1
- ------1
- */
- void inverted_triangle_v1(int n){
- int r, j, cn; // cn - current number
- for(r=0;r<n;r++){ // for n rows
- for(j=0;j<r;j++) // count blanko
- printf("--"); // print blanko
- cn=1;
- for(j=2*(n-r)-1;j>0;j--) // print numbers pattern
- if(j>n-r)
- printf("%d-",cn++);
- else
- printf("%d-",cn--);
- printf("\n"); // new row
- }
- }
- /*
- 4 3 2 1 2 3 4
- --4 3 2 3 4
- ----4 3 4
- ------4
- */
- void inverted_triangle_v2(int n){
- int r, j, cn; // cn - current number
- for(r=0;r<n;r++){ // for n rows
- for(j=0;j<r;j++) // count blanko
- printf("--"); // print blanko
- cn=n;
- for(j=2*(n-r)-1;j>0;j--) // print numbers pattern
- if(j>n-r)
- printf("%d-",cn--);
- else
- printf("%d-",cn++);
- printf("\n"); // new row
- }
- }
- /*
- ------1
- ----1 2 1
- --1 2 3 2 1
- 1 2 3 4 3 2 1
- --1 2 3 2 1
- ----1 2 1
- ------1
- */
- void diamond_v1(int n){
- int r, j, cn; // cn - current number
- // upper triangle of a diamond with n rows
- for(r=0;r<n;r++){ // for n rows
- for(j=n-r-1;j>0;j--) // count blanko
- printf("--"); // print blanko in row r
- cn=1;
- for(j=0;j<=2*r;j++) // print numbers in row r
- if(j<r)
- printf("%d-",cn++);
- else
- printf("%d-",cn--);
- printf("\n"); // new row
- }
- // down triangle, the rest of the diamond without the first longest row
- for(r=1;r<n;r++){ // without the first longest row
- for(j=0;j<r;j++) // count blanko
- printf("--"); // print blanko
- cn=1;
- for(j=2*(n-r)-1;j>0;j--) // print numbers pattern
- if(j>n-r)
- printf("%d-",cn++);
- else
- printf("%d-",cn--);
- printf("\n"); // new row
- }
- }
- /*
- ------4
- ----4 3 4
- --4 3 2 3 4
- 4 3 2 1 2 3 4
- --4 3 2 3 4
- ----4 3 4
- ------4
- */
- void diamond_v2(int n){
- int r, j, cn; // cn - current number
- // upper triangle of a diamond with n rows
- for(r=0;r<n;r++){ // for n rows
- for(j=n-r-1;j>0;j--) // count blanko
- printf("--"); // print blanko in row r
- cn=n;
- for(j=0;j<=2*r;j++) // print numbers in row r
- if(j<r)
- printf("%d-",cn--);
- else
- printf("%d-",cn++);
- printf("\n"); // new row
- }
- // down triangle, the rest of the diamond without the first longest row
- for(r=1;r<n;r++){ // without the first longest row
- for(j=0;j<r;j++) // count blanko
- printf("--"); // print blanko
- cn=n;
- for(j=2*(n-r)-1;j>0;j--) // print numbers pattern
- if(j>n-r)
- printf("%d-",cn--);
- else
- printf("%d-",cn++);
- printf("\n"); // new row
- }
- }
- /*
- ------1-
- ----1-2-1-
- --1-2-3-2-1-
- 1-2-3-4-3-2-1-
- --1-2-3-2-1-
- ----1-2-1-
- ------1-
- */
- void diamond_v3(int n){ // n - number of rows in upper triangle of diamond
- int r, c, num; // r - row, c - column, num- current number
- for (r = -n + 1; r < n; r++){ // loop for all rows of the diamond
- for (c=0; c<abs(r); c++) // print blanks "--"
- printf("--");
- num=1;
- for (c=0; c<2*(n-abs(r))-1; c++){ // print numbers
- if(c<n-abs(r)-1)
- printf("%d-", num++);
- else
- printf("%d-", num--);
- }
- printf("\n"); // new row
- }
- }
- /*
- ------4-
- ----4-3-4-
- --4-3-2-3-4-
- 4-3-2-1-2-3-4-
- --4-3-2-3-4-
- ----4-3-4-
- ------4-
- */
- void diamond_v4(int n){ // n - number of rows in upper triangle of diamond
- int r, c, num; // r - row, c - column, num- current number
- for (r = -n + 1; r < n; r++){ // loop for all rows of the diamond
- for (c=0; c<abs(r); c++) // print blanks "--"
- printf("--");
- num=4;
- for (c=0; c<2*(n-abs(r))-1; c++){ // print numbers
- if(c<n-abs(r)-1)
- printf("%d-", num--);
- else
- printf("%d-", num++);
- }
- printf("\n"); // new row
- }
- }
- int main(void){
- int i, n=4;
- printf("\n 1. \n\n");
- from_1_to_n_to_1_v1(n);
- printf("\n 2. \n\n");
- from_1_to_n_to_1_v2(n);
- printf("\n 3. \n\n");
- triangle_v1(n);
- printf("\n 3.1 \n\n");
- triangle_v2(n);
- printf("\n 4. \n\n");
- inverted_triangle_v1(n);
- printf("\n 4.1 \n\n");
- inverted_triangle_v2(n);
- printf("\n 5. \n\n");
- diamond_v1(n);
- printf("\n 5.1 \n\n");
- diamond_v2(n);
- printf("\n 6. \n\n");
- diamond_v3(n);
- printf("\n 6.1 \n\n");
- diamond_v4(n);
- printf("\n\n");
- return 0;
- } // main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement