BASICでこんなプログラム作れるの?
■ このスレッドは過去ログ倉庫に格納されています
0001音楽好き中学生
NGNG10人の身長と体重を測定する。(身長は小数点第1位まで表記)
身長170cm以上の人の人数と体重の平均。
体重 68kg未満の人の人数と身長の平均。
(ただし、170.0cmの人を1人入れよ)
できればお願いします。
0002デフォルトの名無しさん
NGNG ̄ ̄V ̄ ̄ ̄ ̄ ̄
∧ ∧
⊂(゚Д゚⊂⌒^つ≡3
0003デフォルトの名無しさん
NGNG簡単
工房でもわかるぞ
0004デフォルトの名無しさん
NGNG0005デフォルトの名無しさん
NGNGどうやってソフトで計測するのか。
0006音楽好き中学生
NGNGどうしても実行しても答えが出ません。(0人とかなったり・・・)
皆さんお願いしますm(_ _)m
0007デフォルトの名無しさん
NGNGオナニーが終わって暇してるから教えてあげる。
まずはここまでに書いたコードを出せば?
0008デフォルトの名無しさん
NGNG今回は偶然機嫌の良い人が居たから良かったが、
普段は単発の質問スレ立てると、物凄く怒られるし荒らされる。
今回は運が良かったんだろうが、次からは止めておけ。
次にスレ立てる時はローカルルール読んでこいよ。
0009デフォルトの名無しさん
NGNG荒らされたくなければ、メール欄にはsageと入れておく事をおすすめする。
0010デフォルトの名無しさん
NGNGDIM HEIGHT(NUMBER) !身長を格納する配列
DIM WEIGHT(NUMBER) !体重を格納する配列
PRINT NUMBER;"人の身長と体重を入力します。"
PRINT "身長は小数点第1位まで表記してね!"
PRINT "身長170.0cmの人を1人入れてね!"
FOR I=1 TO NUMBER
PRINT I;"人目いきまーす。"
INPUT PROMPT "身長は? ":HEIGHT(I)
INPUT PROMPT "体重は? ":WEIGHT(I)
NEXT I
PRINT "身長170cm以上の人の人数と体重の平均を求めます。"
LET HNUM=0 !身長170cm以上の人の人数
LET WSUM=0 !体重の合計
FOR I=1 TO NUMBER
IF HEIGHT(I)>=170 THEN !身長170cm以上なら
LET HNUM=HNUM+1 !人数を加算
LET WSUM=WSUM+WEIGHT(I) !体重を加算
END IF
NEXT I
LET WAVG=WSUM/HNUM !体重の平均
PRINT "身長170cm以上の人は";HNUM;"人です。"
PRINT "その人たちの体重の平均は";WAVG;"kgです。"
0011デフォルトの名無しさん
NGNGPRINT "体重68kg未満の人の人数と身長の平均を求めます。"
LET WNUM=0 !体重68kg未満の人の人数
LET HSUM=0 !身長の合計
FOR I=1 TO NUMBER
IF WEIGHT(I)<68 THEN !体重68kg未満なら
LET WNUM=WNUM+1 !人数を加算
LET HSUM=HSUM+HEIGHT(I) !身長を加算
END IF
NEXT I
LET HAVG=HSUM/WNUM !身長の平均
PRINT "体重68kg未満の人は";WNUM;"人です。"
PRINT "その人たちの身長の平均は";HAVG;"cmです。"
END
0012デフォルトの名無しさん
NGNG0013デフォルトの名無しさん
NGNG>(ただし、170.0cmの人を1人入れよ)
要求定義不能。
0014デフォルトの名無しさん
NGNGこれ、何BASIC?
!以降はコメントなんだよね。
0015音楽好き中学生
NGNG解説もついててホントに分かりやすいです。
しかし、身長は入力式じゃなくて、最初に10人分任意で設定しておいて、READ で読み込む方法なのですが、できますか?
説明不足でホントに申し訳ありません。
0016デフォルトの名無しさん
NGNG(仮称)十進BASIC
http://www.vector.co.jp/vpack/browse/pickup/pw3/pw003203.html
0017デフォルトの名無しさん
NGNG身長と体重の入力部分を↓こんな風に変えればいいじゃん。
REM 10人の身長と体重を測定する。(身長は小数点第1位まで表記)
REM (ただし、170.0cmの人を1人入れよ)
REM 身長データ
DATA 170.0,150.0,160.0,169.9,170.5,180.6,190.5,200.6,300.9,400.5
READ HEIGHT(1),HEIGHT(2),HEIGHT(3),HEIGHT(4),HEIGHT(5)...(ry
REM 体重データ
(ry
あるいは
REM 1人目
DATA 170.0,69
READ HEIGHT(1), WEIGHT(1)
REM 2人目
(ry
HEIGHT,WEIGHTはもっと短い変数でもいいかもね。
あと、配列の基数がデフォルトで1でない環境では
DIM HEIGHT(1 TO 10) みたいに宣言するか、
FOR I=1 TO NUMBER-1 みたいにしなきゃいけません。
0018デフォルトの名無しさん
NGNG>あと、配列の基数がデフォルトで1でない環境では
>DIM HEIGHT(1 TO 10) みたいに宣言するか、
>FOR I=1 TO NUMBER-1 みたいにしなきゃいけません。
訂正。
配列の基数がデフォルトで1でない環境では
(1) DIM HEIGHT(1 TO 10) みたいに宣言するか、
(2) OPTION BASE 1 と宣言するか、
(3) プログラム中の1で始まっている部分をすべて0に
しなきゃいけません。
例: FOR I=1 TO NUMBER → FOR I=0 TO NUMBER-1
HEIGHT(1) → HEIGHT(0), HEIGHT(10) → HEIGHT(9) 等
0019デフォルトの名無しさん
NGNGDIM HEIGHT(NUMBER) !身長を格納する配列
DIM WEIGHT(NUMBER) !体重を格納する配列
REM 10人の身長と体重を測定する。(身長は小数点第1位まで表記)
REM (ただし、170.0cmの人を1人入れよ)
REM 身長データ
DATA 170.0,150.0,160.0,169.9,170.5,180.6,190.5,200.6,300.9,400.5
READ HEIGHT(1),HEIGHT(2),HEIGHT(3),HEIGHT(4),HEIGHT(5),HEIGHT(6),HEIGHT(7),HEIGHT(8),HEIGHT(9),HEIGHT(10)
REM 体重データ
DATA 10,20,30,40,50,60,70,80,90,100
READ WEIGHT(1),WEIGHT(2),WEIGHT(3),WEIGHT(4),WEIGHT(5),WEIGHT(6),WEIGHT(7),WEIGHT(8),WEIGHT(9),WEIGHT(10)
としたら
身長170cm以上の人の人数と体重の平均を求めます。
身長170cm以上の人は 7 人です。
その人たちの体重の平均は 65.7142857142857 kgです。
体重68kg未満の人の人数と身長の平均を求めます。
体重68kg未満の人は 6 人です。
その人たちの身長の平均は 166.833333333333 cmです。
となりました。宿題じゃなかったら小数点以下を切りつめたいところ。
> LET WAVG=WSUM/HNUM !体重の平均
→ LET WAVG=ROUND(WSUM/HNUM,2) !体重の平均
> LET HAVG=HSUM/WNUM !身長の平均
→ LET HAVG=ROUND(HSUM/WNUM,2) !身長の平均
とかね。
00201
NGNG0021音楽好き中学生
NGNG皆さん本当にありがとうございました。
皆さんすごいですね。
僕も、皆さんみたいに頭がよくなりたいです。
0022デフォルトの名無しさん
NGNG体重68kg未満の人が0人だったら
> LET HAVG=HSUM/WNUM !身長の平均
のところで 0 で除算したとかいうエラーが出ないか?
試していないが。
0023デフォルトの名無しさん
NGNGあとから問題の条件増やすな。
回答者に迷惑かけることになる。
>>21
みんな親切な人でよかったな。
0024デフォルトの名無しさん
NGNGこれからまぁ精進しなされ。
0025デフォルトの名無しさん
NGNGMMRが乗っ取ってもいいんですね?
0026デフォルトの名無しさん
NGNG0027デフォルトの名無しさん
NGNG,.ィ , - 、._ 、
. ,イ/ l/  ̄ ̄`ヽ!__
ト/ |' { `ヽ. ,ヘ
N│ ヽ. ` ヽ /ヽ / ∨
N.ヽ.ヽ、 , } l\/ `′
. ヽヽ.\ ,.ィイハ | _|
ヾニー __ _ -=_彡ソノ u_\ヽ、 | \ MMRはワクチンじゃなくて
.  ゙̄r=<‐モミ、ニr;==ェ;ュ<_ゞ-=7´ヽ > マガジンで連載されていた漫画の名前だ!
. l  ̄リーh ` ー‐‐' l‐''´冫)'./ ∠__ このAAは事実を元にしたフィクションです!
゙iー- イ'__ ヽ、..___ノ トr‐' /
l `___,.、 u ./│ /_
. ヽ. }z‐r--| / ト, | ,、
>、`ー-- ' ./ / |ヽ l/ ヽ ,ヘ
_,./| ヽ`ー--‐ _´.. ‐''´ ./ \、 \/ ヽ/
-‐ '''"  ̄ / :| ,ゝ=< / | `'''‐- 、.._
/ !./l;';';';';';';\ ./ │ _
_,> '´|l. ミ:ゝ、;';';_/,´\ ./|._ , --、 | i´!⌒!l r:,=i
. | |:.l. /';';';';';|= ヽ/:.| .|l⌒l lニ._ | ゙ー=':| |. L._」 ))
l. |:.:.l./';';';';';';'! /:.:.| i´|.ー‐' | / | |. ! l
. l. |:.:.:.!';';';';';';';'| /:.:.:.:!.|"'|. l' │-==:|. ! ==l ,. -‐;
l |:.:.:.:l;';';';';';';';| /:.:.:.:.:| i=!ー=;: l | l. | | / //
l |:.:.:.:.:l;';';';';';';'|/:.:.:.:.:.:.!│ l l、 :| | } _|,.{:: 7 ))
l |:.:.:.:.:.:l;';';';';'/:.:.:.:.:.:.:.:| |__,.ヽ、__,. ヽ._」 ー=:::レ' ::::::|; 7
. l |:.:.:.:.:.:.l;';';'/:.:.:.:.:.:.:.:.:.|. \:::::\::::: ヽ ::::::!′ :::| .:/
0028デフォルトの名無しさん
NGNGMRSAにでも感染して氏ね。
0029デフォルトの名無しさん
NGNG0〜9までをランダムにとりだす(たとえば3,7,9,1,2,4,5,0,6,8とか列挙させる)
というのがあって、最も能率のいい方法っていうのがどんなだったか
いまだにわからん。うまく組める人いたら教えてください。
すくなくともいちいち0〜9をランダムに候補にあげて、
それがすでに列挙済みかどうか判定して、列挙済みだったら候補をあげなおすって言う
のではないはず。ていうかそうしなくてももっとうまい方法があるっていう問題だった。
003029
NGNG「0〜9までをランダムに、ただし同じ数字が重複しないように全部とりだす」
だなたぶん。
まぁべつに範囲は0〜9じゃなくても100でも1000でもなんでもいいんだろうけど。
0031デフォルトの名無しさん
NGNGでぐぐったらそれらしいのがいくつかあったよー
003229
NGNGググッた
>1. 配列の要素を1〜9でそれぞれ初期化する。
>2. 1〜9の乱数Rを取り出し、R番目と9番目の要素を入れ替える。
>3. 1〜8の乱数Rを取り出し、R番目と8番目の要素を入れ替える。
>4. 1〜7の乱数Rを取り出し、R番目と7番目の要素を入れ替える。
>(中略)
>9. 1〜2の乱数Rを取り出し、R番目と2番目の要素を入れ替える。
こういう方法か・・・
これなら範囲分の回数だけループを繰り返すだけだから
おそらく最も効率がいいっすね。いや、数学的なことはよくわからないですが。
0033デフォルトの名無しさん
NGNGそれやると一様な乱数にならず偏りが出てくる
0034デフォルトの名無しさん
NGNG実験して精度しらべてみたけど均等にできたよ。いちおうCのソース上げとく
(実はCで組んだのこれが初めてなんで、おかしかったらどんどん指摘して欲しい)
//シャッフルの精度を調べるプログラム
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define RANGE 10
#define LOOP 100000
int main()
{
srand( (unsigned)time( NULL ) );
unsigned int i,j,k,r,tmp1;
unsigned int num[RANGE+1];
unsigned long count1[RANGE+1][RANGE+1];
//配列初期化
for (i=0; i<=RANGE; i++)
for (j=0; j<=RANGE; j++)
count1[j][i] = 0;
//ループ
for (j=0; j<LOOP; j++)
{
//1から整列して代入
for (i=1; i<=RANGE; i++)
num[i]=i;
0035続き
NGNGfor (i=RANGE; i>=1; i--)
{
r=(int)(rand() / (double)(RAND_MAX + 1) * i)+1;
tmp1=num[r];
num[r]=num[i];
num[i]=tmp1;
//printf ("r:%2d,num[%2d]:%2d ",r,i,num[i]);
}
//シャッフルのデータの集計
for (i=1; i<=RANGE; i++)
{
count1[i][num[i]]++;
}
}
//最終的なデータの統計表示
printf ("\n");
for (k=1; k<=RANGE; k++)
{
for (i=1; i<=RANGE; i++)
printf ("num[%d]が%dだった回数 : %d\n",k,i,count1[k][i]);
printf("\n");
}
printf("範囲 = 1 〜 %d\n",RANGE);
printf("\n繰り返した回数 = %d\n\n",j);
}
0036デフォルトの名無しさん
NGNG残念だがスレ違いだ
0037デフォルトの名無しさん
NGNGBASICのスレだけどツッコミキボンヌのようなので
・Cの場合コメントは//使わず/*〜*/にした方が吉。
・int main()なんだから最後にreturn 0とか入れましょう。
さて、んじゃVBで実装してみますか。
0038デフォルトの名無しさん
NGNG重々承知してますがもはやBASIC使える環境じゃないんでw
慣れないCでやったってわけです
>>37
勉強になります。thx
0039デフォルトの名無しさん
NGNG○○ソートを少ないステップ数で効率的に行え。といった問題があった。(どのようなソートだったかは覚えていない)
大賞に選ばれたものは(確かCだった)数行のものでしたが、いくらか追っかけてもなぜこれが??でした。
アルゴがわかっていたって、とても自分には作成できないものでした。
上には上がいるものだな。と思った以上に
BASIC、C、アセンブラなどといった言語の優位性などはとてもチープと思いました
0040デフォルトの名無しさん
NGNG正六角形の中心から対角線方向を選んで進むランダム・ウォークを行うプログラムを次の二通りで作成する。
1) サイコロで方向を決め、IF文で各方向に移動距離を計算するプログラム。
2) 最初に6方向の移動距離を計算して配列(DIM)に保存し、利用するプログラム。
0041デフォルトの名無しさん
NGNG移動方向は (1,0) (-1,0) (0,1) (0,-1) (1,1) (-1,-1) の6つだろ。
いちいち移動距離なんて計算すんなよ。
0042デフォルトの名無しさん
NGNG0043デフォルトの名無しさん
NGNG\ |
\|
ーー+ーー
|\
| \
六角家まずぃ。
0044デフォルトの名無しさん
NGNGクイックソートなら、ふつーのBASICには再帰がないので
どうあがいても無理。
0045デフォルトの名無しさん
NGNGクイックソートは再帰使わなくてもループで実装できた希ガス。
コード忘れたけどorz
0046デフォルトの名無しさん
NGNG0047デフォルトの名無しさん
NGNG0048デフォルトの名無しさん
NGNG無限に続く漸化式も一つの式にまとめられるように
全ての再帰もループに置き換えが効くな。
0049デフォルトの名無しさん
NGNGテーラー展開とか?
0050デフォルトの名無しさん
NGNGなんでそんな勉強してるの?
なんでもかんでも手続き型でやってると、
ホスト系馬鹿みたいになっちゃって設計センスまで馬鹿になっちゃうから、
最初っからデータベースでやるべし。
0051デフォルトの名無しさん
NGNG0052デフォルトの名無しさん
NGNG0053デフォルトの名無しさん
NGNG0054デフォルトの名無しさん
NGNG配列を使ってスタックを自前で実装すれば可能。
スタック領域が少ない組み込みで
再帰処理を非再帰バージョンに書き直すのはわりと
ありがちな状況
ちなみにローカル変数が使えるVBとかなら
再帰可能だからふつーに組める。
0055デフォルトの名無しさん
NGNG>>10-11のLETで笑いが止まらねえ。
0056デフォルトの名無しさん
NGNGBASICはJavaより30年進んでんだよ。
0057デフォルトの名無しさん
NGNG0058デフォルトの名無しさん
NGNG0059デフォルトの名無しさん
NGNG……いやまぁそりゃしょぼいけどさ……
0060デフォルトの名無しさん
NGNG0061デフォルトの名無しさん
NGNG懐かしいなぁ〜
クリーンコンピュータってのが売りだったんだよねー
その気になればテープからUNIXEN読み込ませて……てのもありだったのかなw
0062デフォルトの名無しさん
NGNGBASIC で実現したUNIX風のファイル管理ソフトがありましたね。
これこそまさに「BASICでこんなプログラム作れるの?」という
話題にふさわしいネタかも知れない。
昔は目の前にはBASICしか無かったんだから全ての欲望は
BASIC で解決するしかなかったからなぁ……
0063デフォルトの名無しさん
NGNG何を言う。そこでハンドアセンブルの密林に分け入る道もあっただろう。
漏れは入り口で引き返してきたっす´`,、(´∀`)´`,、
懐かしいぜ、Z80ニーモニック表。
0064デフォルトの名無しさん
NGNG0065デフォルトの名無しさん
NGNG( ´д)ヒソ(´д`)ヒソ(д` )
0066デフォルトの名無しさん
NGNGそれで作ったアセンブラで高速化ルーチン作ったよ。
最後はオールアセンブラでアセンブラ。
でもローダーはBASICのDATA文。
懐かしい、なにもかもが、懐かしい。
0067デフォルトの名無しさん
NGNG0068デフォルトの名無しさん
NGNGペンティアムでもOK
問題ない。
0069デフォルトの名無しさん
NGNG0071デフォルトの名無しさん
05/01/30 21:26:49FullBasicで。
0072デフォルトの名無しさん
05/01/30 21:36:28確かN88-BASIC上で動くソースリスト付き書籍があったはず。
0073デフォルトの名無しさん
05/01/30 21:43:350074デフォルトの名無しさん
05/01/30 21:48:270075デフォルトの名無しさん
05/01/30 21:48:59>明日提出で困ってるんですがorz
手遅れです。諦めましょう。
0076デフォルトの名無しさん
05/01/30 22:17:240077デフォルトの名無しさん
05/01/30 23:07:10グラフは最初から指定してあるのかな
どの軸で回転させるのかな〜
0078デフォルトの名無しさん
05/01/30 23:12:03与えた関数の式を積分してX軸を回転軸にして回転させるつもりなんですが…
0079デフォルトの名無しさん
05/01/30 23:19:000080デフォルトの名無しさん
05/01/30 23:26:32後者なら軸からの距離を半径とする薄い円柱の体積を足し合わせるだけなんだが
0081デフォルトの名無しさん
05/01/30 23:30:140082デフォルトの名無しさん
05/01/30 23:53:14なんで出来ないのか?
それが分からない。
ネタ?
0084デフォルトの名無しさん
05/01/31 00:19:10008571
05/01/31 00:20:44INPUT PROMPT "xの係数を正の値で入力してください":a
INPUT PROMPT "xの乗数を入力してください":b
INPUT PROMPT "このグラフの求めたい範囲の始点を入力してください":c
INPUT PROMPT "このグラフの求めたい範囲の終点を入力してください":d
SET WINDOW -(d+1) ,(d+1) ,-(b*50),(b*50)
DRAW GRID (1, 10)
SET LINE COLOR 2
FOR x =-50 TO 50 STEP 0.1
LET y=a*(x)^b
PLOT LINES :x,y;
NEXT x
SET LINE COLOR 1
FOR y =-(50*b) TO (50*b) STEP 0.1
LET x = c
PLOT LINES :x,y;
NEXT y
PLOT LINES
008671
05/01/31 00:21:28SET LINE COLOR 1
FOR y =-(50*b) TO (50*b) STEP 0.1
LET x = d
PLOT LINES :x,y;
NEXT y
PLOT LINES
LET Y0=(a*(c)^b)
LET Y1=(a*(d)^b)
SET AREA COLOR 4
PLOT AREA:c,0;c,Y0;d,y1;d,0
LET S=((a*(d^(b+1)))/(b+1))-((a*(c^(b+1)))/(b+1))
PRINT "この赤い範囲の面積は";S
END
008771
05/01/31 00:22:10008871
05/01/31 00:44:50008971
05/01/31 00:50:360090デフォルトの名無しさん
05/01/31 00:54:11定積分の公式のようですが、回転体の不定積分のやり方忘れちゃいました。
∫π*(a*x^b)^2・dx
=π*a^2*∫x^(2*b)・dx
=π*a^2*x^(2*b+1)/(2*b+1)
こんなんだっけ?
で、xにdとcを入れて引き算かな。
009171
05/01/31 01:46:01009275:80:90
05/01/31 01:59:06FOR x =-50 TO 50 STEP 0.1
LET y=a*(x)^b
PLOT LINES :x,y; ←ここら辺
NEXT x
009371
05/01/31 02:09:48どういうことですか?
009492:75:80:90
05/01/31 02:18:43回転体の表示がしたいと勝手に解釈してました。
y=π*a^2*x^(2*b+1)/(2*b+1)
のグラフを描きたいのでしょうか。
009571
05/01/31 02:22:22回転体の表示もしたいのですが、よく分からないので求めるために回転させる部分を赤く塗りつぶしてました。
それとは別にy=ax^nを積分したもののグラフを表示したかったんです
009671
05/01/31 02:22:52009794:92:75:80:90
05/01/31 02:37:54y=ax^nのグラフは描けているようですので、y=ax^nを積分したy=ax^(n+1)/(n+1)のグラフを表示するのは如何でしょうか。
>>96
PLOT LINESがあるならPLOT CIRCLESとかがありそうなんですけど、FullBasicの描画命令は分かりませんです。
009897:94:92:75:80:90
05/01/31 02:47:24009971
05/01/31 02:52:19そして回転体も書きたいんですが良く分からない感じです
010098:97:94:92:75:80:90
05/01/31 03:07:46>書きたいのはy=ax^(n+1)/(n+1)なんですが何故かうまくいきません
具体的にどうなりますか?
積分すると偶関数と奇関数が入れ替わるのでx<0で積分値が負になったりするのとは違いますよね。
PLOT LINESで楕円風の多角形でも描きますか?
010171
05/01/31 03:48:19今気づいたんですが、範囲を負の数から始めていると面積がちゃんと出ないことに気付きました。
-15から15にすると面積が0に…
0102100:98:97:94:92:75:80:90
05/01/31 03:59:00おめでとう。
010371
05/01/31 04:04:11定義域に負の数が入っていた場合加算にしました
0104デフォルトの名無しさん
05/02/01 01:19:04絶対値ではあかんのですか?
0105デフォルトの名無しさん
05/02/02 23:35:20http://science3.2ch.net/test/read.cgi/infosys/1097162168/
0106デフォルトの名無しさん
05/02/27 00:39:47110 A=A+1
120 INPUT B
130 INPUT C
140 IF B<170 THEN GOTO 150 ELSE GOTO 160
150 D=D+1
160 E=E+1
170 IF C>68 THEN GOTO 180 ELSE GOTO 190
180 DA=DA+1
190 EA=EA+1
200 IF A=10 THEN GOTO 210 ELSE GOTO 110
210 Ave=B/10
220 Ave=C/10
230 PRINT B
240 PRINT C
250 END
0107デフォルトの名無しさん
05/02/27 00:46:27こらまた見事なカルボナーラで。しかも冷めて固まってるよ。
0108デフォルトの名無しさん
05/02/27 10:01:27構造化という考え方が一般的になる前のコードだ。これが普通。
先人のせっかくの教訓が形骸化されたスローガンとなってしまって一辺倒な物の見方しかできなくなってるんですよ。その発言って。
気をつけた方がいいぞ。
0109デフォルトの名無しさん
05/02/27 13:15:26なにこれ?
自演?
0110デフォルトの名無しさん
05/02/27 13:29:290111デフォルトの名無しさん
05/02/27 18:30:26懐かしい
0112デフォルトの名無しさん
05/02/28 16:52:370113デフォルトの名無しさん
05/03/02 23:09:440114デフォルトの名無しさん
05/03/05 12:13:440115デフォルトの名無しさん
05/03/05 18:16:380116デフォルトの名無しさん
05/03/06 16:48:52>(ただし、170.0cmの人を1人入れよ)
この命題の意味がよくわからないな。その条件を除けば、
教科書的には、上のようなものなんだろうが8086系の実践では、かのように単純
ではうまくいかないだろうな。例えば人間の手動計算で0.05になるものがCPU内部では、
0.05未満の数値(0.0499・・・)で扱われるといったようなことが起きることがある。
90 CLEAR
100 DEFINT B,I,J
110 DEFDBL W,A
120 '
130 FOR I=0 TO 9
140 INPUT A(I)'身長
150 INPUT B(I)'体重
160 IF A(I)>=170 THEN
170 IANIN=IANIN+1
180 IB=IB+B(I)
190 ENDIF
200 IF B(I)<68 THEN
210 IBNIN=IBNIN+1
220 WA=WA+A(I)
230 ENDIF
240 NEXT I
250 IBHEI=int(IB/IANIN+.501)'-整数一桁目を桁落ちさせないための丸め処理
260 WAHEI=int((WA/IBNIN+.0501)*10)/10'-少数点一桁目を桁落ちさせないための丸め
270 PRINT "170cm以上の身長の人数、平均体重";IANIN;" ";IBHEI
280 PRINT "68kgs以下の体重の人数、平均身長";IBNIN;" ";WAHEI
(こんなところかな。テストはしてないが。)
0117デフォルトの名無しさん
05/03/06 16:50:080118デフォルトの名無しさん
05/03/08 07:37:140119デフォルトの名無しさん
05/03/08 07:42:300120デフォルトの名無しさん
05/03/08 16:09:54どうゆう書き方すりゃいいの?
1 bload "(ファイル名)":c ←こんな感じ?
さっぱりわからんから誰か教えてー!!!!!
0121デフォルトの名無しさん
05/03/12 06:56:180122デフォルトの名無しさん
05/03/12 11:40:520123デフォルトの名無しさん
05/03/12 22:39:46スレ頭から全部読んだか? とっくに答え出てるぞ。
0124デフォルトの名無しさん
05/03/19 18:30:08ドライブ名はファイル名に入れろ
1 BLOAD "C:TEKITO.BAS"
こんな感じで。
0125デフォルトの名無しさん
05/03/20 22:29:05110 A=A+1
120 INPUT B
130 INPUT C
140 IF B<170 THEN GOTO 150 ELSE GOTO 160
150 D=D+1
160 E=E+1
170 IF C>68 THEN GOTO 180 ELSE GOTO 190
180 DA=DA+1
190 EA=EA+1
200 IF A=10 THEN GOTO 210 ELSE GOTO 110
210 Ave=B/10
220 Ave=C/10
230 PRINT B
240 PRINT C
250 END
0126デフォルトの名無しさん
05/03/20 23:08:23何に使われているのか教えてくれなさい
' てか、変数にまず0入れてないと気持ち悪く感じるってのはC系の言語に染まっちまったなぁ
' MSX-BASICに取り組んでいたあの日が懐かすぃ
0127デフォルトの名無しさん
2005/03/21(月) 07:23:07そういった演算子、関数類があったとしても、要求されている平均身長(小数点1桁)と
平均体重(整数)の精度は違うから、同じ計算式というのはおかしいと思うが。
平均身長に関してだけ言えば、>>125の210行、220行は、Aveが使われた変数を精度は小数点2桁以上
で計算して小数点1桁に丸めて代入するという演算子、関数の類でなければ意味がないだろ。
0128デフォルトの名無しさん
2005/03/22(火) 18:23:49>(ただし、170.0cmの人を1人入れよ)
この条件を省いた
10 FOR I=1 TO 10
15 PRINT I;"番目"
20 INPUT"身長=";HEI
30 INPUT"体重="; WEI
40 IF HEI>=170 THEN HEIP=HEIP+1:HEIT=HEIT+HEI
50 IF WEI<68 THEN WEIP=WEIP+1:WEIT=WEIT+WEI
60 NEXT I
70 PRINT"身長170cm以上の人数…";HEIP
80 IF HEIP>0 THEN PRINT USING"平均…####.#";HEIT/HEIP
90 PRINT
100 PRINT"体重68kg未満の人数…";WEIP
110 IF WEIP>0 THEN PRINT USING"平均…####.#";WEIT/WEIP
120 END
言語は99BASIC。
まあ、PRINT USING命令を使う奥の手があるということだな>小数点1桁以内で表記
ちなみに条件に当てはまる人が居ない場合は平均値は表示されない
0129デフォルトの名無しさん
2005/03/22(火) 18:32:3510 FOR I=1 TO 10
15 PRINT I;"番目"
20 INPUT"身長=";HEI
30 INPUT"体重="; WEI
40 IF HEI>=170 THEN HEIP=HEIP+1:HEIT=HEIT+HEI
50 IF WEI<68 THEN WEIP=WEIP+1:WEIT=WEIT+WEI
60 NEXT I
70 PRINT"身長170cm以上の人数…";HEIP
80 IF HEIP>0 THEN HEIA=HEIT/HEIP:HEIA=INT(HEIA*10):HEIA=HEIA/10:PRINT"平均…";HEIA
90 PRINT
100 PRINT"体重68kg未満の人数…";WEIP
110 IF WEIP>0 THEN WEIA=WEIT/WEIP:WEIA=INT(WEIA*10):WEIA=WEIA/10:PRINT"平均…";WEIA
120 END
小数点1桁表記には「カップ麺式」という独自の計算方法を使っている。
0130デフォルトの名無しさん
2005/03/28(月) 17:19:56REM のほうがメモリ上では短いのに驚き。
” でも、1画面プログラムでは ’こっち使うのだな; ”
REM ( A$=" ” にしないとエラーがでるかな? )
0131デフォルトの名無しさん
2005/05/04(水) 09:24:16その「カップ麺式」は漏れもExcelで多用してる。
小数点第1位までしか使用しない物も多いから。
0132AMI
2005/05/09(月) 08:44:23現在、N88-BASICでプログラムをくんでいるのですが、
「ブレーク信号」ってBASIC上で送信できるんですか?
VBでもやり方がわかれば、BASICに移植するのは簡単とはおもいますが・・・
ちなみに、いろいろしらべたのですが、ブレーク信号の定義が「1バイト長以上の長い時間、Loの状態が続く信号です」
とあったので、NUL(CHR$(0))をたくさん送信したのですが、反応無し、
[0]を多く送信しても反応無しという状態です。
またはこれはソフト上では作成不可能なのでしょうか?
ご教授お願いします。
構成的にDOS/VパソコンとFAの制御機器とのRS-232Cの通信です。
ちなみに下は、VB質問板でのやりとりを記載しておきます。
>>725、>>726、>>727、>>728、>>744、>>747、>>748、>>753、>>756
0133AMI
2005/05/09(月) 08:46:31すみません、リンク先がちがってましたので、
「http://pc8.2ch.net/test/read.cgi/tech/1112414085/l50」
ここのアドレスの、>>725
726
727
728
744
747
748
753
756
758
759
760
761
764
です。
0134デフォルトの名無しさん
2005/05/09(月) 20:26:18DOS/V で N88-BASIC? PC-9801じゃないの?
http://pc8.2ch.net/test/read.cgi/tech/1112414085/759
で示されている資料
ttp://www.webtech.co.jp/company/doc/undocumented_mem/io_rs.txt
からすると
1000 ' PC-9801 ノーマルモード用
1010 OUT &H32, &H2F :' (0010 1111b) ブレーク送信
1020 ' (適当なウエイト)
1030 OUT &H32, &H27 :' (0010 0111b) ブレーク解除
同じポートのbit5, bit1でRTS, DTRのon/offもやってるようなので
ハードウェアフロー制御を使ってる場合は適時修正して下さい。
DOS/Vの場合は
ttp://hp.vector.co.jp/authors/VA000981/dos-tech/8250-send-break.html
の例をそのままBASICにすると
1000 ' DOS/V (8250,16650A) 用
1010 TMP = INP(&H03FB)
1020 OUT &H03FB, TMP + &H40 :' (or 0100 0000b) ブレーク送信
1030 ' (適当なウエイト)
1040 OUT &H03FB, TMP ': ブレーク解除
0135デフォルトの名無しさん
2005/05/14(土) 11:34:35EVAL()とは、数式文字列を計算できる関数です。
0136デフォルトの名無しさん
2005/05/14(土) 13:00:58無理矢理つくるとこんな感じ。
100 INPUT "数式を入力して下さい:"; F$
110 GOSUB *EVAL
120 PRINT "答えは "; X
130 END
140 '
150 *EVAL
160 OPEN "dmy.bas" FOR OUTPUT AS #1
170 PRINT #1, "1000 X = "; F$
180 PRINT #1, "1020 GOTO *ENDEVAL"
190 CLOSE #1
200 CHAIN MERGE "dmy.bas", 1000, ALL
210 *ENDEVAL
220 RETURN
0137デフォルトの名無しさん
2005/05/16(月) 00:55:16C(n,r)=C(n-1,r)+C(n-1,r-1)
を使って2項係数を計算するプログラムはどうやって作ったらよいでしょうか?
教えてください。
0138デフォルトの名無しさん
2005/05/16(月) 01:19:51ttp://www.google.co.jp/search?q=%E5%AE%BF%E9%A1%8C%E3%81%AF%E8%87%AA%E5%88%86%E3%81%A7%E3%82%84%E3%82%8A%E3%81%AA%E3%81%95%E3%81%84
0139デフォルトの名無しさん
2005/05/16(月) 09:49:42っまおれはわからんけどな
0140デフォルトの名無しさん
2005/05/16(月) 10:50:52IF文の途中でctrl+J打ち込んで、擬似ブロックIFとかやってたな。
0141デフォルトの名無しさん
2005/05/16(月) 19:16:110142デフォルトの名無しさん
2005/05/16(月) 22:51:370143デフォルトの名無しさん
2005/05/16(月) 22:57:44ぐぐってみたんだが、おぢさんもう年で「2項係数」の定義が分からん。
教えてくれんかの。
0144デフォルトの名無しさん
2005/05/17(火) 09:11:560145デフォルトの名無しさん
2005/06/21(火) 00:07:46例えばN=3だったら
123
132
213
231
312
321
の六通り
これって、BASICでできるんですか?
0146デフォルトの名無しさん
2005/06/21(火) 00:09:320148デフォルトの名無しさん
2005/06/21(火) 12:41:0110 INPUT "N(2~)=";N
20 B=N
30 FOR I=N-1 TO 1 STEP -1
40 B=B*I
50 NEXT
60 PRINT B;"通り"
0149デフォルトの名無しさん
2005/06/21(火) 20:12:3420 INPUT N: A$=CHR$(10)+CHR$(13)
30 FOR K=1 TO N
40 ZA$=A$: ZN=K: GOSUB 500: A$=ZA$
50 NEXT K
60 LPRINT A$
500 REM
510 ZB$=""
520 FOR ZK=0 TO LEN(ZA$) STEP ZN+2: ZT$=MID$(ZA$, ZK, ZN)
530 FOR ZI=1 TO N: ZD$=RIGHT$(STR$(ZI), 1)
540 IF NOT INSTR(ZT$, ZD$) THEN ZB$=ZB$+ZD$+ZT$+CHR$(10)+CHR$(13)
550 NEXT ZI
560 NEXT ZK
570 RETURN
テストしてないけど多分こんな感じで?
0150デフォルトの名無しさん
2005/06/21(火) 23:30:2120 INPUT N: A$=CHR$(10)+CHR$(13)
30 FOR K=1 TO N
40 ZA$=A$: ZN=K: GOSUB 500: A$=ZA$
50 NEXT K
60 LPRINT A$
70 END
500 REM
510 ZB$=""
520 FOR ZK=0 TO LEN(ZA$) STEP ZN+2: ZT$=MID$(ZA$, ZK, ZN)
530 FOR ZI=1 TO N: ZD$=RIGHT$(STR$(ZI), 1)
540 IF NOT INSTR(ZT$, ZD$) THEN ZB$=ZB$+ZD$+ZT$+CHR$(10)+CHR$(13)
550 NEXT ZI
560 NEXT ZK
570 RETURN
ENDを忘れてたORZ
0151デフォルトの名無しさん
2005/07/15(金) 21:11:08遅れました。サンクス。
確かにBASICの持っているものを生かすには、これですよね。
0152デフォルトの名無しさん
2005/07/19(火) 15:22:4010 DEFINT A-Z
20 INPUT N: A$=CHR$(10)+CHR$(13)
30 FOR K=1 TO N
40 ZA$=A$: ZN=K: GOSUB 500: A$=ZB$
50 NEXT K
60 LPRINT A$
70 END
500 REM
510 ZB$=""
520 FOR ZK=0 TO LEN(ZA$) STEP ZN+2: ZT$=MID$(ZA$, ZK, ZN)
530 FOR ZI=1 TO N: ZD$=RIGHT$(STR$(ZI), 1)
540 IF NOT INSTR(ZT$, ZD$) THEN ZB$=ZB$+ZD$+ZT$+CHR$(10)+CHR$(13)
550 NEXT ZI
560 NEXT ZK
570 RETURN
0153やさいさん
2005/08/06(土) 17:34:300154デフォルトの名無しさん
2005/08/07(日) 20:45:30Adobe Photoshop
0155デフォルトの名無しさん
2005/08/13(土) 10:48:27Routine Worker
http://www.vector.co.jp/magazine/softnews/030716/n0307162.html
これを使って、ゲームをしたいのです!!!
画面の色が変わると、テンキーボタンを押す
(HP・MPが減ったら回復する) と言うような
感じを作りたいのですが、BASIC全然分かりません。。。。
どなたか、こんなアフォなお願いを叶えてくれる人いませんかぁぁ?
このスレにたどり着くまでに2日も掛かりました・・・・・・・
どうか、どぉっぉぉうか 教えてください!!!!!
メッセ連絡 [email protected]
0156デフォルトの名無しさん
2005/08/13(土) 11:02:44> プログラミングの経験がまったくない人にとっては、レコーディング
> 機能もなくエディタで直接ソースを書かなければならないのは、
> かなり敷居が高く感じられるのではないかと思う。
> ヘルプも文法解説書という趣で、プログラミングの手引きをしてくれる
> わけではない。
>
> そういうわけで、単純にステップを実行するだけのマクロユーティリティでは
> 飽き足らなくなった上級者向けのソフトといった位置づけがふさわしいのでは
> ないかと思う。
正直やめとけ
0157デフォルトの名無しさん
2005/08/13(土) 12:51:14http://pc8.2ch.net/test/read.cgi/tech/1053157149/
に書いただけなんです。。。。で BASICと言うのでカキコしました。。。
やっぱ難しいんですかねぇ??
ここに居る人なら分かると思ったのですが・・・・・
0158デフォルトの名無しさん
2005/08/13(土) 13:11:59基本的にはこの板にいるような人ならできるだろ
だが自分ができることと、それを人に教えるのとは大違い
しかもスレ違い
「ちょっと作ってみせてくれ」なら暇な奴が乗ってくれると思うが
「日本人のペンフレンドにラブレターを書きたいんだけど
俺は日本語は全然知らないんだ。教えてくれ。」
って言われたら、おまいも「正直やめとけ」って答えるだろ?
0159デフォルトの名無しさん
2005/08/13(土) 13:33:23なるほどです。
たしかに、「正直やめとけ」と言いますが、
「ちょっと作ってみせてくれ」 いや ”ちょっと作って下さい”
なのです。。。。
使うゲームは限定してますし、やろうとしてることも明確なので
ちょっと相談に乗ってくれる人がいたらお願いします。。。
動作確認が取れるものでしたら、
多少の謝礼もお支払いします。。。(2万位が限界ですが・・・・)
そんな訳で メッセ連絡 [email protected] を記載してます。。。。
スレ違いの事ですが、どこに書いていいのかもわからなかったもので
すいません。
どうか宜しくお願い致します。。。。。。。
0160デフォルトの名無しさん
2005/08/25(木) 17:03:44これでもだめだったら、馬鹿以下です。
0161BASIC
2005/11/23(水) 20:30:00プログラムを作成しなさい。0を入力した場合に終了
0162デフォルトの名無しさん
2005/11/23(水) 22:15:430163BASIC
2005/11/24(木) 11:39:52ある。氏名を入力すると、住所と電話番号が表示されるプログラムをBASICで作成
しなさい
0164デフォルトの名無しさん
2005/11/24(木) 18:33:040165デフォルトの名無しさん
2005/11/24(木) 18:44:160166デフォルトの名無しさん
2005/11/24(木) 19:01:030167デフォルトの名無しさん
2005/11/26(土) 20:53:59Beginner's All-purpose Symbolic Instruction Codeの略。
つまり、初心者向けのプログラミング言語。
「基本的な」という意味の英語のBasicとは違う。
0168デフォルトの名無しさん
2005/11/27(日) 08:08:450169BASIC
2005/12/05(月) 15:52:36ある。これを用いて次のプログラムをBASICで作成しなさい
1、最も体重の軽い人の名前を表示する
2、身長が160CM以上で170cm未満の人の名前を表示する
3、体重が60kg以上で、身長が150cm未満の人の名前を表示する
4、年齢が30歳以下の人の、体重と身長の平均値を計算し表示する
0170デフォルトの名無しさん
2005/12/05(月) 23:33:24良かったんだっけ?
0171デフォルトの名無しさん
2005/12/06(火) 00:49:14だったと思う。少なくともMSX-BASICでは。
ではピーギョロギョロ
0172デフォルトの名無しさん
2005/12/06(火) 04:43:28エラー出るのか忘れたが。
0173デフォルトの名無しさん
2005/12/06(火) 05:36:42>>169 のデータ処理するプログラムを行番号 1 のみの一行で書いて merge で
結合させながら動くとすると、どういう動作になるの?
1. merge コマンドを実行した途端エラーになる(回答不能)
2. 行番号被ってもその行の実行が終るまで実行できる(なんとか実行可能)
3. 被っている行だけ merge されない(工夫しても無理?)
機種限定だったら、例えばロードして処理するプログラムをマシン語として
メモリに書き込んで呼び出すようにすればいいのかなぁ……
>>169 は無理臭い
0174デフォルトの名無しさん
2005/12/06(火) 06:56:361000以降とか10000以降とかが無難だったかな…
0175デフォルトの名無しさん
2005/12/06(火) 18:27:321000 N=10
1010 DATA "A",60,180,20
1020 DATA "B",38,128,11
・・・
B.BAS
1000 CHAIN MERGE "A.BAS"
2010 WA=0:HA=0:M=0:MW=1E10
2020 FOR I=1 TO N: READ NA$,W,H,A
2030 IF W < MW THEN MW=W:MNA$=NA$
2040 IF H>=160 AND H<170 THEN PRINT "身長160cm以上170cm未満:"; NA$
2050 IF W>=60 AND H<150 THEN PRINT "体重60kg以上、身長150cm未満:"; NA$
2060 IF A<=30 THEN WA=WA+W: HA=HA+H: M=M+1
2070 NEXT
2080 PRINT "体重が最も軽い:"; MNA$
2090 IF M<>0 THEN PRINT "30歳以下の平均体重、身長:"; WA/M, HA/M
0176デフォルトの名無しさん
2005/12/06(火) 22:22:060177デフォルトの名無しさん
2005/12/06(火) 23:26:160178デフォルトの名無しさん
2005/12/07(水) 00:15:230179デフォルトの名無しさん
2005/12/07(水) 13:00:410180BASIC
2005/12/14(水) 15:47:22指数 = 体重 ÷((身長−100)×0.9)
指数が0.9未満ならば 「評価欄」に「やせすぎ」と表示
0.9以上0.95未満ならば 〃 「やせ気味」 〃
0.95以上1.05未満ならば 〃 「標準」 〃
1.05以上1.15未満ならば 〃 「太り気味」 〃
1.15以上ならば 〃 「太りすぎ」 〃
0181デフォルトの名無しさん
2005/12/14(水) 18:34:060182デフォルトの名無しさん
2005/12/14(水) 19:02:1420 input nani%;
30 on nani% goto 100, 200
40 print "じゃあ、指数を生で入力して下さい"
50 goto 100
あ、評価欄への表示の仕方がわからないや。
メモリの実番地だったりしてね。オブジェクトにメッセージを送るわけには
いかんよなぁ……
0183デフォルトの名無しさん
2005/12/16(金) 02:34:04身長が丁度 100.0 の時のエラー処理を入れてやった方が
いいかもしれん。
0184BASIC
2006/01/26(木) 15:57:23ある。
氏名を入力すると、住所と電話番号が表示されるプログラムをBASICで作成
しなさい
期日が迫っているので、だれか早くこたえてくれ!!
0185デフォルトの名無しさん
2006/01/26(木) 16:50:12read文で配列に読み込んで、
入力された氏名と一致するかどうかforでまわしてチェックして
一致したら表示
0186デフォルトの名無しさん
2006/01/29(日) 02:58:380187デフォルトの名無しさん
2006/02/03(金) 02:21:590188デフォルトの名無しさん
2006/03/01(水) 20:38:390189デフォルトの名無しさん
2006/04/15(土) 02:10:53ウイルスもどきを作ってクラス中にバラ撒いた事あるよ
0190デフォルトの名無しさん
2006/04/17(月) 04:23:27通報しませんですた。
0191デフォルトの名無しさん
2006/05/06(土) 07:25:380192デフォルトの名無しさん
2006/05/07(日) 15:42:370193デフォルトの名無しさん
2006/05/07(日) 16:43:13VBScriptワームならどっかに転がってるだろ
0194デフォルトの名無しさん
2006/05/10(水) 02:15:150195デフォルトの名無しさん
2006/05/10(水) 02:17:42ttp://www.ysr.net.it-chiba.ac.jp/~yashiro/sosu/
0196デフォルトの名無しさん
2006/05/10(水) 02:38:35十進BASICで書くときはどうすればいいのでしょうかorz
0197sage
2006/05/10(水) 18:27:35認識しませんし。
0198デフォルトの名無しさん
2006/05/10(水) 19:42:51まあ、俺基準では5より少なければ少数だな。
0199デフォルトの名無しさん
2006/05/10(水) 22:49:56REM エラトステネスの篩
DECLARE NUMERIC i, j, total
DIM prm(2 TO 4096)
MAT prm = CON
FOR i=2 TO INT(SQR(4096))
IF prm(i) <> 0 THEN
FOR j=i*2 TO 4096 STEP i
LET prm(j) = 0
NEXT J
END IF
NEXT I
LET total = 0
FOR i=2 TO 4096
IF prm(i) <> 0 THEN
PRINT i
LET total = total + i
END IF
NEXT I
PRINT total
END
>>197
10進の小数
"0.1" → 10^-1 = 1/10 = 0.1
"0.01" → 10^-2 = 1/100 = 0.01
"0.001" → 10^-3 = 1/1000 = 0.001
2進の小数
"0.1" → 2^-1 = 1/2 = 0.5
"0.01" → 2^-2 = 1/4 = 0.25
"0.001" → 2^-3 = 1/8 = 0.125
0200デフォルトの名無しさん
2006/05/11(木) 00:55:50ありがとうございました!!!
0201デフォルトの名無しさん
2006/05/16(火) 23:31:32FOR i=1 TO x
LET p=p+1/i
NEXT i
PRINT p
END
これでp>6とはじめてなるときのxを出すときは
どうすればいいんでしょうか?
0202デフォルトの名無しさん
2006/05/17(水) 04:53:18LET answer = -1
FOR i = 1 TO x
LET i = i + 1 / i
IF p > 6 THEN LET answer = x
NEXT
PRINT p
IF answer <> -1 THEN PRINT answer ELSE PRINT "ありません"
END
また、最終的な合計を求めて PRINT p をする必要が無ければ
IF p > 6 の時点でループを抜けても良い。
0203デフォルトの名無しさん
2006/05/17(水) 10:12:370204デフォルトの名無しさん
2006/05/17(水) 14:14:050205デフォルトの名無しさん
2006/05/18(木) 09:52:170206デフォルトの名無しさん
2006/05/24(水) 11:32:08Hn=1/1+1/2+・・・+1/n
で、Hnから分母に1が現れるものを除いた和Inがあるとき、
I100を求めるにはどう書いたらいいのでしょう。
0207デフォルトの名無しさん
2006/05/25(木) 10:45:34変数用意して、ループで足していけ。
0208工房
2006/10/29(日) 18:50:33SWITCH〜CASEの使い方キボンヌ
0209デフォルトの名無しさん
2006/10/30(月) 02:52:100210デフォルトの名無しさん
2006/10/30(月) 03:01:270211デフォルトの名無しさん
2006/10/30(月) 03:46:100212デフォルトの名無しさん
2007/01/18(木) 15:15:44LIBRARY "csgraphics"
DIM update(0 TO 511),cell(50,50)
CALL setrule(update(),L)
LET flag$ = ""
DO
CALL initial(cell(,),update(),L)
DO
CALL iterate(cell(,),update(),L)
IF key INPUT THEN
GET key k
IF (k = ORD("s")) OR (k = ORD("S")) THEN
LET flag$ = "stop"
END IF
END IF
LOOP UNTIL k <> 0
LET k = 0
LOOP UNTIL flag$ = "stop"
END
0213デフォルトの名無しさん
2007/01/18(木) 15:16:42FOR i = 0 TO 511
LET update(i) = 0
NEXT i
FOR nn1 = 0 TO 5
FOR nn2 = nn1+1 TO 7
FOR nn3 = nn2+1 TO 7
LET index = 2^nn1 + 2^nn2 + 2^nn3
LET update(index) = 1
LET update(index+256) = 1
NEXT nn3
NEXT nn2
NEXT nn1
FOR nn1 = 0 TO 6
FOR nn2 = nn1+1 TO 7
LET index = 256 + 2^nn1 + 2^nn2
LET update(index) = 1
NEXT nn2
NEXT nn1
SET BACKGROUND COLOR "black"
SET COLOR "white"
INPUT PROMPT "lattice size = ": L
CALL compute_aspect_ratio(L,xwin,ywin)
SET WINDOW -0.2*xwin,1.2*xwin,-0.2*ywin,1.2*ywin
END SUB
0214デフォルトの名無しさん
2007/01/18(木) 15:17:49FOR i = 1 TO L
FOR j = 1 TO L
LET cell(i,j) = 0
SET COLOR "yellow"
BOX AREA i,i+1,j,j+1
SET COLOR "black"
BOX LINES i,i+1,j,j+1
NEXT j
NEXT i
SET CURSOR 1,1
SET COLOR "white"
PRINT "click to cell to toggle or outside of lattice to continue."
DO
GET POINT x,y
IF x > 1 AND x < L AND y > 1 AND y < L THEN
LET i = TRUNCATE(x,0)
LET j = TRUNCATE(y,0)
IF cell(i,j) = 0 THEN
SET COLOR "black"
BOX AREA i,i+1,j,j+1
LET cell(i,j) = 1
ELSE
SET COLOR "yellow"
BOX AREA i,i+1,j,j+1
LET cell(i,j) = 0
SET COLOR "black"
BOX LINES i,i+1,j,j+1
END IF
0215デフォルトの名無しさん
2007/01/18(木) 15:18:39LOOP UNTIL x < 1 OR x > L OR y < 1 OR y > L
SET CURSOR 1,1
SET COLOR "white"
PRINT "Hit and key for new lattice, 's' to stop";
PRINT " "
END SUB
SUB iterate(cell(,),update(),L)
DIM cellnew(50,50)
FOR i = 1 TO L
FOR j= 1 TO L
CALL neighborhood(cell(,),i,j,sum,L)
LET cellnew(i,j) = update(sum)
IF cell(i,j) = 1 AND cellnew(i,j) = 0 THEN
SET COLOR "yellow"
BOX AREA i,i+1,j,j+1
SET COLOR "black"
BOX LINES i,i+1,j,j+1
ELSE IF cell(i,j) = 0 AND cellnew(i,j) = 1 THEN
SET COLOR "black"
BOX AREA i,i+1,j,j+1
END IF
NEXT j
NEXT i
MAT cell = cellnew
END SUB
0216デフォルトの名無しさん
2007/01/18(木) 15:19:25LET IP = j + 1
LET im = j - 1
LET jp = j + 1
LET jm = j - 1
IF i = 1 THEN
LET im = L
ELSE IF i = L THEN
LET IP = 1
END IF
IF j = 1 THEN
LET jm = L
ELSE IF j = L THEN
LET jp = 1
END IF
LET sum = cell(i,jp) + 2*cell(i,jm) + 4*cell(im,j)
LET sum = sum + 8*cell(IP,j) + 16*cell(IP,jp) + 32*cell(IP,jm)
LET sum = sum + 64*cell(im,jp) + 128*cell(im,jm) + 256*cell(i,j)
END SUB
このTrue Basicでのプログラムを十進Basicでかけますか?
0217デフォルトの名無しさん
2007/02/12(月) 16:34:48N88のときはINPでできたし、99BASICならできるんだけど。
BASIC/98でできない。
■ このスレッドは過去ログ倉庫に格納されています