新しく発言する EXIT インデックスへ
教えてください

  教えてください けいた 2004/12/08 02:41:32 
  この2つの問題は一体のもので,前半は後半の... 白石 和夫 2004/12/08 10:38:05 
  │└白石さん、こんにちは。 けいた 2004/12/08 11:05:58 
  ヒント 山中和義 2004/12/08 13:52:55 
   └山中さん。アドバイスありがとうございます... けいた 2004/12/08 18:50:15 
    └先ほどのは2つ目のヒントですが、、、 山中和義 2004/12/08 19:20:29 
     ├あつ!! けいた 2004/12/08 20:37:36 
     └あ、あと!プログラム中に使用する名前の型... けいた 2004/12/08 20:58:17 
      └プログラム仕様書 山中和義 2004/12/09 09:26:19 
       └山中さん。こんにちは。 けいた 2004/12/09 11:03:17 

  教えてください けいた 2004/12/08 02:41:32  ツリーへ

教えてください 返事を書く
けいた 2004/12/08 02:41:32
n個の値a[0]、a[1]・・・、a[n−1]が与えられているとき、 を与えるとa[ ]の順位rを求めるプログラムを書け。ただし、順位=(自分より大きいものの個数+1)である。

n個の値a[0]、a[1]・・・、a[n−1]が与えられているとき、配列a[ ]を大きさの順に並び替えた配列b[ ]を作り出すプログラムを書け。

この2つの問題がわかるかた。ご指導よろしくお願いします。

  この2つの問題は一体のもので,前半は後半の... 白石 和夫 2004/12/08 10:38:05  ツリーへ

Re: 教えてください 返事を書く
白石 和夫 2004/12/08 10:38:05
この2つの問題は一体のもので,前半は後半のヒントでしょう。
前半は,素直に自分より大きい要素の個数を数えればよいのだと思います。
ここで,自力で解決しておかないと,この先が苦しくなることが必定です。がんばって考えてみてください。

  │└白石さん、こんにちは。 けいた 2004/12/08 11:05:58  ツリーへ

Re: この2つの問題は一体のもので,前半は後半の... 返事を書く
けいた 2004/12/08 11:05:58
白石さん、こんにちは。
返信ありがとうございます。
今日までにこの2問を解かないといけないんですよ。。。
もちろん、これからも勉強を続けていきます!!
できれば教えていただけないでしょうか??

  ヒント 山中和義 2004/12/08 13:52:55  ツリーへ

Re: 教えてください 返事を書く
山中和義 2004/12/08 13:52:55
ヒント
添え字は1からです。

DIM A(10),B(10)
DATA 56,88,67,67,76,25,100,56,55,67 !元データで確認する

!データを読込む
FOR i=1 TO 10
READ A(i)
NEXT i


!順位を算出して、並べ替える
FOR i=1 TO 10 !1番目から順に
LET X = 1 !まず、1番とする
LET XX = 0 !同位の数は0とする
LET m = A(i)
FOR J=1 TO 10 !他と比較して大きいのがあれば、
IF A(J)>m THEN LET X = X + 1 !順位を下げる
IF A(J)=m THEN LET XX = XX + 1 !同位のものを数える
NEXT J
FOR J=1 TO XX !その順位の位置に設定する
LET B(X+J-1) = m
NEXT J
NEXT i


!並べ替えたデータを表示する
FOR i=1 TO 10
PRINT B(i);
NEXT i

END

   └山中さん。アドバイスありがとうございます... けいた 2004/12/08 18:50:15  ツリーへ

Re: ヒント 返事を書く
けいた 2004/12/08 18:50:15
山中さん。アドバイスありがとうございます!
今日中に解かないといけないので、頑張ってみます。
できれば、2つ目の問題もヒントをいただけないでしょうか??
僕は文系の人間で大苦戦です。。

BASICプログラムの参考書は本当にすくないですね。
C言語がほとんどですよね・・・。

    └先ほどのは2つ目のヒントですが、、、 山中和義 2004/12/08 19:20:29  ツリーへ

Re: 山中さん。アドバイスありがとうございます... 返事を書く
山中和義 2004/12/08 19:20:29
先ほどのは2つ目のヒントですが、、、
これが1つ目(順位付け)で、B()に順位が入ります。

DIM A(10),B(10)
DATA 56,88,67,67,76,25,100,56,55,67 !元データで確認する

!データを読込む
FOR i=1 TO 10
READ A(i)
NEXT i


!順位を算出する
FOR i=1 TO 10 !1番目から順に
LET X = 1 !まず、1番とする
LET m = A(i)
FOR J=1 TO 10 !他と比較して大きいのがあれば、
IF A(J)>m THEN LET X = X + 1 !順位を下げる
NEXT J
LET B(i) = X
NEXT i


!順位を表示する
FOR i=1 TO 10
PRINT B(i);
NEXT i

END

     ├あつ!! けいた 2004/12/08 20:37:36  ツリーへ

Re: 先ほどのは2つ目のヒントですが、、、 返事を書く
けいた 2004/12/08 20:37:36
あつ!!
すいません。。
山中さん☆本当にありがとうございます!!
山中さんのアドバイスを元に頑張ってみます。
本当にありがとうございました。

     └あ、あと!プログラム中に使用する名前の型... けいた 2004/12/08 20:58:17  ツリーへ

Re: 先ほどのは2つ目のヒントですが、、、 返事を書く
けいた 2004/12/08 20:58:17
あ、あと!プログラム中に使用する名前の型、属性、意味内容を明示し、用いたアルゴリズムを詳細に説明せよ。って言われてるのですが、どういうことなのでしょうか??

      └プログラム仕様書 山中和義 2004/12/09 09:26:19  ツリーへ

Re: あ、あと!プログラム中に使用する名前の型... 返事を書く
山中和義 2004/12/09 09:26:19
プログラム仕様書
プログラムを書く手順は、(おおざっぱですが)
・処理手順を考える(アルゴリズム)
・その手順をプログラム言語の置き換える(コーディング)


今回求められているのは、(順位の方だけ)

使用変数一覧
A(i) 配列整数 対象の数値
B(i) 配列整数 それに添え字が対応した順位が入る
X 整数 順位。1は一番大きい。
m 整数 作業用
i 整数 カウンタ用(総当り)。対象数値の数。
J 整数 カウンタ用(総当り)。対象数値の数。

※変数は整数だが、実数も可能。


処理手順(アルゴリズム)
1.対象数値を一列に並べる。(配列に代入する)
2.並んだ1番目から順に次の作業をする。(FOR i=1 TO 10)
 2−1.まず、順位を「1番」とする。(LET X=1)
 2−2.基準の数値を1つ決める。(LET m=A(i))
 2−3.この数値と残り(自分も含む)の数値を比較して、
     残りの数値が大きければ順位を下げる。
      (FOR J=1 TO 10〜NEXT Jの箇所)
3.確認のため印字する。

ヒント
 カードを一列に並べて、1つ選びます。
 選んだカードと残りのカードを1つずつ比較していきます。
 そのとき、自分より大きい数があればカウントしていきます。
 そのカウント値が順位となります。

       └山中さん。こんにちは。 けいた 2004/12/09 11:03:17  ツリーへ

Re: プログラム仕様書 返事を書く
けいた 2004/12/09 11:03:17
山中さん。こんにちは。
アドバイス本当にありがとうございます。
とても助かりました。
これからも、もっともっと勉強していきたいと思います。


インデックスへ EXIT
新規発言を反映させるにはブラウザの更新ボタンを押してください。