アットウィキロゴ

ソースコード

<stdio.h>
<conio.h>



int calend[7][8]={0};
char shift[7][8]={0};

int month_data(char x[]);
int month_days(int a,int b);
int yoobi_keesan(int year,int month);
int urudosi (int year);
void make_calender(int days,int yoobi);
void print_calender(int seheF,int year,int month);

void main (void)
{

int c=0,c2=0,year,month,days,heseF=0,yoobi;


printf("シフト作成プログラム ver 1.00\n");

while(1)
{
	year  = month_data("年");           //年の入力
	if(2012 <= year && year <= 2030)
	{
		break;
	}
	else if(24 <= year && year <= 40)
	{
		heseF=1;
		year = year + 1988;
		break;
	}
	else
	{
		printf("ERROR!!\n");
	}
}

	while(1)
{
	month = month_data("月");			//月の入力
	if(1 <= month && month <= 12)
	{
		break;
	}
	else
	{
		printf("ERROR!!\n");
	}
}

days  = month_days(month,year);			//日数の計算

yoobi = yoobi_keesan(year,month);		//曜日計算

make_calender(days,yoobi);				//表作る。(配列)

print_calender(heseF,year,month);




getch();


//時間入れる。
//'Z' = 空白 =もう一つ配列を作る。



}

int month_data(char x[])
{
int a;

	printf("%sを入力...",x);
	scanf("%d",&a);

return a;
}

int month_days(int a, int b) //a=month b=year
{
if( a==1 || a==3 || a==5 || a==7 || a==8 || a ==10 || a==12)
{
	return 31;
}
else if( a==2 )
{	
	
	return (urudosi(b)+28);
}
else
{
	return 30;
}
}

int yoobi_keesan(int year ,int month) //2012/01/01 =sun
{
int x,ycnt,mcnt=1,dcnt=0,tmp[13]={31,28,31,30,31,30,31,31,30,31,30,31};

ycnt=2012;

while(ycnt<year)
{
	x=urudosi(ycnt);
	dcnt=dcnt+x+1;
	++ycnt;
}

while(mcnt<month)
{
	if(mcnt==2)
	{
		dcnt=dcnt+urudosi(year);
		++mcnt;
	}

	else
	{
		dcnt=dcnt+(tmp[mcnt-1]);
		++mcnt;
	}
}
dcnt = dcnt % 7;

return dcnt;

}

int urudosi (int year)
{
	if((year%4==0&&year%100!=0) || year%400==0)//うるう年の計算をする。
	{
		return 1;
	}
	else
	{
		return 0;
	}
}

void make_calender(int days ,int yoobi)
{
int dayscnt=1,x=0,y=0; 
			

while(x <yoobi)				//一行目の空白を配列に格納
{
	calend[y][x]=0;
	++x;

}

while(dayscnt<=days)				//配列に格納
{
	if(x==7)
	{
		calend[y][x]=0;
		x=0;
		++y;
	}
	else
	{
		calend[y][x]=dayscnt;
		++dayscnt;
		++x;
	}
}

while(x < 7)
{
	calend[y][x]=0;
	++x;
}

calend[y][x]=-1;
return;
}

void print_calender(int heseF,int year,int month)
{
int x=0,y=0,mspace=0;

printf("\n\n\n\n\n   ");
if(heseF==1)
{
	year = year - 1988;
	printf("H");
}
printf("%d  %d月\n\n",year,month);
printf(" ______________________________________ \n");
printf("|  日  |  月  |  火  |  水  |  木  |  金  |  土  |\n");
 printf("  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ \n");

while(calend[y][x]!=-1)
{
	if(x==7)						//右側の縦線を出力&メモ枠の確保。
	{
		while(mspace<3)
		{
			printf("|\n");			//右側の縦線を出力
			x=0;
			while(x!=7)				//メモ枠の確保。
			{
				printf("|     ");
				++x;
			}
			++mspace;
		}
		printf("|\n");
		x=0;
		++y;
		mspace=0;
		printf("  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ \n");
	}
	else if(calend[y][x]!=0)		//日付がある日を出力
	{
		printf("|");
		if(calend[y][x]<=9)
		{
			printf(" ");
		}

		printf("%d    ",calend[y][x]);

		++x;
	}
	else if(calend[y][x]==0)		//日付のない日を出力
	{
		printf("|     ");
		++x;
	}
	
}
printf("|");


if(x==7)						//右側の縦線を出力&メモ枠の確保。
	{
		while(mspace<3)
		{
			printf("|\n");			//右側の縦線を出力
			x=0;
			while(x!=7)				//メモ枠の確保。
			{
				printf("|     ");
				++x;
			}
			++mspace;
		}
		printf("|\n");
		x=0;
		++y;
		mspace=0;
		printf("  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ \n");
	}
return;
}
最終更新:2012年09月18日 05:09