はじめまして。 きょうこ 2005/01/15 00:17:59 ├山中さんが答えているやつですね。 青木太一 2005/01/15 04:07:55 │└ここで研究してみてください。 哲 2005/01/15 10:17:55 ├●順位付けを使った並べ換え(RANK) 山中和義 2005/01/17 11:41:45 └最大値を求めるプログラムを使った並べ換え 山中和義 2005/01/17 11:58:50 └青木さん☆哲さん☆山中さん☆ きょうこ 2005/01/18 01:26:06
はじめまして。 きょうこ 2005/01/15 00:17:59 ツリーへ
はじめまして。 |
返事を書く |
きょうこ 2005/01/15 00:17:59 | |
いぜん「けいたさん」が質問された {n個の値a[0]、a[1]・・・、a[n−1]が与えられているとき、配列a[ ]を大きさの順に並び替えた配列b[ ]を作り出すプログラムを書け。} という問題なんですが、私の通ってる大学でもだされました。 もしよろしければ、この2つ目の問題のプログラム中に使用する名前の型、属性、意味内容、用いたアルゴリズム等も教えていただけないでしょうか?よろしくお願いします。 |
├山中さんが答えているやつですね。 青木太一 2005/01/15 04:07:55 ツリーへ
Re: はじめまして。 |
返事を書く |
青木太一 2005/01/15 04:07:55 | |
山中さんが答えているやつですね。 http://freebbs.around.ne.jp/article/b/basic/47/gieulr/index.html 「名前の型、属性」 ってどういう意味なんでしょう? 「名前の型」は「変数が数値か文字列か、それぞれの配列」かどうかということかなと想像つくのですが、 「属性」がわかりません。 (十進BASICで「OPTION ARITHMETIC」で指定するものなどのことなのかな...?) >もしよろしければ と書いてあるのになんですが、大学の課題であればご自分でやるのが筋だと思います。 「答えはこうこうだと思うが、自信ないので見てくれ」や、「ここまではわかったが、ここがよくわからない」など、理解しようと試みたことを示した方がいいと思いますよ。 答えになってなくてごめんなさい。 |
│└ここで研究してみてください。 哲 2005/01/15 10:17:55 ツリーへ
Re: 山中さんが答えているやつですね。 |
返事を書く |
哲 2005/01/15 10:17:55 | |
ここで研究してみてください。 http://www.ics.kagoshima-u.ac.jp/~fuchida/edu/algorithm/sort-algorithm/ |
├●順位付けを使った並べ換え(RANK) 山中和義 2005/01/17 11:41:45 ツリーへ
Re: はじめまして。 |
返事を書く |
山中和義 2005/01/17 11:41:45 | |
●順位付けを使った並べ換え(RANK) [ヒント] 処理手順(アルゴリズム) 1.対象数値を一列に並べる。(配列に代入する) 2.並んだ1番目から順に次の作業をする。(FOR J=1 TO 10〜NEXT J) 2−1.基準の数値を1つ決める。(LET m=A(J)) 2−2.まず、順位を「1番」とする。(LET RANK=1) 2−3.この数値と残り(自分も含む)の数値を比較して、 残りの数値が大きければ順位を下げる。 (FOR i=1 TO 10〜NEXT iの箇所) 3.確認のため印字する。 [プログラム例](2の個所の抜粋) !順位を算出する FOR J=1 TO N !1番目から順に LET m = A(J) !対象の数値を求める LET RANK = 1 !まず1位とする FOR i=1 TO N !残りを調べる IF A(i)>m THEN LET RANK = RANK + 1 !大きければ、順位を下げる NEXT i LET B(J) = RANK !その順位を設定する NEXT J 順位を求めるプログラムで格納場所は分かる。 FOR J=1 TO N !1番目から順に LET m = A(J) !対象の数値を求める LET RANK = 1 !まず1位とする FOR i=1 TO N !残りを調べる IF A(i)>m THEN LET RANK = RANK + 1 !大きければ、順位を下げる NEXT i LET B(RANK) = m !その順位の位置に設定する ※※※※ NEXT J ただし、同位のものがある場合、それに順位をつける必要がある。 出現順に順位を付けて、格納場所を振り分ける。 [プログラム例] 配列 A(i) 対象の数値。※個数はNとする。 配列 B(i) 対象の数値の順位。※添え字が対応する。 変数 N 個数。※1以上 変数 m 順位を求めるの数値 変数 RANK 順位 変数 SAME 同位の数 ※※※※ FOR J=1 TO N !1番目から順に LET m = A(J) !対象の数値を求める LET RANK = 1 !まず、1位とする LET SAME = 0 !まず、0個とする ※※※※ FOR i=1 TO N !残り(自分も含む)を調べる IF A(i)>m THEN LET RANK = RANK + 1 !大きければ、順位を下げる IF i<J AND A(i)=m THEN LET SAME = SAME + 1 !前方の同位の数だけ順位を下げる ※※※※ NEXT i LET B(RANK+SAME) = m !その順位の位置に設定する ※※※※ NEXT J |
└最大値を求めるプログラムを使った並べ換え 山中和義 2005/01/17 11:58:50 ツリーへ
Re: はじめまして。 |
返事を書く |
山中和義 2005/01/17 11:58:50 | |
最大値を求めるプログラムを使った並べ換え ●最大値(MAX) [ヒント] まず1番目を最大値と仮定する。 2番目の数値と比較して、2番目が大きければ、それを仮の最大値とする。 3番目、4番目、・・・と全体に対して行う。 [プログラム例] 配列 A(i) 対象の数値。※個数はNとする。 変数 N 個数。※1以上 変数 MAX 最大値 変数 m 仮の最大値 LET m = A(1) !左端を仮の最大値とする FOR i=2 TO N !残りを調べる IF A(i)>m THEN !大きければ LET m = A(i) !仮の最大値の設定する END IF NEXT i LET MAX = m !最大値を得る ●並べ換え(ソート) 交換することで元の配列を並べ換える。先頭(1番目)から順に並べる。 [ヒント] 最大値(m)を先頭(A(1))に移動させる。 これを実現するには、最大値を求めるプログラムを使う。 LET m = A(1) !範囲内の左端を仮の最大値とする FOR i=2 TO N !残りを調べる IF A(i)>m THEN !大きければ LET m = A(i) !仮の最大値の設定する LET A(i) = A(1) !先頭と交換する ※先頭に移動する ※※※※ LET A(1) = m ※※※※ END IF NEXT i このように範囲で、その中で1番大きい値を集めていく。 「1をJに置き換える」と考えて、範囲を狭めていく。 [プログラム例] 配列 A(i) 対象の数値。実行後は大きい順(降順)に並んでいる。※個数はNとする。 変数 N 個数。※1以上 変数 m 仮の最大値 変数 J 範囲を指定する。 *基本選択法 *見つけたら交換する場合 FOR J=1 TO N-1 !範囲を狭めながら ※※※※ LET m = A(J) !範囲内の左端を仮の最大値とする FOR i=J+1 TO N !残りを調べる ※※※※ IF A(i)>m THEN !大きければ LET m = A(i) !仮の最大値の設定する LET A(i) = A(J) !先頭と交換する ※先頭に移動する ※※※※ LET A(J) = m ※※※※ END IF NEXT i NEXT J ※※※※ |
└青木さん☆哲さん☆山中さん☆ きょうこ 2005/01/18 01:26:06 ツリーへ
Re: 最大値を求めるプログラムを使った並べ換え |
返事を書く |
きょうこ 2005/01/18 01:26:06 | |
青木さん☆哲さん☆山中さん☆ お返事ありがとうございます!! 私はパソコンの知識が本当になくて・・。 でも皆様のご協力により、少しずつ理解できてると思います。 本当にありがとうございます。 |