• ベストアンサー

プログラムの見本を示してください!!

数学プログラムの授業をしています。:プログラム言語は「Basic」です。 今から問題と、少しやれたものについては、プログラムを記してみました。 問題の最後の 「※」部分が質問したいところです。ない場合は、何もわからないところです。 (1)DIMを用いて 5つの値をキーボードから入力して、そのうち最大の値を表示するプログラム ※90行目以降の「最大値」の表示の仕方がいまいちわかりません。   10:DIM (5) 20:FOR I=0 TO 4 30:INPUT I 40:NEXT I 50:S=0 60:FOR L=0 TO 4 70:S=S+A 80:NEXT L 90:PRINT ??? (2)FOR,NEXT分を使い、 S=2+(2+3)+(2+3+4)+ ........+(2+4+5+6+7+8+9+10) の計算をして Sを表示するプログラムを作りたい。 以上お願いいたします。

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

  • ベストアンサー
  • eatern27
  • ベストアンサー率55% (635/1135)
回答No.3

#1です。訂正です。回答した直後に気が付きました。 (2) 全てを訂正します これ以降です。まあ最初から書きますと、 10:S=0 20:L=0 30:FOR N=2 TO 10 40:LET S=S+N 50:LET L=L+S 60:NEXT N 70:PRINT L 80:END 10:S=0 もう間違いはないと思います。 (1) >60~80行目は何をやっているのか分かりません 正確には、何をやっているのかは分かるのですが、こうすることに意味が無いのです。例えば、{1,2,3,4,5}の最大値を求めよといわれて1+2+3+4+5とはやりませんよね?これが、どこかに書いていたのなら、私の解釈が悪かったと思うので、60~80行目を正確に書いて下さい。

lifebird
質問者

補足

その他の回答 (3)

  • adjective
  • ベストアンサー率17% (241/1356)
回答No.4

まず(1) スミマセン10年以上使ってないので自信はない。 10番で5回インプトしようとしているけど? 30 INPUT”数値入力=”;C  Cの値を入力する 35 DIM(I)=C       その値を行列に代入する。 のつもりじゃないですか? 50~80が気になりますけど?何がしたいのか? 大きいのを選ぶのは 100 FOR B=0 TO 4 110 IF DIM(B)>DIM(B+1) THEN SWAP DIM(B),DIM(B+1) 120 NEXT B 130 PRINT DIM(4) 110で DIM(0)の値とDIM(1)の値を比べて最初の値が大きければ入れ替える。 それを5回やるとDIM(4)が一番大きい値になります。 入力値が「6:5:2:8:2」だったら最初の6と5を比べて6の方が大きいので入れ替える、次に6と2お比べて・・・・ 「5:6:2:8:2」→「5:2:6:8:2」→「5:2:6:8:2」→ 「5:2:6:2:8」と順繰りに大きい数を右に送って行くわけね。 で最後に DIM(4)=8を表示すればよい。

lifebird
質問者

補足

回答No.2

(1)のプログラム   10:DIM A(5) 20:FOR I=0 TO 4 30:INPUT A(I) 40:NEXT I 50:Max=A(0) 60:FOR L=1 TO 4 70:IF Max<A(L) Then Max=A(L) 80:NEXT L 90:PRINT Max (2)のプログラム 10:S=0 20:SS=0  30:FOR I=2 TO 10 40:SS=SS+I 50:S=S+SS 60:NEXT I 70:PRINT S

  • eatern27
  • ベストアンサー率55% (635/1135)
回答No.1

(1) まずこのプログラムは10行目でエラーになります。10行目は 10:DIM A(5) ということでよろしいでしょうか それから、70行目は意味がありません。なぜならA=0です。S=S+0何度計算してもSの値は変わりません70行目は 70:S=S+A(L) でよろしいでしょうか。ただ、仮にこうだとしても60~80行目は何をやっているのか分かりません。ということで60行目から書きます。 60:S=A(0) 70:FOR L=1 TO 4 80: IF A(L)>S THEN 90: LET S=A(L) 100: END IF 110:NEXT L 120:PRINT S 130:END (2) 10:S=0 20:FOR N=2 TO 10 30:LET S=S+N 40:NEXT N 50:PRINT S 60:END 試してませんが、これで動くと思います。

lifebird
質問者

補足

関連するQ&A

  • Basicでのプログラムなのですが・・・

    配列変数についてなのですが、 『20個のデータを入力し、大きい順に並べて表示するプログラム。』 なのですが… 言語:【BASIC】 ソフト:【N88】 を使用しています。 とりあえず、 10 DIM A(20) 20 FOR I=1 TO 20 30 INPUT A(I) 40 NEXT I まではわかるのですが、ここから先がわかりません。 ここから先はどのようにすればいいでしょうか。 どなたかご教授いただけると幸いです。

  • このプログラムで計算を実行すると・・・

    10:S=0 20:FOR I=0 TO 6 STEP 2 30:FOR L=0 TO I 40:S=S+L 50:NEXT I 60:NEXT L 70:PRINT S 80:END 90: このプログラムを実行すると、「34」とプログラムの計算結果が表示されるのですが、実際に自分で計算すると「22」になってしまいます。 どこが違うのとか・・・基本的なとこが間違ってるのか? あとプログラムの動きを解説して頂けるとうれしいです! それでは、お願い致します。

  • 行列に関するプログラムについて

     『m×n 型行列Aの最大成分と最小成分を捜し、それぞれの行番号と列番号を出力するプログラムを作れ』という問題です。  以下のようにBACICで考えたのですが、うまく行番号と列番号を出力するプログラムを作れません。アドバイスいただければと思います。宜しくお願い致します。 100 INPUT m 110 INPUT n 120 DIM A(m,n) 130 MAT INPUT A 140 FOR i=1 TO m 150 FOR j=1 TO n-1 160 LET s=A(i,j) 170 LET t=A(i,j) 180 IF A(i,j)<A(i,j+1) THEN LET s=A(i,j+1) 190 IF A(i,j)>A(i,j+1) THEN LET t=A(i,j+1) 200 NEXT j 210 NEXT i 220 PRINT "最大成分は";s,"最小成分は";t

  • プログラム(BASIC) 教えてください

    (1) INPUT文で入力した整数 k に対し, 3, 5, 7, 9 のいずれかの値をランダムに等確率で発生し,改行せず横に続けて k個 表示させるプログラム (2)初項 a ,公差 r ,長さ n の等差数列 a, a+r, a+2r, ..., a+(n-1)r のいずれかの値を等確率で発生させるためには,乱数をどのような式で作れば良いか? INPUT文で与えられた a, r, n, k に対して,この等差数列のいずれかの値をランダムに k 個表示させるプログラム (1)は0,2,4,6を考えてから+3すればいいと思うのですがランダムに0,2,4,6を表示するプログラムの仕方が分かりません。 10 INPUT k 20 FOR L=1 TO k 30 RANDOMIZE 40 PRINT INT(   )+3; 50 NEXT L 60 END 解説があるとありがたいです。

  • 数学におけるプログラムの問題です。

    「次のプログラムは何をするものか説明し、nに360が入力されたときのp,qを求めよ。   100 INPUT n     110 FOR i=1 TO SQR(n)   120 IF MOD(n,i*i)=0 THEN LET p=i   130 NEXT i   140 LET q=n/(p*p)   150 PRINT "p=";p   160 PRINT "q=";q    END」 という問題です。  p=6,q=10 はわかります。このプログラムは「入力された値に対して、2乗して割り切れる最大の値とその時の商を求めるものである」でよろしいのでしょうか?

  • BASICからC言語に

    BASICで for I=1 to 5:line input #2,w$:next I line input #2,COMMENT$ と書かれているプログラムをC言語に書き直したいのですがどのようにしたらいいのでしょうか?

  • basicプログラムです。

    100 DIM A(5) 110 FOR J=1 TO 5 120 READ A(J)   130 NEXT J   140 FOR I=1 TO 4  150 LET K=I    160 FOR J=I+1 TO 5  170 IF A(J)<A(K) THEN LET k=J  180 NEXT J    190 LET T=A(I)    200 LET A(I)=A(K)   210 LET A(K)=T    220 FOR J=1 TO 5   230 PRINT A(J);   240 NEXT J     250 PRINT      260 NEXT I     270 DATA 5,3,7,2,1,  280 END このようなプログラムがあります。 いろいろ調べたのですがそれぞれの文の意味と 何を求めるプログラムか教えて下さい。 5つの数の組み合わせで小さい数から順番に4個 かなと思ったのですが???

  • Excel VBAにて2の100乗を計算するには

    プログラミングの勉強でVBAを学んでいるものです 以下の様な問題を出されました 2の100乗の値を計算する。この値はLong型で表せる最大の値をはるかに超すので、十分な大きさのInteger型の配列を用意し、その各要素で各けたの値を表す。値を2倍するサブプロシージャ「二倍」を書いてプログラムを完成させ、値を計算せよ。 Option Explicit Sub 二の百乗() Const n As Integer = 200 Dim s(n) As Integer Dim i As Integer, j As Integer s(1) = 1 For i = 2 To UBound(s) 'UBoundは配列の最大の添え字を返す関数 s(i) = 0 Next i For i = 1 To 100 二倍 s Next i For i = UBound(s) To 1 Step -1 If s(i) <> 0 Then Exit For Next i For j = 1 To i Cells(1, j).Value = s(i - j + 1) Next j End Sub セル一つに計算結果を表示させられないことはよく分かるのですが、そのための2の掛け算を全く思いつきません 二倍のサブプロシージャをどのようにすればいいのでしょうか

  • 小町算のプログラムについて

    小町算のプログラムについて 100 DIM s(9) 110 FOR i=1 TO 9 120 LET s(i)=-1 130 NEXT i 140 DO 150 LET sum=0 160 LET num=0 170 LET sign=1 180 FOR i=1 TO 9 190 IF s(i)<>0 THEN 200 LET sum=sum+sign*num 210 LET sign=s(i) 220 LET num=i 230 ELSE 240 LET num=10*num+i 250 END IF 260 NEXT i 270 LET sum=sum+sign*num 280 IF sum=100 THEN 290 FOR i=1 TO 9 300 IF s(i)= +1 THEN PRINT " + "; 310 IF s(i)= -1 THEN PRINT " - "; 320 PRINT i; 330 NEXT i 340 PRINT " = 100" 350 END IF 360 LET i=9 370 LET sign=s(i)+1 380 DO WHILE ( sign > 1 ) 390 LET s(i)=-1 400 LET i=i-1 410 LET sign=s(i)+1 420 LOOP 430 LET s(i)=sign 440 LOOP WHILE ( s(1) < 1) 450 END というものですが、このプログラム中にあるsum、num、signとはどういう意味があるのでしょうか?

  • 十進BASICのプログラムについて

    十進BASICのプログラムについて 小町算のプログラムですが、 100 DIM s(9) 110 FOR i=1 TO 9 120 LET s(i)=-1 130 NEXT i 140 DO 150 LET sum=0 160 LET num=0 170 LET sign=1 180 FOR i=1 TO 9 190 IF s(i)<>0 THEN 200 LET sum=sum+sign*num 210 LET sign=s(i) 220 LET num=i 230 ELSE 240 LET num=10*num+i 250 END IF 260 NEXT i 270 LET sum=sum+sign*num 280 IF sum=100 THEN 290 FOR i=1 TO 9 300 IF s(i)= +1 THEN PRINT " + "; 310 IF s(i)= -1 THEN PRINT " - "; 320 PRINT i; 330 NEXT i 340 PRINT " = 100" 350 END IF 360 LET i=9 370 LET sign=s(i)+1 380 DO WHILE ( sign > 1 ) 390 LET s(i)=-1 400 LET i=i-1 410 LET sign=s(i)+1 420 LOOP 430 LET s(i)=sign 440 LOOP WHILE ( s(1) < 1) 450 END というものですが、このプログラム中にあるsum、num、signとはどういう意味があるのでしょうか?

専門家に質問してみよう