Nuparu00

Oct 24th, 2021
716
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2. #include <math.h>
  3.  
  4. int handleCoordinates(int x, int y, int length, int mode);
  5. int squareFunction(int x, int y, int length);
  6. int circleFunction(int x, int y, int length);
  7. int trangleFunction(int x, int y, int length);
  8. int power(int baze, int exp);
  9.  
  10. enum Days {MONDAY,TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY};
  11.  
  12. typedef enum Days Day;
  13.  
  14. int main()
  15. {
  16.     int mode = -1;
  17.     int length = 0;
  18.  
  19.     Day day;
  20.     day = FRIDAY;
  21.  
  22.     printf("Today is %d \n", day);
  23.  
  24.     while(mode < 0 || mode > 2)
  25.     {
  26.         printf("Select mode \n");
  27.         printf("0=square; 1=circle; 2=triangle; \n");
  28.         scanf("%d",&mode);
  29.     }
  30.  
  31.  
  32.     printf("Canvas side length: \n");
  33.     scanf("%d",&length);
  34.  
  35.     int y;
  36.     for(y = 0; y < length; y++)
  37.     {
  38.         int x;
  39.         for(x = 0; x < length; x++)
  40.         {
  41.             if(handleCoordinates(x,y,length,mode))
  42.             {
  43.                 printf("#");
  44.             }
  45.             else
  46.             {
  47.                 printf(" ");
  48.             }
  49.         }
  50.         printf("\n");
  51.     }
  52.  
  53.  
  54.     return 0;
  55. }
  56.  
  57. int handleCoordinates(int x, int y, int length, int mode)
  58. {
  59.     switch(mode)
  60.     {
  61.     case 0 :
  62.         return squareFunction(x,y,length);
  63.     case 1 :
  64.         return circleFunction(x,y,length);
  65.     case 2 :
  66.         return trangleFunction(x,y,length);
  67.     default :
  68.         return 0;
  69.     }
  70. }
  71.  
  72.  
  73. int squareFunction(int x, int y, int length)
  74. {
  75.     if(x % (length-1) == 0 || y % (length-1) == 0) return 1;
  76.     return 0;
  77. }
  78.  
  79. int circleFunction(int x, int y, int length)
  80. {
  81.     int r = length/2;
  82.  
  83.     if(power(x-r,2) + power(y-r,2) <= r*r) return 1;
  84.     return 0;
  85. }
  86.  
  87. int trangleFunction(int x, int y, int length)
  88. {
  89.     int axis = length/2;
  90.     int delta = abs(x-axis);
  91.     int expectedDelta = lerp(axis,length,(double)(y*1.0/length))-axis;
  92.  
  93.     if(delta == expectedDelta || y == length-1){
  94.         return 1;
  95.     }
  96.  
  97.     return 0;
  98. }
  99.  
  100. int power(int baze, int exp)
  101. {
  102.     int result = 1;
  103.  
  104.     int i;
  105.     for(i = 0; i < exp; i++)
  106.     {
  107.         result*=baze;
  108.     }
  109.     return result;
  110. }
  111.  
  112. int lerp(int a, int b, double alpha){
  113. return floor(a + (b-a)*alpha);
  114. }
  115.  
RAW Paste Data