dmilicev

floyds_triangle_top_right_corner_v1.c

May 4th, 2020
171
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2.  
  3.     floyds_triangle_top_right_corner_v1.c
  4.  
  5.     Task:
  6.     https://web.facebook.com/photo.php?fbid=1802749793195861&set=pcb.1570362636455914&type=3&theater&ifg=1
  7.  
  8.     https://www.tutorialspoint.com/c_standard_library/c_function_atoi.htm
  9.  
  10.     https://www.tutorialspoint.com/c_standard_library/c_function_isdigit.htm
  11.  
  12.  
  13.     You can find all my C programs at Dragan Milicev's pastebin:
  14.  
  15.     https://pastebin.com/u/dmilicev
  16.  
  17. */
  18.  
  19. #include <stdio.h>
  20. #include <stdlib.h>     // for atoi()
  21. #include <ctype.h>      // for isdigit()
  22.  
  23.  
  24. void make_triangle( int arr[], int n )
  25. {
  26.     int i=0;                            // index of array elements
  27.     int r=0, c=0;                       // row and column of matrix
  28.     int number=1, num_of_zeros=n;
  29.     int j;                              // iterator for loop
  30.  
  31.     printf("\n\t n = %d \n\n", n);
  32.  
  33.     for(r=0; r<n; r++)                  // for all rows of matrix
  34.     {
  35.         num_of_zeros--;                 // put zeros
  36.         for(j=0; j<num_of_zeros; j++)
  37.             arr[i++]=0;
  38.  
  39.         for(j=num_of_zeros; j<n; j++)   // put numbers
  40.             arr[i++]=number++;
  41.     }
  42. }
  43.  
  44. void make_triangle_flipped( int arr[], int n )
  45. {
  46.     int i=0;                            // index of array elements
  47.     int r=0, c=0;                       // row and column of matrix
  48.     int number=1, num_of_zeros=n, first_num;
  49.     int j;                              // iterator for loop
  50.  
  51.     printf("\n\t n = %d \n\n", n);
  52.  
  53.     for(r=0; r<n; r++)                  // for all rows of matrix
  54.     {
  55.         num_of_zeros--;                 // put zeros
  56.         for(j=0; j<num_of_zeros; j++)
  57.             arr[i++]=0;
  58.  
  59.         first_num = number + r;         // put numbers
  60.         for(j=num_of_zeros; j<n; j++)
  61.             arr[i++]=first_num--;
  62.  
  63.         number = number + r + 1;
  64.     }
  65. }
  66.  
  67. void print_array_as_square_matrix( int arr[], int n )
  68. {
  69.     int i=0,r,c;                        // r is row, c is column
  70.  
  71.     printf("\n");
  72.  
  73.     for(r=0; r<n; r++)
  74.     {
  75.         for(c=0; c<n; c++)
  76.         {
  77.             printf("%4d", arr[i++]);
  78.         }
  79.         printf("\n\n");                 // new line for new row
  80.     }
  81. }
  82.  
  83.  
  84. int main(int argc, char *argv[])
  85. {
  86.     int n;
  87.     int arr[1000];
  88.  
  89.     if( argc != 2 ){    // if there is no only one command line argument
  90.  
  91.         printf( "\n Do not forget first to compile this program \n"
  92.                 "\n and then run exe file from command line \n"
  93.                 "\n exactly with quotes, like this: \n\n"
  94.                 "\n \"floyds_triangle_top_right_corner_v1.exe\" 6 \n\n" );
  95.  
  96.         printf("\n\n Press any key to exit. \n");
  97.         _getch();       // to pause the screen
  98.         return 1;       // exit because there is no command line arguments
  99.     }
  100.  
  101.     n = atoi( argv[1] );
  102.  
  103.     if( isdigit(n) || n<2 || n>20 )
  104.     {
  105.         printf("\n Argument of program must be an integer greater than 1 and less than 21 ! \n");
  106.         printf("\n\n Press any key to exit. \n");
  107.         _getch();       // to pause the screen
  108.         return 1;       // exit because argument is not valid integer
  109.     }
  110.  
  111.     make_triangle( arr, n );
  112.     print_array_as_square_matrix( arr, n );
  113.  
  114.     make_triangle_flipped( arr, n );
  115.     print_array_as_square_matrix( arr, n );
  116.  
  117.     _getch();           // to pause the screen
  118.     return 0;
  119.  
  120. } // main()
RAW Paste Data Copied