アットウィキロゴ

ソースコード2

#include <stdio.h>
#include <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:10