• 締切済み

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

Tattokoの回答

  • Tattoko
  • ベストアンサー率17% (3/17)
回答No.6

 本題についての回答がまだついていないですね。 [50]行と[60]行が逆であるとして考えると、この プログラムはS(初期値は0)に「0から I までを 順に足す」ことを I を0,2,4,6と変化させておこなう ことになります。つまり、 0+(0)+(0+1+2)+(0+1+2+3+4)+(0+1+2+3+4+5+6) の答えがSに代入されることになるので、34が 表示されます。  念のために付け加えておくと、   FOR I=0 TO 6 STEP 2    ...   NEXT I は I=0から2ずつ増加させて6になるまで繰り返す (6を超えてしまったら実行しない)ということです。 つまり、I=0,I=2,I=4,I=6の4回実行されます。 そして、   FOR L=0 TO I    ...   NEXT L は L=0から(1ずつ増加させて) I になるまで繰り返す ということです。

関連するQ&A

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

    数学プログラムの授業をしています。:プログラム言語は「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を表示するプログラムを作りたい。 以上お願いいたします。

  • 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=1    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 を実行すると 13725 31725 31275 71235 という数字が出てきます。 どうしてこのような結果が出るのか 解説をお願いします。

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

    小町算のプログラムについて 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とはどういう意味があるのでしょうか?

  • 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個 かなと思ったのですが???

  • Fortran90のプログラムについて

    大学で卒論のためにFortran90でランダムウォークのプログラムを作ってるんですが…2週間悩んでるんですが、できないところがあります。 「1次元のランダムウォークにおいて、ステップ数Nとxの値を与えたときのすべての可能な歩行を数え上げるプログラムを書け」というものです。 直接ステップ数を書き込んだプログラムを基にして任意のステップ数を入力するプログラムを作ってみたんですが、うまくいきません。 integer :: a(100,20), x, i1, i2, i3 x = 0 do i1 = -1, 1, 2;do i2 = -1, 1, 2;do i3 = -1, 1, 2 x = x + 1 a(x, 1) = i1;a(x, 2) = i2;a(x, 3) = i3 end do;end do;end do end が基にしたプログラムです。これはステップ数が'3'なので実行結果は「-1-1-1,-1-11,-11-1,-11-1,-111,1-1-1,11-1,111」というxの変位の仕方が出ます。 integer, allocatable :: a(:,:) integer :: i, n, x, l print *, 'ステップ数を入力:'; read *, n allocate(a(n, 2**n)) do l = 1, n do i = -1, 1, 2 x = x + 1 a(x, l) = i end do end do end という風に作ってみたんですが、'3'を入力しても同じ結果が出ません。わかりにくい文章で申し訳ないですがどなたかご教授お願いします。

  • 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の掛け算を全く思いつきません 二倍のサブプロシージャをどのようにすればいいのでしょうか

  • プログラムの組み方について

    ウインドウズ98とエクセルとワードを使っていますが、 かつてのBASICのようなプログラムを組んで実行 させることは可能なのでしょうか?例えば 10 A=1 20 A=A+1:IF A>9 THEN 50 30 FOR B=1 TO A:PRINT B 40 GOTO 20 50 PRINT A 60 END というような簡単なものでいいのですが・・・。 どなたか教えて下さい。よろしくお願いします。

  • 2の累乗を計算するプログラムを作ったのですが・・・

    C言語を用いて、2の累乗(2,4,8,16・・・)を 計算して表示するプログラムを #include<stdio.h> void main(void) { int i,s; s=1; for(i=1; i<=15; i++) { s=s*2; printf("i=%2d s=%7d\n",s); } } と打ち込んで実行したのですが、結果が i= 1 s= 2 i= 2 s= 4 i= 3 s= 8 i= 4 s= 16 i= 5 s= 32 i= 6 s= 64 i= 7 s= 128 i= 8 s= 256 i= 9 s= 512 i=10 s= 1024 i=11 s= 2048 i=12 s= 4096 i=13 s= 8192 i=14 s= 16384 i=15 s= -32768 のように、2の15乗だけが負になってしまいました。 最初のintをdoubleやfloatに直して実行すればよいのかとも考えたのですが、 実行すると答えがすべて0になってしまい上手くいきませんでした。 どの部分がおかしいのでしょうか・・・;

  • BASIC数値解析プログラムについて。

    初めまして、私は大学でBASIC初心者でN88互換BASICでのプログラミングを今年から勉強しています。↓のプログラムで収束過程の計算結果を実行画面に表示させたくてFOR~NEXT文でいろいろ試しているのですがエラーが出てしまいます。他の具体的な方法が浮かばないです。初歩的な質問でしたら申し訳ないのですが、BASIC経験者、もしくは現在やられている方でどなたか私にアドバイスをしていただけると助かります。 (x^2-a=0のaの根を求めるニュートン法のプログラムです) 120 REM*******ニュートン・ラフソン法********* 130 FOR I = 1 TO 6 132 READ X0 134 GOSUB 140 136 NEXT I 138 END 140 PRINT "試行値は";X0 145 N=1 150 ER=.00001 180 FX=X0*X0-333 190 DFX=2*X0 200 X1=X0-FX/DFX 220 IF ABS(X1-X0)<ER THEN 250 230 X0=X1 :N=N+1 240 GOTO 180 250 PRINT X1,N 280 RETURN 300 REM *************試行値************* 310 DATA 1,5,10,50,100,500