BASICの宿題はお前にまかせた

■ このスレッドは過去ログ倉庫に格納されています
1BASIC
垢版 |
2006/01/09(月) 15:35:00
N人分のデータ(氏名、体重、身長、年齢)がDATA文で入力されているプログラムが
ある。これを用いて次のプログラムをBASICで作成しなさい
身長が160CM以上で170cm未満の人の名前を表示する
218デフォルトの名無しさん
垢版 |
2007/01/27(土) 00:07:17
>>215
あっそうでした。ありがとうございました。

>>216
これで良さそうです。ありがとうございました。
219デフォルトの名無しさん
垢版 |
2007/01/27(土) 00:13:47
度々すみません。
前のプログラムを応用して、別のプログラムを作ったのですが、
tanx=c/xを計算する部分の組み込みがうまくいかず、どうしても計算結果が違ってしまいます。
お願いするばかりで恐縮なのですが、どうぞよろしくご教授ください。
220219
垢版 |
2007/01/27(土) 00:15:47
こちらが自作のプログラムです。

Let Iapp=1.33
Let Ei=0
Let Cs=1
Let Rs=0.001
Input "Cを入力してください。",CtL
Input "Rを入力してください。",RtL
For t = 1 to 1300
For n=1 to 100
Let a=n*PI()
Let c=Cs/CtL
DEF f(x)=TAN(x)-c/x
DEF g(x)=COS(x)^(-2)+c*x^(-2)
LET x=a
LET E=0.000001
DO
LET x1=x-f(x)/g(x)
IF ABS(x1-x)<E THEN EXIT DO
LET x=x1
LOOP
S=0
S=S+cos(X1)*EXP(-t*X1^2/RtL/CtL)/(X1*((CtL+Cs)*sin(X1)+X1*CtL*cos(X1)))
Next n
V=Ei+1/1000*(Iapp*(Rs+2*t/(2*CtL+Cs)+RtL*CtL^2*(8*CtL+5*Cs)/(6*(2*CtL+Cs)^2)-2*RtL^2*S))
Print V
Next t
END
221217
垢版 |
2007/01/27(土) 01:57:24
問題点がわかりました。
級数の数を決定するステップでFor文を使用してしまった為に、
tanx=c/xがちゃんと計算できてないだけでした。
しかし、For文の他に何度も計算させるコマンドがわかりません。
どうしたら良いでしょうか?。
222デフォルトの名無しさん
垢版 |
2007/01/27(土) 01:59:14
IF と GOTO 使え。
それが基本(w
2007/01/27(土) 02:03:14
DO LOOP
DO WHILE
LOOP WHILE
LOOP UNTIL

などたくさんある
224217
垢版 |
2007/01/27(土) 02:25:51
>>222
>>223

アドバイスありがとうございました。
自分で調べてやってみましたが、どうもまだ違うようです。
どこを間違えたのでしょうか?。
また手直しをしてください。お願いします。 ↓
225217
垢版 |
2007/01/27(土) 02:26:36
Print"Rs(単位 Ω)=(=γ*RtL)=",Rs
Print"Cs(単位 F)=(=θ*CtL)=",Cs
Input "CtLを入力してください(単位 F).",CtL
Input "RtLを入力してください(単位 Ω).",RtL
Print "Emeas/V"
For t = 1 to 1300
n=0
While n <=100
n=n+1
Let a=n*PI()
Let c=Cs/CtL
DEF f(x)=TAN(x)-c/x
DEF g(x)=COS(x)^(-2)+c*x^(-2)
LET x=a
LET E=0.000001
DO
LET x1=x-f(x)/g(x)
IF ABS(x1-x)<E THEN EXIT DO
LET x=x1
LOOP
S=0
S=S+cos(x1)*EXP(-t*X1^2/RtL/CtL)/(x1*((CtL+Cs)*sin(x1)+x1*CtL*cos(x1)))
Wend
Emeas=Ei+1/1000*(Iapp*(Rs+2*t/(2*CtL+Cs)+RtL*CtL^2*(8*CtL+5*Cs)/(6*(2*CtL+Cs)^2)-2*RtL^2*S))
Print a
Next t
END
2007/01/27(土) 03:05:34
>>225
何をしたいのかよくわからんな。
ニュートン法か?
計算の元になる文献かPDFへのリンクを貼ってくれないか?

こういうエラーは文法エラーではなく論理エラーと言う物で、
文法的には誤りがないため、元の文献を参照できないと
どこが間違っているのかわからない。
2007/01/27(土) 03:07:05
まあ多分
S=0
S=S+cos(x1)*EXP(-t*X1^2/RtL/CtL)/(x1*((CtL+Cs)*sin(x1)+x1*CtL*cos(x1)))

の所で、S=0を別の所に置かないとだめなんだろうぐらいは予想できるけど。
228217
垢版 |
2007/01/27(土) 04:37:29
>>226
ニュートン法の部分に関しましては、
高校数学の窓というページの質問番号1126を参照して作りました。
他の部分につきましては、申し訳ないのですが、リンクがありません。
229217
垢版 |
2007/01/27(土) 05:27:18
>>226

その部分もこちらで教えていただきました。

>>200-202を参照してください。
230217
垢版 |
2007/01/27(土) 05:40:41
>>227
それは、どうしてなのでしょうか?。
2007/01/27(土) 07:59:44
そうじゃなくって、>>225のどこが間違ってるのかって
こっちが聞きたいって意味。式の意味が全然把握できないから。
それがわからない以上、誰も答えられないでしょう。
232217
垢版 |
2007/01/27(土) 12:08:48
>>231

大変失礼いたしました。

最初のFor文は、秒数に関する設定です。
問題は次のWhile文にあるようなのですが、
ここではtanX=c/x (a=n*PI()、c=Cs/CtL )を計算してから、級数部分(s)
を計算させるつもりで作りました。
最後の行に「Print a」とありますが、これは 「Print Emeas」の間違いです。

色々な計算途中の値を表示させてみましたら、
十行目に「Let a=n*PI()」のところで
n=?の回数だけ級数の計算が為されているようなのですが、
n(n=1,2,3となってほしい。)
がきちんとnがPI()にかけられてないみたいなのです。

どこを間違えてしまったのか、この説明でわかるでしょうか?。
教えてください。
よろしくお願いします。

233217
垢版 |
2007/01/28(日) 14:27:05
tanx=c/xの部分は、カウンターを組み込むことでクリアできました。
しかし、Sの計算でつまづいてしまいました。
t=1から1000までの間、Sの値が変化しないのです。
何故でしょうか?。
どなたか教えてください。

234デフォルトの名無しさん
垢版 |
2007/01/30(火) 12:01:21
ニュートン法を教えてください
2007/01/30(火) 21:09:54
>>234
DEF f(x) = x^2 - 2
DEF df(x) = 2*x
LET EPS = 0.000001
LET IMAX = 1000
LET x = 2
FOR i=1 TO IMAX
LET x1 = x - f(x) / df(x)
IF ABS(x1 - x) < EPS THEN EXIT FOR
LET x = x1
NEXT i
IF i < IMAX THEN PRINT x1
END
236デフォルトの名無しさん
垢版 |
2007/02/02(金) 23:51:26
10CLEAR :CLS
20DIM A(2),B(2)
30FOR J=0 TO 2
40A(J)= RND 6-1
50NEXT
60*MAIN
70LOCATE 0,0
80FOR J=0 TO 2
90IF B(J)=0 LET A(J)=(A(J)+1) MOD 6
100PRINT MID$ ("$*\7+&",A(J)+1,1);
110NEXT
120C= ASC INKEY$ -49
130IF C>-1 AND C<3 IF B(C)=0 LET D=D+1,B(C)=1
140IF D<3 GOTO *MAIN
150IF A(0)=A(1) AND A(1)=A(2) PRINT " GOOD"
160CALL 48381
170GOTO 10

このプログラムはどのような物か教えてください。
どの命令がどのような意味を持っているのか分からないのでお願いします。
2007/02/09(金) 10:49:57
>>236
スロット
238デフォルトの名無しさん
垢版 |
2007/02/18(日) 11:52:37
サイコロをK回振ったとする。100回振ったとき、それぞれの目が出た回数をコンピュータでシュミレーションせよ。横軸に出た目、縦軸に出た回数をプロットし、折れ線グラフをかけ。

どうやって解けばいいでしようか
どなたかお願いします
2007/02/18(日) 15:51:52
>>238
100 CLS 3:DIM D(6):FOR I=1 TO 6:D(I)=0:NEXT I:RANDOMIZE 10
110 FOR I=1 TO 100:N=INT(RND*6)+1:D(N) = D(N) + 1:NEXT I
120 LINE (100,10)-(100,300),7:LINE(100,300)-(580,300),7
130 FOR I=1 TO 6:LOCATE 11+10*I,19:PRINT I;:NEXT I
140 FOR I=0 TO 6:LOCATE 9,18-I*3:PRINT I*5;:NEXT I
150 PSET(180,300-D(1)*10),7
160 FOR I=1 TO 6
170 LINE-(I*80+100,300-D(I)*10),7
180 LOCATE I*10+10,18-INT(D(I)*3/5):PRINT D(I);
190 NEXT I
200 LOCATE 0,20
240デフォルトの名無しさん
垢版 |
2007/02/18(日) 17:41:25
>>239
遅くなりました!有り難うございます
241デフォルトの名無しさん
垢版 |
2007/02/25(日) 18:31:08
簡単な自分の好きなゲームを2つ作りなさい。
ただし数当てゲームは無しとする。

どうしたらいいか全くわかりません!
どなたか助けていただけないでしょうか?
今週の水曜日までなので…
2007/02/25(日) 19:24:41
>>241

10 REM TAIPINGU GE-MU
20 A$ = "RENSYUU SHITAI MOZIRETSU"
30 PRINT A$
40 INPUT B$
50 IF A$ = B$ THEN 80
60 PRINT "TIGAIMASU"
70 GOTO 30
80 PRINT "OWARI"
90 END

100 'NOURYOKU TORE-NINGU
110 SCREEN 0,1:CONSOLE ,,0,1:CLS 3:DEFINT A-Z
130 SIZ = 9:MAX = 100 : WAITCOUNT =10000
140 RANDOMIZE VAL(RIGHT$(TIME$,2))
150 FOR I=0 TO SIZ
160 Q(I) = RND(MAX):ANS = ANS + Q(I)
170 NEXT
180 FOR I=0 TO SIZ
190 PRINT Q(I)
200 GOSUB *SWAIT
210 CLS
220 NEXT
230 INPUT "GOUKEI";G$
240 IF VAL(G$) = ANS THEN PRINT "SEIKAI!":END
250 PRINT "ZANNEN!":END
300 *SWAIT
310 FOR S=0 TO WAITCOUNT :NEXT
320 RETURN
2007/02/25(日) 20:43:42
>>241
10 REM 4,6で左右移動
20 CONSOLE 0,14,0,1:CLS 3:X=320:Y=199:K=0:W=0
30 A$=INKEY$
40 IF A$="4" THEN X=X-1:IF X<0 THEN X=0
50 IF A$="6" THEN X=X+1:IF X>639 THEN X=639
60 FOR I=1 TO 10:PSET(RND(1)*640,399),3:NEXT
70 ROLL 1 'ActiveBasicの場合は ROLL 0,-1
80 IF POINT(X,Y)=3 THEN PRINT "走行距離";K;"m":END ELSE K=K+1
90 PSET(X,Y),1:FOR I=1 TO W:NEXT:GOTO 30

100 REM じゃんけんゲーム
110 CLEAR:DIM A$(3),B$(3),H(3,3),S(3)
120 A$(1)="グー":A$(2)="チョキ":A$(3)="パー":S(1)=0:S(2)=0:S(3)=0
130 B$(1)="あいこ":B$(2)="あんたの勝ち":B$(3)="あんたの負け"
140 H(1,1)=1:H(1,2)=2:H(1,3)=3:H(2,1)=3:H(2,2)=1:H(2,3)=2:H(3,1)=2:H(3,2)=3:H(3,3)=1
150 CLS:PRINT "じゃんけんゲーム"
160 INPUT "(1:グー, 2:チョキ, 3:パー, 0:やめる)"; N1
170 IF N1=0 THEN GOTO 220 ELSE IF N1>=1 AND N1<=3 THEN GOTO 190
180 GOTO 160
190 N2=INT(RND(1)*3)*Z+N1-1:IF N2<1 THEN N2=3
200 K=H(N1,N2):S(K)=S(K)+1
210 PRINT "あんた:";A$(N1), "俺:"A$(N2)," ";B$(K):PRINT:GOTO 160
220 PRINT S(2);"勝", S(3);"敗", S(1);"引き分け":END
244デフォルトの名無しさん
垢版 |
2007/02/28(水) 00:14:40
ありがとうございます!
おかげさまでとても助かりました!
2007/03/22(木) 23:32:51
統計の平均と標準偏差をポケコン(PC-G850)で計算したいんだけど、
プログラムをすっかり忘れたので教えて。

変数は
D データ
M 平均
S 標準偏差
SUM 総和
V 分散
N サンプル数
こんな感じで、

10 INPUT D
20 N=N+1
30 SUM=SUM+D
40 M=SUM/N
50 PRINT M
60 GOTO 10
みたいなプログラムを作りたいんだけど、初めからN数が分かっていない場合に、
分散ってどうやって計算したらよい?
出来ればデータを入力するたびに平均、標準偏差を出力したい。
エレガントな必要は全く無いので、よろしく頼みます。
2007/03/23(金) 06:34:10
分散は平均値がわからないと出せないんじゃないの?
だから各データを配列変数とかにこっそりしまっておくのがいいとおもう
2007/03/23(金) 07:45:35
それについては
各データの自乗の総和から平均の自乗のN倍を引けば良いんじゃないかと・・・?
(Di-M)^2を変形して出来ない?
2007/03/23(金) 08:48:39
>出来ればデータを入力するたびに平均、標準偏差を出力したい。

これをどう解釈するかだな
2007/03/23(金) 20:30:21
Dの自乗の総和を変数SUM2(?)としといて
35 SUM2=SUM2+D^2
45 V=(SUM2-M^2)/N
46 S=SQR V
55 PRINT S

ダメ?
250245
垢版 |
2007/03/24(土) 10:56:42
>>246
配列のプログラム書けないんだ
          _
      ミ ∠_)
         /
         /   \\
 ウイーン  Γ/了     | |
  ウイーン  |.@|    | | ガッガッガッ
       | / | .     人
       |/ |    <  >_Λ∩ >>245
      _/  | //. V`Д´)/
      (_フ彡           /
2007/03/24(土) 17:03:50
>>250
書く気が無いの?それとも実現できないの?
2007/03/27(火) 01:01:13
ポケコンってSUMみたいな名前は変数に使えないっけ?

10 INPUT X
20 N=N+1
30 S=S+X
40 R=Q+X^2
45 IF N=1 THEN 10
50 M=S/N
60 V=R/N-M^2
70 D=SQR V
80 PRINT "標本数",N
90 PRINT "平均",M
100 PRINT "分散",V
110 PRINT "標準偏差",D
120 GOTO 10


>>251
配列の構文を知らない
2007/03/28(水) 19:57:53
40行目間違ってた。
254デフォルトの名無しさん
垢版 |
2007/06/04(月) 21:32:17
10 N=0
20 T=0
30 S=0
40 INPUT X
50 N=N+1
60 T=T+X
70 S=S+X^2
80 IF N=1 THEN 10
90 M=T/N
100 V=(S-T^2/N)/(N-1)
110 D= SQR V
120 PRINT "標本数",N
130 PRINT "平均",M
140 PRINT "分散",V
150 PRINT "標準偏差",D
160 GOTO 10
170 END
2007/06/04(月) 21:36:12
N = 標本数
T = 総和
S = 平方和
X = 変数
M = 平均
V = 分散
D = 標準偏差
2007/09/02(日) 00:20:12
あげ
257デフォルトの名無しさん
垢版 |
2007/09/18(火) 15:28:04
age
258デフォルトの名無しさん
垢版 |
2007/10/03(水) 19:57:36
寿司食いたいフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフ
259某高専生
垢版 |
2007/12/07(金) 15:01:08
えーとDIMとFOR~NEXTで繰り返しのたびに順々に数値を読んでくやつ教えてくれ。
テストに出たが忘れた・・・
2007/12/07(金) 19:24:22
10 DIM A(10)
20 FOR I=1 TO 10:READ A(I):NEXT
30 NEW
40 DATA 1,2,3,4,5,6,7,8,9,10
261デフォルトの名無しさん
垢版 |
2008/01/21(月) 15:50:37

問 以下の処理を1つのプログラムで記述します。プログラムは1つです。

1.5行5列の行列[A]にデータを入力し、表示しなさい。
データは不規則な値とする。
2.行列[A]の転置行列を行列[B]に代入し表示しなさい。
3.行列[A]+行列[B]の計算をして表示しなさい。
4.行列[A]−行列[B]の計算をして表示しなさい。
5.行列[A]*行列[B]の計算をして表示しなさい。
プログラムと結果を提出します

どうしてもわかりません…
お願いします。
2008/01/24(木) 15:07:13
10 OPTION BASE 1
20 FOR I=1 TO 5
30 FOR K=1 TO 5
40 READ A(I,K)
50 NEXT:NEXT
60 GOTO 0
263デフォルトの名無しさん
垢版 |
2008/01/24(木) 19:05:09
VISUAL BASIC で学生人数の平均を出す
プログラムを作りたいのですが、どういうようなコードを
書けばいいかわかりません・・・・・。
コマンドボタンを押すと、Text欄に社員が10人の平均が出力されるような・・・ものです。
自分何とかで調べたのですが、演算(+, /, * )を使うまではわかりました。
264デフォルトの名無しさん
垢版 |
2008/01/24(木) 19:05:41
訂正
社員でなく学生です
2008/01/24(木) 21:04:14
問題12
xの値を0〜360度、10度刻みで変化したときの、関数f(x)=sin(x)、f(x)=cos(x)のグラフを同画面上に描きなさい。
N88互換BASICでよろしくお願いします。
2008/01/24(木) 23:02:23
>>265
10 CLS
20 YS1=INT(-100*SIN(0)+200)
30 YC1=INT(-100*COS(0)+200)
40 X=0
50 FOR I=10 TO 360 STEP 10
60 S=3.14159/180*I
70 YS2=INT(-100*SIN(S)+200)
80 YC2=INT(-100*COS(S)+200)
90 LINE(X,YS1)-(I,YS2),2
100 LINE(X,YC1)-(I,YC2),3
110 YS1=YS2
120 YC1=YC2
130 X=I
140 NEXT I
150 LINE(0,200)-(360,200),1
160 END
2008/01/25(金) 07:10:38
>>266
ありがとう御座いました。
268デフォルトの名無しさん
垢版 |
2008/01/29(火) 15:53:57
これ最短でゴールするようにプログラムつくってくれませんか?
できればゴール後パフォーマンスもお願いします


http://imepita.jp/20080129/564990
269デフォルトの名無しさん
垢版 |
2008/01/29(火) 23:57:59
国旗(何でもよし。でもちょっとだけ手間かかるほうがいいかも)2つ書くプログラミングと、
簡単なゲームのプログラミング(それか実行押すと絵が変わるのとかの)どなたかお願いします!!
単位かかってて切実です・・・
お願いします!
2008/01/30(水) 01:18:44
>>269
フランスとチェコの国旗(N88互換BASIC用)
10 CLS
20 LINE(15,100)-(115,300),1,BF
30 LINE(115,100)-(215,300),7,BF
40 LINE(215,100)-(315,300),2,BF
50 FOR Y=100 TO 200
60 XM=225+Y
70 LINE(325,Y)-(XM,Y),1
80 LINE(XM,Y)-(625,Y),7
90 NEXT Y
100 FOR Y=200 TO 300
120 XM=625-Y
120 LINE(325,Y)-(XM,Y),1
130 LINE(XM,Y)-(625,Y),2
140 NEXT Y
150 END
271デフォルトの名無しさん
垢版 |
2008/01/30(水) 08:49:06
268 はライントレーサーです お願いします
2008/01/31(木) 04:53:44
>>268は、ライントレーサーでハードウェアの仕様もAPIもわからずに、
どうやって解けとwwwww

丸投げにもほどがあるwwww
273デフォルトの名無しさん
垢版 |
2008/02/07(木) 04:53:46
TINY Basic について
a1=√(1/2)
a2=√(1/2)×√((1/2)+(1/2)√(1/2))
a3=√(1/2)×√((1/2)+(1/2)√(1/2))
  ×√((1/2)+(1/2)((1/2)+(1/2)√(1/2)))
… とするとき、
nを入力すればanが出力されるプログラムってどう書くのですか?
274デフォルトの名無しさん
垢版 |
2008/02/07(木) 09:32:12
WAITってw
2008/02/07(木) 12:09:57
>>272
式を生成するんじゃなくて数値を計算するんだよね?
こんな感じでどうかな。
n = 1
Do Until n = 0
Input "n (0で終了)"; n
If n<> 0 Then Print A(n)
Loop
End
Function A(n)
If n = 1 Then
A = Sqr(1/2)
Else
A = A(n-1) * Sqr(B(n))
End If
End Function
Function B(n)
If n = 1 Then
B = Sqr(1/2)
Else
B = 1/2 + 1/2 * B(n-1)
End If
End Function
2008/02/07(木) 12:19:38
>>272じゃなくて>>273だった。
277273
垢版 |
2008/02/07(木) 12:41:36
>>275
ご協力ありがとうございます。
申し訳ありません… "2/an を出力" でした。
"print 2/A(n)"と書きかえればよろしいでしょうか。
2/anの極限はπ(=3.1415…)になるそうですが…
278273
垢版 |
2008/02/07(木) 12:47:33
たびたびすみません。
a3=√(1/2)×√((1/2)+(1/2)√(1/2))
  ×√((1/2)+(1/2)√((1/2)+(1/2)√(1/2)))
です。すみません
2008/02/07(木) 13:46:29
3行直せば大丈夫。

If n<> 0 Then Print A(n) → If n > 0 Then Print 2/A(n)
B = Sqr(1/2) → B = 1/2
B = 1/2 + 1/2 * B(n-1) → 1/2 + 1/2 * Sqr(B(n-1))

2008/02/07(木) 13:49:25
おっとっと、最後のが間違ってる。
B = 1/2 + 1/2 * B(n-1) → B = 1/2 + 1/2 * Sqr(B(n-1))
281デフォルトの名無しさん
垢版 |
2008/02/08(金) 05:38:39
Basicプログラム
http://science6.2ch.net/test/read.cgi/math/1202327409/

1 :暇人:2008/02/07(木) 04:50:09
TINY Basic について
a1=√(1/2)
a2=√(1/2)×√((1/2)+(1/2)√(1/2))
a3=√(1/2)×√((1/2)+(1/2)√(1/2))
  ×√((1/2)+(1/2)((1/2)+(1/2)√(1/2)))
… とするとき、
nを入力すればanが出力されるプログラムってどう書くのですか?



2 :132人目の素数さん:2008/02/07(木) 04:54:15
>>1
http://pc11.2ch.net/test/read.cgi/tech/1136788500/

よって終了。
2008/02/08(金) 13:04:32
いや、このスレは漏れが課題を貰うためのスレだし。
283273
垢版 |
2008/02/09(土) 00:47:20
ありがとうございました。
解決しました。
284N88互換
垢版 |
2008/02/15(金) 00:48:30
25 input n
35 if n=1 then goto 25
40 x=n MOD 2
50 if x=1 then 70
60 if x=0 then 90
70 n=n*3+1
75 print n;
80 goto 35
90 n=n/2
95 print n;
100 goto 35

この処理でどの数字も最後は1になるのですが、この処理を上手く使って
五桁の整数で1になるまで、計算処理回数が最も多い値を求めるにはどう
すれば良いのでしょうか?

分からなくて困ってしまってます・・・
お願いします。
2008/02/15(金) 08:20:16
>>284
昔それの一般解出そうとして死んだなぁ

素朴な方法としては,5桁の数値を総当りする方法だな

maxcnt=0
theninit=0
for init=1 to 99999
  n=init
  cnt=0
  *loop
  if n=1 goto *out
  reminder=n mod 2: cnt=cnt+1
  if reminder=1 then n=n*3+1: cnt=cnt+1: print n: goto *loop
  if reminder=0 then n=n/2: cnt=cnt+1: print n: goto *loop
  *out
  if maxcnt<cnt then maxcnt=cnt: theninit=init
next
print "計算処理回数がもっとも多い値="; theninit
286N88互換
垢版 |
2008/02/19(火) 21:07:14
返信遅くなりました!
かなり参考になりました。
ありがとうございました!!
287デフォルトの名無しさん
垢版 |
2008/02/20(水) 21:07:56
文字列変数に[,]が入れたときに動作不良を起こさないのってどうすればいいの?
288デフォルトの名無しさん
垢版 |
2008/03/06(木) 11:03:29
次のフローチャートに入るものがなにか
わからないので、解答をどなたかお願いします;

問1
http://uproda11.2ch-library.com/src/1169912.jpg

問2
http://uproda11.2ch-library.com/src/1169913.jpg

見にくくて申し訳ありませんが
よろしくお願いします。
2008/03/06(木) 11:21:22
>>288
問1
(1)D(M)
(2)80
(3)C1+1 -> C1
(4)C2+1 -> C2
(5)C3+1 -> C3

問2
(1)D -> S
(2)N > 0
(3)D > B
(4)D < S
290デフォルトの名無しさん
垢版 |
2008/06/21(土) 05:20:35
長さが2cm、5cm、7cmの竹ひごがそれぞれたくさんあります。

 いま、これらの竹ひごを合計30本使って、1本の長い棒を作ることにします。(1本も使わない長さの竹ひごがあっても構いません)(※)

 では、 長い棒の長さとして考えられる数は何通りあるでしょうか。


※・・・例えば、「2cmを30本、5cmを0本、7cmを0本」なら60cm、「2cmを2本、5cmを10本、7cmを18本」なら180cmの長い棒ができますね。

この問題を解くためのプログラムを教えてください。お願いします。
291デフォルトの名無しさん
垢版 |
2008/06/21(土) 06:10:06
充足問題を解くのか
動的計画法でいいんかな
微妙に単調増加っぽいけど忘れた
2008/06/27(金) 00:55:42
質問しつれいします。
素数のリストを、有限の自然数N以下に限定しないで次々に書き出す
プログラムを書きたいのですが、どのようにすればいいのでしょうか?
Nを限定した時はDIMを使えば出来たのですが、上のような時はどうすればいいのか。
記憶容量は無視していいそうです。
どなたか回答お願いします。
2008/06/27(金) 16:28:08
>>292

100 ' SOSUU PRINT
110 N=1
120 'SOSUU TYEKKU
130 FOR M=2 TO N-1
140 IF (N MOD M) = 0 THEN GOTO 170
150 NEXT
160 PRINT N;
170 N=N+1
180 GOTO 120
300 END
2008/06/28(土) 00:43:23
メッセージの定義されていないエラーです。
行番号:130
と出て、71までの素数しか表示されないのですが・・・
せっかく答えていただいたのに文句言ってすいません。
どこを改良すればいいのでしょうか?
2008/06/28(土) 08:19:43
>>292
>記憶容量は無視していいそうです。

無限に大きい配列を用意すればいい。
2008/06/28(土) 23:17:12
>無限に大きい配列を用意すればいい。

どうすればいいんでしょうか?
2008/06/29(日) 00:52:56
>>292

100 PRINT 2
110 PRINT 3
120 N=5
130 IF (N MOD 3)=0 THEN GOTO 190
140 I=6 :M=INT(SQR(N))+1
150 IF I>M THEN PRINT N :GOTO 190
160 IF (N MOD (I-1))=0 THEN GOTO 190
170 IF (N MOD (I+1))=0 THEN GOTO 190
180 I=I+6 :GOTO 150
190 N=N+2 :GOTO 130
2008/06/29(日) 01:09:48
できました!
これで単位落とさなくてすみそうです。
本当にありがとうございました。
2008/06/29(日) 08:36:57
できた、じゃなくてやってもらった、だろ。
300学生
垢版 |
2008/07/02(水) 14:07:14
プログラミングの授業でsin30°の値を出したときに0.499999616987256という値が出てきたのですが・・・
普通だったら0.5だがなぜこの値になったのか理由を示せといわれました。
自分には全然わからなかったので是非教えていただきたいのですが、
よろしいでしょうか?
2008/07/02(水) 18:13:21
大卒ニートによる回答
結論から言うと、計算時に誤差が発生しているから。
おそらくπが3.14159と定義されている。

三角関数(SINとか)は確か引数にラジアン単位で指定したような気がした。
ラジアンと度数の変換は「度数×円周率(π)÷180」で出来る。
円周率は無限小数だから、コンピュータ上でそのままの値を扱うのは困難。
なので、πはπそのものではなく、近い数値が割り当てられている。

10 p1=3.1415 : p2=3.14159 : p3=3.1415926535897
20 print sin(30*p1/180) : print sin(30*p2/180) : print sin(30*p3/180)
これの実行結果で発生する誤差を確認の事
302学生
垢版 |
2008/07/03(木) 00:49:58
本当にありがとうございます!
もしよければ、まだ他にsin(30)=0.499999616987256(なぜ0.5でないのか?)
可能性があるとしたら何かありませんか?
2008/07/03(木) 10:50:15
誤差以外に思い当たることはないなぁ。

処理系によって実装の仕方が違うと思うし、どのBASICなのか明示されてないから、これ以上詳しくはわからない。
パソコン上のBASICだと三角関数の引数にはラジアンで指定してやるのが普通。(だった気がする)
ポケコン上のBASICなら度数で指定してやれるものもあった気がする。使った事無いけど。

度数からラジアンに変換して計算する限り、誤差が発生する。
計算結果が小数点以下15位まで求められるのに、それよりもずっと低い精度でπが定義されてるとか。
十分な精度でπが定義されていれば、計算結果を修正して表示する処理系もある。(ような気がする)

もし、sin(30)と指定できて、0.49999616987256が帰って処理系があるとすれば、次のような感じではないだろうか。
・内部的には30°をラジアンに変換している
・変換に使用するπは3.14159と定義されている
・求まる答えは0.49999961698725570...である
・有効桁は小数点以下15位までなので、16位で四捨五入し、0.49999616987256が返ってくる。
もし、有効桁数が小数点以下5位あたりまでであれば、四捨五入されて0.5が返ってきたんじゃないかと。
304学生
垢版 |
2008/07/03(木) 12:00:30
本当にありがとうございます!
305デフォルトの名無しさん
垢版 |
2008/07/04(金) 14:10:01
BASICを勉強しているのは工業系の高校ですか?
普通科高校卒の僕はBASICの宿題がある事を今知りました
2008/07/04(金) 15:33:42
コラコラ、普通科でも数学でBASICやるぞ。
307デフォルトの名無しさん
垢版 |
2008/07/13(日) 16:34:53
質問です。次のようなプログラムを組むにはどうしたらいいのでしょうか?
どれか1つでもいいので分かる方お願いします。

1.八十八夜の月日を求めるプログラムをWHILE繰り返し分を使って作成し、実行しなさい
結果は次のように出力すること
この問題の八十八夜は 月 日となります

2.2の平方根を出力しなさい(二分法による平方根の計算) δ=0.0001とする

3.2の平方根を出力しなさい(ニュートン・ラプソン法による平方根の計算) δ=0.0001とする

308デフォルトの名無しさん
垢版 |
2008/07/14(月) 00:43:52
宿題してるんですけど質問させてください
10 for x=&h61 to &h7A
20 print chr$(x);
30 next x
40 end

run
abcdefghijklmnopqrstuvwxyz

になるんですけど
これを逆順に表示する方法ありますかね
10 for x=0 to 25
20 print chr$(122-x);
30 next x
40 end
な感じでもできるっちゃできるんですけど

アスキーコード?使ってできないですかね。
さっきベーシックはじめて触って苦戦してます。
教えていただきたいです。お願いいたします〜。
2008/07/14(月) 00:47:04
>>308
for x=&f7a to &h61 step -1 ってできなかったっけ?
310デフォルトの名無しさん
垢版 |
2008/07/14(月) 01:06:15
>>309
あ、できましたっ
ありがとうございました!w
2008/07/20(日) 16:57:54
等差数列のプログラムがうまくいかないので、御伝授下さい。


100 REM 等差数列
110INPUT N, A, D
120 S=N{2A+(N-1)*D}/2
130 PRINT "項数=" ; N
140 PRINT "初項=" ; A
150 PRINT "公差=" ; D
160 PRINT "総和=" ; S
170 END
2008/07/20(日) 17:26:19
>>311
> 110INPUT N, A, D
# 110 INPUT N, A, D

> 120 S=N{2A+(N-1)*D}/2
# S=N*(2*A+(N-1)*D)/2
2008/07/20(日) 18:33:58
>>312
ありがとうございます。
助かりました。
314デフォルトの名無しさん
垢版 |
2008/07/24(木) 16:28:20
C言語をBASICに翻訳するソフトをどこで手に入るか教えてください
2008/07/24(木) 22:24:59
>>314
http://www.google.co.jp/
2008/07/24(木) 22:33:52
いやいや、まずないと思うし
万が一あったとしてもBASICとして読んでもわからないプログラムに変換されてるだろ
2008/07/25(金) 00:22:26
まあ今時BASICなんて方言だらけだし
Cと互換性のあるBASICを自分で作っちゃえばいいんじゃね?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況