日齢計算プログラム
誕生年月日を入力し、本日時点での日齢を計算するプログラムを作成する。日齢とは誕生の日から本日までの経過日数である(昨日生まれた人の日齢は1日)。誕生年の入力は西暦ではなく和暦とする。出力は画面に出力するとともに、ファイル“abc.txt”に出力する。
現段階では一年を365日とし、毎月の日数を正しくとらえて計算するプログラム。
ただし、うるう年は考慮していないのでこの場合の日齢も正確ではない。○月×日が一年の最初の日から何日目であるかを計算する関数を作る。
1月 1/1からの日数=日
2月 1/1からの日数=日+31
3月 1/1からの日数=日+59
というように作っています。
ところがコンパイルをすると”gfewy.cpp(60) : error C2601: 'main' : ローカル関数の定義が正しくありません。”というエラーメッセージが出てきます。
どのように訂正すればいいのでしょうか、教えてください。
#include <stdio.h>
int day_count(int x,int y)
{
int z;
switch(x){
case 1:
z=y;
break;
case 2:
z=y+31;
break;
case 3:
z=y+59;
break;
case 4:
z=y+90;
break;
case 5:
z=y+120;
break;
case 6:
z=y+151;
break;
case 7:
z=y+181;
break;
case 8:
z=y+212;
break;
case 9:
z=y+243;
break;
case 10:
z=y+273;
break;
case 11:
z=y+304;
break;
case 12:
z=y+334;
break;
return(z);
}
void main (void)
{
FILE *fp;
char nengo;
int year_td,month_td,day_td,year_bd,month_bd,day_bd,nichirei;
fp=fopen("abc.txt","w");
printf("your birthday\n");
fprintf(fp,"your birthday\n");
printf("input nongou:");scanf("%c",&nengo);
fprintf(fp,"input nongou:");
printf("input year:");scanf("%d",&year_bd);
fprintf(fp,"input year:");
printf("input month:");scanf("%d",&month_bd);
fprintf(fp,"input month:");
printf("input day:");scanf("%d",&day_bd);
fprintf(fp,"input day:");
switch(nengo){
case'm':
case'M':
year_bd=year_bd+1867;
break;
case't':
case'T':
year_bd=year_bd+1911;
break;
case's':
case'S':
year_bd=year_bd+1925;
break;
case'h':
case'H':
year_bd=year_bd+1988;
break;
default:
printf("input nengo is invalid.\n");
}
year_td=2007;
month_td=10;
day_td=22;
nichirei=365*(year_td-year_bd)+(day_count(month_td,day_td)-day_count(month_bd,day_bd));
printf("your birthday:year=%d,month=%d,day=%d\n",year_bd,month_bd,day_bd);
fprintf(fp,"your birthday:year=%d,month=%d,day=%d\n",year_bd,month_bd,day_bd);
printf("your nichirei:%d\n",nichirei);
fprintf(fp,"your nichirei:%d\n",nichirei);
fclose(fp);
}
}
お礼
ありがとうございます<(_ _)> 今度、質問するとき気をつけます。 助かりました。