• ベストアンサー

配列

整数n(n>0)を、k進法(1<k<10)で表すにはどうしたらよいのでしょうか?ちなみにnとkは両方とも入力できるようにして、k進法に変換した結果は配列に記憶してから、その配列を表示したいのですが。 それとは別に、各月の日数を記憶する配列を用意し、初期化で各月の日数を記録させ、a月b日からc月d日まで行われる催事の開催期間(日数)を求めたいです。 a月とc月は同じ年で、閏年はありません。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • arukamun
  • ベストアンサー率35% (842/2394)
回答No.1

こんにちは k進法(2≦k≦36)での表示です。 sample(int k,int n) {   int i ;   char c[48] ;   if ( k < 2 || k > 36 ){     printf("Error");     return ;   }   i = 0 ;   while ( n ){     if ( n%k < 10 ){       c[i] = n%k+'0' ;     } else {       c[i] = n%k-10+'A' ;     }     i ++ ;     n /= k ;   }   while ( i ){     i -- ;     putchar(c[i]);   } } 日数を求めます。(エラー判定していません。) day[12] = {31,28,31,30,31,30,31,31,30,31,30,31}; int sample(int a,int b,int c,int d) {   int total,i ;   if ( a == c ){     total = d-b+1 ;   } else {     total = day[a-1]-b+1+d ;     for (i=a+1; i<c ;i++){       total += day[i] ;     }   }   return total ; }  デバッグしていませんが、こんな所だと思います。

inversezero
質問者

お礼

なかなか難しいものですね。どうもありがとうございました。

その他の回答 (1)

回答No.2

> それとは別に、各月の日数を記憶する配列を用意し、初期化で各月の日数を記録させ、a月b日からc月d日まで行われる催事の開催期間(日数)を求めたいです。 各月の日数を格納した配列を days[12] としましょうか。 ここで、 days[i] = days[0] + days[1] + ... + days[i]; という計算、つまり1月1日からの積算日数に変換します。 この配列があれば、ある日の元旦からの経過日数が求まります。 a月b日とc月d日それぞれの元旦からの経過日数を求め、その差をとればいいでしょう。

inversezero
質問者

お礼

親切な回答どうもありがとうございました。

関連するQ&A

専門家に質問してみよう