- ベストアンサー
ロジック・・・ プログラミング
ポケットコンピュータでプログラミングをしている とある者です。 次の問題を言語、Basicを用いて作ってください。 ※ 私は、それを利用するとか宿題だぁ!とか そういったものではありません。 専門知識のある方のプログラムの作り方をみて勉強をさせていただきたいのです。 なるべく簡単な文でお願いいたします。 ┏━┓ ┃1┃ ┗━┛ 5人に英語のテストを行い、次のような結果が得られました Aくん= 20 Bくん= 40 Cくん= 30 Dくん= 80 Eくん= 50 (1)それぞれの点数を(READ,DATAを使い)読んでから、5人の平均を求め、さらに平均点に最も近い点数を見つけ、平均点にもっともちかい点数を表示するプログラム (2) ↑(1)のやつを、READで読むのではなく、INPUTに書き換えるのならば、その書き換えた部分のプログラム ┏━┓ ┃2┃ ┗━┛ (1)X,Yの値を入力して Z=X*(かける)Y+Y を計算し、Zの値を表示し、プラスの時は、”プラス”、マイナスの時は”マイナス”、ゼロの時は”ゼロ”と表示するプログラム。 その表示と同時に、その計算結果を表示させる。 (2) ↑(1)のプログラムを改良して、最後まで計算をしたら、 ”Please any key!”と点滅表示させて、何かキーを押したら、最初の行に戻るプログラムにする。 どうか、面倒さまですが、おしえてください。 また、こんな初心者にも(でなくても)わかるようなHPがありましたら、教えてくださいね。 ご回答お待ちしています。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
行番号は省略します 1-(1) OPTION BASE 0 DIM A(4) READ A(0),A(1),A(2),A(3),A(4)…* FOR N=0 TO 4 LET T=T+A(N) NEXT N LET T=T/5 LET S=ABS(A(0)-T) FOR N=1 TO 4 IF S>ABS(A(N)-T) THEN LET S=ABS(A(N)-T) LET M=N END IF NEXT N PRINT A(M) DATA 20,40,30,80,50 END 1-(2) *の部分を FOR I=0 TO 4 INPUT A(I) NEXT I としDATAを消します。 2-(1) INPUT X,Y LET Z=X*Y+Y LET ZZ=SGN(Z) SELECT CASE ZZ CASE 1 PRINT :"プラス"; CASE 0 PRINT :"ゼロ"; CASE -1 PRINT :"マイナス"; END SELECT PRINT:ZZ END 2-(2)はまた後で、
その他の回答 (2)
- muyoshid
- ベストアンサー率72% (230/318)
こんにちわ。 ひさびさにBasic のプログラムを書きました。 Basic も機種によって文法が異なる場合がありますので、お使いの環境で そのまま動くかどうかは分かりません。 1-1 平均点と平均に一番近い点数を出力 (Read~Data 版) 100 rem 110 dim score(5) as integer 120 rem 5人の平均を求める 130 sum=0 140 for i = 1 to 5 150 read score(i):sum = sum + score(i) 160 next i 170 avg = sum / 5 180 rem 平均に一番近い点数を求める 190 diff = abs(avg - score(1)):sc = score(1) 200 for i = 2 to 5 210 if abs(avg - score(i)) < diff then 220 diff = abs(avg - score(i)):sc = score(i) 230 end if 240 next i 250 print "Average= ";avg 260 print "Score= ";sc 300 data 20, 40, 30, 80, 50 1-2 平均点と平均に一番近い点数を出力 (Input 版) 100 rem 110 dim score(5) as integer 120 rem 5人の平均を求める 130 sum=0 140 for i = 1 to 5 150 print chr$(asc("A") + i - 1); "君の点数 "; 160 input score(i):sum = sum + score(i) 170 next i 180 avg = sum / 5 190 rem 平均に一番近い点数を求める 200 diff = abs(avg - score(1)):sc = score(1) 210 for i = 2 to 5 220 if abs(avg - score(i)) < diff then 230 diff = abs(avg - score(i)):sc = score(i) 240 end if 250 next i 260 print "Average= ";avg 270 print "Score= ";sc 2-1 X*Y+Y の計算 100 rem 110 print "X = "; 120 input x 130 print "Y = "; 140 input y 150 z = x*y+y 160 print "Z = "; z 170 if z > 0 then 180 print "プラス" 190 elseif z < 0 then 200 print "マイナス" 210 else 220 print "ゼロ" 230 end if 2-1 X*Y+Y の計算 (キー入力待ち) 100 rem 110 print "X = "; 120 input x 130 print "Y = "; 140 input y 150 z = x*y+y 160 print "Z = "; z 170 if z > 0 then 180 print "プラス" 190 elseif z < 0 then 200 print "マイナス" 210 else 220 print "ゼロ" 230 end if 240 a$="" 250 print "Preaa any key!!" 260 a$=inkey$:if a$="" then goto 260 270 goto 110 ※ 点滅表示のさせ方が分からなかったので、単に表示にしてあります。
- eatern27
- ベストアンサー率55% (635/1135)
#1のものです。 2-(2) これは2-(1)を基本に考えます。 DO INPUT X,Y LET Z=X*Y+Y | |(1)を見て埋めて下さい。 | END SELECT PRINT ZZ PRINT "Please any key!”←"Press any key!”では? CHARACTER INPUT CLEAR:s$ LOOP #1で"PRINT"の後の":"を消して下さい。