까.
. 거기 까. makeBuffer 경 . C 경 까.
결국 , 각 거 그 recursive 구. 구. 그 그 .
걱게 , visual studio 기 .. 그고 거 까 게 그 zp server vi 겼.. gdb 까. malloc 간 . . const int case 거 ( ) 고 거.
거 겠. ...
까..
/각기
#include <stdio.h> #include <stdlib.h> #define FORWARD 1 #define BACKWARD 2 #define BIDIR 3 void getUserInput(int * sel, int * num) { scanf("%d %d", sel, num); } char * makeBuffer(int num) { char * ret = (char *)malloc(sizeof(char) * num + 1); ret[num--] = '\0'; while (num >= 0) ret[num--] = ' '; return ret; } void forwardTriangle(int num, char * buffer) { int i; for (i = 0; i < num; i++) { buffer[i] = '*'; printf("%s\n", buffer); } } void backwardTriangle(int num, char * buffer) { int i; for (i = num - 1; i >= 0; i--) { buffer[i] = '*'; printf("%s\n", buffer); } } int calcBidirTriangleSize(int num) { if (num == 1) return 1; return calcBidirTriangleSize(num - 1) + 2; } void bidirTriangle(int num, char * buffer) { int i, center; center = calcBidirTriangleSize(num) / 2; for (i = 0; i < num; i++) { buffer[center + i] = '*'; buffer[center - i] = '*'; printf("%s\n", buffer); } } void produceTriangle(int sel, int num) { char * buffer; switch (sel) { case FORWARD: buffer = makeBuffer(num); forwardTriangle(num, buffer); break; case BACKWARD: buffer = makeBuffer(num); backwardTriangle(num, buffer); break; case BIDIR: buffer = makeBuffer( calcBidirTriangleSize(num) ); bidirTriangle(num, buffer); } free(buffer); } int main(void) { int sel, num; getUserInput(&sel, &num); produceTriangle(sel, num); return 0; }