Advertisement
Guest User

tri.c

a guest
Apr 29th, 2019
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.24 KB | None | 0 0
  1.  
  2. // tri.c - draw ASCII sirinpinsky triangle, tri-force pattern
  3. // solution to https://boards.4channel.org/g/thread/70748195
  4.  
  5. #include <stdio.h>
  6.  
  7. int H = 3;
  8. int T = 2;
  9.  
  10. /*--- forward declarations for top-down design ---*/
  11.  
  12. void tri(int N);
  13. void tri_row(int indent, int n, int w);
  14. void tri_line(int h, int n, int w);
  15. void streak(char c, int times);
  16.  
  17. /*--- top-level function ---*/
  18.  
  19. void tri(int N) {
  20.     int i, indent;
  21.  
  22.     for(i = 1; i <= N; i++) {
  23.         indent = (N-i);
  24.         tri_row(indent, i, N);
  25.     }
  26.     return;
  27. }
  28.  
  29. void tri_row(int indent, int n, int w) {
  30.     int i, j;
  31.     for(j = 1; j <= H; j++) {
  32.         streak(' ', indent*H);
  33.         tri_line(j, n, w);
  34.     }
  35.     return;
  36. }
  37.  
  38. void tri_line(int h, int n, int w) {
  39.     int i;
  40.     for(i = 1; i <= n; i++) {
  41.         streak(' ', H-h);
  42.         streak('*', h);
  43.         streak('*', h);
  44.         if(h < H) streak(' ', H-h);
  45.     }
  46.     putc('\n', stdout);
  47.     return;
  48. }
  49.  
  50. void streak(char c, int times) {
  51.     int i;
  52.     for(i = 1; i <= times; i++) putc(c, stdout);
  53.     return;
  54. }
  55.  
  56. /*--- MAIN ---*/
  57.  
  58. int main(int argc, char *argv[]) {
  59.  
  60.     if(argc > 1) sscanf(argv[1], "%d", &T);
  61.     if(argc > 2) sscanf(argv[2], "%d", &H);
  62.  
  63.     tri(T);
  64.     return 0;
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement