- ベストアンサー
配列
整数n(n>0)を、k進法(1<k<10)で表すにはどうしたらよいのでしょうか?ちなみにnとkは両方とも入力できるようにして、k進法に変換した結果は配列に記憶してから、その配列を表示したいのですが。 それとは別に、各月の日数を記憶する配列を用意し、初期化で各月の日数を記録させ、a月b日からc月d日まで行われる催事の開催期間(日数)を求めたいです。 a月とc月は同じ年で、閏年はありません。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは 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 ; } デバッグしていませんが、こんな所だと思います。
その他の回答 (1)
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
> それとは別に、各月の日数を記憶する配列を用意し、初期化で各月の日数を記録させ、a月b日からc月d日まで行われる催事の開催期間(日数)を求めたいです。 各月の日数を格納した配列を days[12] としましょうか。 ここで、 days[i] = days[0] + days[1] + ... + days[i]; という計算、つまり1月1日からの積算日数に変換します。 この配列があれば、ある日の元旦からの経過日数が求まります。 a月b日とc月d日それぞれの元旦からの経過日数を求め、その差をとればいいでしょう。
お礼
親切な回答どうもありがとうございました。
お礼
なかなか難しいものですね。どうもありがとうございました。