第6話 問題点と、式の切り離しと、将来
加減剰余算ができる計算魔法を作りたいな。
まず最初の問題は。
『1+2×3』という計算があったとする。
端から計算したのでは答えが違う。
掛け算を最初に計算しなければいけない。
次の難問は。
『2×-4』という式。
みて分かると思うけど、『×-』と記号が連続して続いている。
『
この二つが難問。
プログラムを考えるうえで注意点は、いっぺんに物事をしないこと。
二つの難問を同時に考えるとややこしくなる。
その前に数式を切り分けるところから始めるべきね。
『char str[1024];』という定義があって、これに数式が入っているとする。
例えば『1+2+3-4*5+6/7』みたいなのがね。
これを記号と数字に切り離すプログラムはこうかな。
char str[2048];
int i,j,item[100]; /*カウンターと項目*/
scanf("%s",str); /*式を入力*/
for(j=0;j<100;j++){
item[j]=0; /*項目の初期化*/
}
j=0; /*カウンターの初期化*/
i=0; /*カウンターの初期化*/
while(i<strlen(str)){ /*式の終わりまでループ*/
if(str[i]>='0' && str[i]<='9'){ /*数字かどうか判別*/
while(str[i]>='0' && str[i]<='9') /*数字の間だけループ*/
item[j]=item[j]*10+str[i]-'0'; /*桁を一つ繰り上げ、数字を一桁付け加える*/
if(item[j]>=999999990) return(-1); /*エラー終了*/
i++;
}
j++;
}
else{
switch(str[i]){
case'+': /*+の処理*/
item[j]=999999991;
j++;
i++;
break;
case'-': /*-の処理*/
item[j]=999999992;
j++;
i++;
break;
case'*': /*×の処理*/
item[j]=999999993;
j++;
i++;
break;
case'/': /*÷の処理*/
item[j]=999999994;
j++;
i++;
break;
default: /*ここはエラー*/
return(-1); /*エラー終了*/
break;
}
}
}
切り離しのプログラムはこんな所で良いと思う。
「ニーナ、石碑の所にいないから心配したよ」
お客さんを待つ間にプログラムしてたけど、熱中し過ぎて時間の経つのを忘れていたみたい。
ビュートが呼びに来た。
「お母さん、休憩に行って来る」
「はいよ」
私が声を奥に掛けると返事があった。
ビュートと連れだって石碑の所に行く。
「ほらよ」
石碑に着くと、ビュートは真っ赤に熟れた野菜のトップルを投げてきた。
それを慌てて受け取る。
もう乱暴ね。
何でも投げるんだから。
お父さんも床に邪魔な物があると足でどかしたりする。
男の子らしいといえばそうだけど、行儀よくしてほしいなと思わないでもない。
ハンカチでトップルを磨いてかぶりつく。
甘酸っぱい味が口の中に広がった。
とても美味しい。
前世より良いこともある野菜が美味しいのはそのひとつ。
頭を使って疲れた感覚が甘味で解きほぐされていく。
「ねぇ、ビュートは将来どうしたい?」
「将来かぁ。石碑の謎を解き明かすには、冒険者になりたいな」
「私は雑貨屋を継ぐつもりだけど」
「石碑の謎が分かって、冒険者を引退したら、一緒に雑貨屋をやろう」
「それもいいかもね」
雑貨屋はともかくビュートの将来は厳しい。
ビュートは三男だから、家には残れない。
職人か店に奉公に行くしかないんだけど、勉強もしてないし、特技もない。
冒険者になるしかないけれど。
ゴブリンの魔石は銅貨10枚。
一日の宿代と食費を出すには30匹は倒さないといけない。
これが熟練じゃなくて駆け出しの最初の頃よ。
無理をして死んでいく冒険者のなんて多いこと。
私も話に聞いているだけだけど。
農家であぶれた男の子の半数は1年で死ぬ。
悲しい現実だけど仕方ない。
「俺、畑の合間にゴブリン退治を頑張ろうかと思うんだ」
「子供じゃきついわよ」
「もう12歳だ。職人なら見習いになってバリバリ稼いでる」
ビュートに死んで欲しくない。
ゴブリン退治ができる魔道具を作りましょうか。
でも魔女認定されたらどうしようという考えも頭を巡る。
なるべく攻撃でない攻撃魔道具。
「分かった。何か魔道具で武器を作ってみる」
「頼む。凄いのを作って」
何か作れるかなぁ。
考えないと。
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます