- ベストアンサー
配列
整数n(n>0)を、k進法(1<k<10)で表すにはどうしたらよいのでしょうか?ちなみにnとkは両方とも入力できるようにして、k進法に変換した結果は配列に記憶してから、その配列を表示したいのですが。 それとは別に、各月の日数を記憶する配列を用意し、初期化で各月の日数を記録させ、a月b日からc月d日まで行われる催事の開催期間(日数)を求めたいです。 a月とc月は同じ年で、閏年はありません。 よろしくお願いします。
- inversezero
- お礼率44% (16/36)
- C・C++・C#
- 回答数2
- ありがとう数2
- みんなの回答 (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日それぞれの元旦からの経過日数を求め、その差をとればいいでしょう。
お礼
親切な回答どうもありがとうございました。
関連するQ&A
- 配列の使い方がわかりません
n=1~20 s=n(n+1)(2n+1)(3n^2+3n-1)/30 のsの結果を数表にする問題で、 n s n s 1 _ 11 _ 2 _ 12 _ ・ ・ ・ ・ ・ ・ 10 _ 20 _ というような表示をしたくて、配列を用いてしてるんですが、うまくいきません。どなたか、教えてください。 public class suuhyou{ public static void main(String[] args){ int a=0,b=0,c=0,d=0,s=0; int[] x = new int[50]; for(int n=1;n<=50;n++){ a = n; b = n + 1; c = 2 * n + 1; d = 3 * n * n + 3 * n - 1; s = a * b * c * d / 30; int x[n] = s; } for(int k=1;k<=10;k++){ System.out.print ( k + ":" + x[k] +","); System.out.print ((k+10) + ":" + x[k+10]+","); System.out.print ((k+20) + ":" + x[k+20]+","); System.out.print ((k+30) + ":" + x[k+30]+","); System.out.println((k+40) + ":" + x[k+40]); } } } 自分でやっていたら、最後はこんな風にだんだんめちゃくちゃになってしまいました。このときはnが50まででやってます。お願いします。
- 締切済み
- Java
- 数学の答案過程、答案、解答をお願いします
数学の途中過程、答案、解答をよろしくお願いします 五進法で表した時にどの桁にも3があらわれない、0以上の整数を小さい順にa1,a2,a3, ・・・とする。 (例えば a8=9となる)また、S(N)=Σak(k=1からN)とおく。なお、0以上の整数nを五進法で表すとは、n=ck5^k+c(k-1)5^(k-1)+・・・+c1×5+c0(ただし、各ciは0,1,2,3,4のいずれか)と表したときのciを並べてckc(k-1)・・・c1c0[5]の形に書くことをいう。 1)S(64)を求めよ 2)nを自然数とする。S(4^n)が26の倍数になるための必要十分条件を求めよ
- 締切済み
- 数学・算数
- C言語でのカレンダープログラミングについて。
今、C言語でカレンダーについてのプログラミングを行っています。 まず月を入力し表示させる。 その年がうるう年かどうか判定させる。 日曜~土曜を表示し、指定した月の日数を曜日に合わせて表示させる。 2008年1月1日は火曜日。 という事実を利用してよい。 という条件で、うるう年かの判定はあるものの年は2008年で固定です。 曜日、指定した月の日数を出すところまでいきましたが。 曜日に合わせて出す事ができません。 今は1月に合わせて、1日が火曜日のところに出るように配置してます。 が、次の週になったときにどのように改行指定すればいぃのかわりません。 また、来月以降の月初めの曜日指定もわからないです。 途中までのプログラムはこれです。 醜いかもしれませんが。 #include <stdio.h> int main(void) { int year=2008; int month,hantei=0,a,b,c; int uru[12]={31,29,31.30,31,30,31,31,30,31,30,31};/*うるう年の時の各月ごとの日数*/ int normal[12]={31,28,31,30,31,30,31,31,30,31,30,31};/*通常の年の各月ごとの日数*/ printf("表示させる月を入力してください。:"); scanf("%d",&month); if(year%4==0||year%100==0||year%400==0) { hantei=1;/*その年がうるう年かどうかを判定し、うるう年なら「hantei」に「1」が代入*/ } if(hantei==1)/*うるう年の場合。*/ { printf("%d年 %d月\n",year,month); printf("%d日\n",uru[month-1]); } else/*通常の年の場合。*/ { printf("%d年 %d月\n",year,normal[month-1]); printf("%d\n",normal[month-1]); } printf("日 月 火 水 木 金 土\n");/*曜日*/ if(hantei==1)/*うるう年の場合*/ { for(b=0;b<=7;b++) { printf(" ");/*火曜日のところまでスペースを空ける*/ } for(c=1;c<=uru[month-1];c++)/*日数表示*/ { printf("%2d ",c); } } return(0); } まだあまりC言語に詳しくないので、簡単に説明できる範囲で御願いします。 説明がわかりにくいかもしれませんが、すいません。
- ベストアンサー
- SE・インフラ・Webエンジニア
- 整数の選択
アルゴリズムに関する質問です. n個の相異なる整数が配列 A[1..n] に格納されていて,その配列の中からk番目に小さい整数を選ぶ問題のアルゴリズムを考えています.kは 1<=k<=n を満たす自然数であり,この選択問題は O(n) で解けるものです. ヒープを使ったりして考えたのですがうまくいきません.どなたかこのアルゴリズムを教えてください.よろしくお願いします.
- ベストアンサー
- その他(プログラミング・開発)
- 配列を使って魔方陣
C言語を使って最近やっと配列ができるようになってきたんですが、どうしても魔方陣のやり方がわからないんです。教えてください。 魔方陣とは、1~n^2までの整数をn×nの正方形に並べ、どの行、どの列、どの対角線のn個の数の和も一定の値になるようにしたものです。 nは常に奇数を入力し、1番上の行の中央の列に1を置く事になります。 整数kまで置かれているとすると、k+1は次のように置かれる。 * kの置かれた場所の右斜め上(以下この場所をαと呼ぶ)が空いていれば、そこにk+1を置く。 * αがすでに他の数が置かれているとき、kの置かれている場所のすぐ下にk+1を置く。 * αが右上隅にはみ出す場合は、kの置かれている場所のすぐ下にk+1を置く。 * αが1番上の行からはみ出す場合は、場所αの1番下の列にk+1を置く。 * αが1番右上の列からはみ出す場合には、場所αの1番左の列にk+1を置く。 例)n=3のとき 8 1 6 3 5 7 4 9 2 まだまだ初心者なので詳しく教えていただけると嬉しいです。よろしくお願いします。
- ベストアンサー
- C・C++・C#
- 証明
何度も失礼します。 問題は、a,b,cはどの2つも1以外の共通な約数を持たない正の整数とする。a,b,cが、a^2+b^2=c^2を満たしているとき、次の問いに答えよ。 (cは奇数である) (1)a,bの1つは4の倍数であることを示せ。 証明は、cは奇数であるから、,bのうちいずれか一方は偶数で、他方は奇数である。いま、偶数の方をaとしてもよい。aが4の倍数でないと仮定すると、a=4k+2,b=4m±1,c=4n±1(k,m,nは整数)とおける。 a^2+b^2=(4k+2)^2+(4m±1)^2 =8(2k^2+2k+2m^2±m)+5 c^2=(4n±1)^2=8(2n^2±n)+1 よってあまりが違い、矛盾するので正しい。 となっているのですが、{a=4k+2,b=4m±1,c=4n±1(k,m,nは整数)}ですが一つ目の疑問は(k,m,nは整数)ですが、整数では、例えばmが-3とかのとき明らかに-になるのでだめですよね?bが正の整数を大前提にということでしょうか?もうひとつは、これはb,cは奇数であることをいいたいのだからa=4k+2、b=2m-1,c=2n-1(・・・m,nは自然数)としてはいけないのでしょうか?それでもできるとおもうのですが。b=4m±1,c=4n±1である理由があるのでしょうか?
- ベストアンサー
- 数学・算数
- 【PHP】配列を連想配列に
$m = array('a', 'b', 'c'); この配列 $m をもとに $n = array( 'a' => array( 'b' => array( 'c' => array()))); 上のような連想配列 $n をつくりたいのですが、 $n = array( $m[0] => array( $m[1] => array( $m[2] => array()))); 要素の数が固定のときは、これでもいいのですが、数が変動する場合に対応できません。 何か方法があれば教えてください。
- ベストアンサー
- PHP
お礼
なかなか難しいものですね。どうもありがとうございました。