diff options
Diffstat (limited to '05_squares/squares.c')
| -rw-r--r-- | 05_squares/squares.c | 82 | 
1 files changed, 82 insertions, 0 deletions
| diff --git a/05_squares/squares.c b/05_squares/squares.c new file mode 100644 index 0000000..9c3eff3 --- /dev/null +++ b/05_squares/squares.c @@ -0,0 +1,82 @@ +#include <stdio.h> +#include <stdlib.h> + + +int max(int num1, int num2){ +  if (num1 > num2) { +    return num1; +  } +  return num2; +} +/*  + * Determines if coord is in range between + * offset (INCLUSIVE) and offset + size (EXCLUSIVE) + */ +int isInRange(int coord, int offset, int size) { +  // if coord is in range, return 1 +  if (coord >= offset && coord < offset + size) { +    return 1; +  } +  // else, return 0 +  return 0; +} + +/* + * Determines if coord is at border of offset or + * offset + size + */ +int isAtBorder(int coord, int offset, int size) { +  // if coord is equal to offest or offset + size +  if (coord == offset || coord == offset + size) { +    return 1; +  } +  // return 1, else return 0 +  return 0; +} + +void squares(int size1, int x_offset, int y_offset, int size2) { +  //compute the max of size1 and (x_offset + size2).  Call this w +  int w = max(size1, x_offset + size2); + +  //compute the max of size1 and (y_offset + size2).  Call this h +  int h = max(size1, y_offset + size2); + +  //count from 0 to h. Call the number you count with y +  for (int y = 0; y < h; y++) { + +    //count from 0 to w. Call the number you count with x +    for (int x = 0; x < w; x++) { + +      //check if  EITHER +      //    ((x is between x_offset  and x_offset +size2) AND  +      //     y is equal to either y_offset OR y_offset + size2 - 1 ) +      //  OR +      //    ((y is between y_offset and y_offset + size2) AND +      //     x is equal to either x_offset OR x_offset + size2 -1) +      // if so, print a * +      if (((isInRange(x, x_offset, size2) == 1) && (isAtBorder(y, y_offset, size2 -1) == 1)) || ((isInRange(y, y_offset, size2) == 1) && (isAtBorder(x, x_offset, size2-1) == 1))) { +        printf("*"); +      } else { + +      //if not, +      // check if EITHER +      //    x is less than size1 AND (y is either 0 or size1-1) +      // OR +      //    y is less than size1 AND (x is either 0 or size1-1) +      //if so, print a # +      if ((x < size1 && (y == 0 ||y==size1 -1 )) ||(y < size1 &&(x == 0||x == size1 -1) ) ) { +        printf("#"); +      } + +      //else print a space +      else {printf(" "); +      } +      } +    } +    //when you finish counting x from 0 to w,  +    //print a newline +    printf("\n"); +  } + +} + | 
