アプリ版:「スタンプのみでお礼する」機能のリリースについて

祝日に関して、下記の通りプログラムを作ったのですがうまくいきません。ご教授お願いします。
void Display_func( int year , int month )
{
  int week , i , leap , day , *shuku , *furikae ;
  int days[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
  int d = 0;
**省略**
  for( i=0 ; i<week ; i++ ){
     printf(" ");
  }
  for(day=1 ; day<=days[month] ; day++ ){
★★Yasumi_func( int &shuku , int &furikae ); /*祝日判定関数*/
  if(i==0){
    printf(" @%2d",day);
  }else if(i==*shuku){
     printf(" #%2d",day);
  }else if(i==*furikae){
    i = 1;
    printf(" &%2d",day+1);
  }else if(i==6){
    printf(" *%2d",day);
  }else{
    printf(" %2d",day);
  }

@:日曜日 *:土曜日 &:振替休日 #:祝日
return;
}
/* 祝日判定関数 */
void Yasumi_func( int *yshuku , int *furikae )
{
int year , month , day , i ;
if((month==3 && day== (int)(20.8431 + 0.242194*(year-1980) - (year-1980)/4))
  || (month==1 && day>7 && day<15 && i==1)

  || (month==11 && day==3)
  || (month==12 && day==23))
  {
    if(i == 0){
      *furikae = i ;      /* 振替休日 */
    }else{
      *shuku = i; /* 祝日 */
    }
  }
}
  Yasumi_func( int &yasumi , int &kae );
祝日判定関数を呼びたいのですが「式の構文エラー」となってしまいます。
この他
  if(i == 0){
    *furikae = i ;
  }else{
    *shuku = i;
  }
この部分も自信がないので、アドバイスお願いいたします

A 回答 (2件)

直接プログラムでどう対応するかの前に、どこまでの範囲で万年カレンダーとして定義するかが大変だと思います。


a)1番難しいのは、春分、秋分の日です。
共に、地球が春分点秋分点を通過した時点を含む日になりますので、予想は可能でしょうが本当にそうなるかは地球の動きによりますね。
b)閏年、4年一度閏年、100年に1度は閏年としない、400年に1度は閏年とする(西暦2000年など)。
c)太陰暦と太陽暦をいつ切り替えたか、(10日以上ずれる)等々

この回答への補足

ご回答ありがとうございます。
出力関数に祝日判定関数をどう呼ぶかについて、まったくわからない状態です。閏年、春分、秋分等は一様プログラムはできました。アドバイスよろしくお願いいたします。
質問文では省略させていただいています。

補足日時:2006/03/27 14:45
    • good
    • 0

結論だけ書きます。



>   int week , i , leap , day , *shuku , *furikae ;

は、
  int week , i , leap , day , shuku , furikae ;

> Yasumi_func( int &shuku , int &furikae );
は、
Yasumi_func(&shuku , &furikae );

です。(ただし、構文の点だけ)

どうして最初のように書いたのか、どうしてこれが構文的に正しいのかは、しっかり勉強してください。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!