구조체를 이용하여 모래시계모양과 나비모양을 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 |