본문으로 바로가기

구조체를 이용하여  모래시계모양과 나비모양을 0과1로 출력하는 프로그램이다.


내가 작성한 코드는 아래와 같다.


#include<stdio.h>

#include<stdlib.h>

#define Enter printf("\n")

typedef struct ptrs {

int **ptr1;

int **ptr2;

} ArrStruct;


void create(ArrStruct *arr,int input){

int i,tmp,j;


arr->ptr1 = (int**)malloc(sizeof(int*)*input);

arr->ptr2 = (int**)malloc(sizeof(int*)*input);

for(i=0;i<input;i++){

arr->ptr1[i] = (int*)malloc(sizeof(int)*input);

arr->ptr2[i] = (int*)malloc(sizeof(int)*input);

tmp = i>input/2 ? input-1-i : i; //상하반전

for(j=0;j<input;j++){

if(tmp>=j+1 || input-tmp<=j) //모래시계 출력

arr->ptr1[i][j]=0;

else

arr->ptr1[i][j]=1;


if(tmp>=j || input-tmp-1<=j) //나비출력

arr->ptr2[i][j]=1;

else

arr->ptr2[i][j]=0;

}

}

if(input%2==0) //짝수일 때 개수안맞는것 처리

for(i=input/2-1;i<=input/2;i++)

arr->ptr1[input/2][i] = 1;

}


void print(ArrStruct *arr,int input){

int i,j;

for(i=0;i<input;i++){

for(j=0;j<input;j++)

printf("[%d] ",arr->ptr1[i][j]);

Enter;

}

Enter;

for(i=0;i<input;i++){

for(j=0;j<input;j++)

printf("[%d] ",arr->ptr2[i][j]);

Enter;

}

}


void main(){

int input,i;

ArrStruct *arr;


printf("input number :  ");

scanf("%d",&input);

create(arr,input);

print(arr,input);


for(i=0;i<input;i++)

free(arr->ptr1[i]);

free(arr->ptr1);

for(i=0;i<input;i++)

free(arr->ptr2[i]);

free(arr->ptr2);

}



'Programing > C' 카테고리의 다른 글

C :: 포맷스트링 연습  (0) 2017.04.25
C :: 수업 내용정리  (0) 2017.04.25
C :: 문자열 패턴찾는 프로그램  (0) 2017.04.15
C :: string.h 조사하기 & strcmp사용자함수 구현  (0) 2017.04.15
C :: 최댓값구하기  (0) 2017.04.15