square.c

간단한 규칙을 찾아낼 수 있는 능력이 필요하다.

생각보다 꽤 오래 걸렸다.

등비, 등차 공식을 다시 한번 유도해 보는 연습을 해보자.


------------------------------------------


#include<stdio.h>

#include<stdlib.h>



int main(void)

{

FILE* fp=fopen("input.txt", "rt");

FILE* fo=fopen("output.txt", "wt");

int i,j,k;

int length, num, count, even;

int temp, temp2, temp3;

if(fp==NULL)

{

printf("파일이 없어요\n");

return 1;

}


fscanf(fp, "%d", &length);

fscanf(fp, "%d", &num);


if(length%2 == 0)

even = 1;

else 

even = 0;


if(num ==1)

{

count = 1;

temp = count;

for(j=0;j<length/2;j++)

{

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

{

fprintf(fo, "%d ", count);

count++;

}

fprintf(fo, "\n");

count+=temp;


temp++;

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

{

fprintf(fo, "%d ", count);

count--;

}

fprintf(fo, "\n");


temp++;

count+=temp;

}

if(even == 0) // 홀수

{

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

{

fprintf(fo, "%d ", count);

count++;

}

}

}

else if(num == 2)

{

count = 0;

temp = 1+ (length-1)*2; // 가로로 적을 횟수 정하는 것이요

temp2 = 0; // 1번이 빈칸이고   ++한다..

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

{

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

fprintf(fo,"  ");

for(j=0;j< (temp-(temp2*2));j++)

fprintf(fo,"%d ", count);

fprintf(fo,"\n");

temp2++;

count++;

}

}


else if(num == 3)

{


temp = (length/2)+1; //가로 개수

temp2 = length/2; //공백 개수

temp3 = -1;//공백조정하기


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

{

count = 1;

for(j=0;j<temp-temp2;j++)

{

fprintf(fo,"%d ", count);

count++;

}

fprintf(fo,"\n");

if(temp2 == 0)

temp3*=-1;

temp2 += temp3;

}

}


fclose(fp);

return 0;

}

+ Recent posts