部品から製品を製造する
新規のプログラム「challenge9.html」を作成し次のプログラムをできるだけ関数を用いて作成してください。
- 製品AYAXは部品Aが5個、部品Bが2個、部品Cが7個で1個製造できます。
- 仕入先から納品される、部品A、部品B、部品Cの個数を入力パネルを利用して入力してください。(10~500までの数字を入力)
- 製品AYAXを最大数製造してください。
- 製造した製品AYAXの数と残り部品の個数を表示してください。
小数点の切り捨てを行いたい場合は、「Math.floor」命令を使用してください。引数に数値を設定し呼び出すと、小数点が切り捨てられた戻り値が返ってきます。
正当例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
<meta charset="UTF-8"> <script type="text/javascript"> //部品の配列 (A部品0番目、B部品1番目、C部品2番目) var parts_su = []; //部品数 var kousei = [5,2,7]; //製品の部品構成数 var parts_name = ["A","B","C"]; //部品名 //納入 nouhin(); //製造 var seizou_su = seizou(); //生産数等の表示 print(seizou_su); /* 納品処理 */ function nouhin(){ var message = "部品の納品数を入力してください" for(var i = 0;i < kousei.length;i = i + 1){ input(parts_name[i]+message,i); } } /* 納品入力 */ function input(message,idx){ parts_su[idx] = window.prompt(message); parts_su[idx] = Number(parts_su[idx]); } /* 製造 【戻り値】製造数 */ function seizou(){ var max = max_seizou(); //製造できる最大の製品数を求める for(var i = 0;i < parts_su.length;i = i + 1){ //製造数を基に部品数を減らす parts_su[i] = parts_su[i] - max * kousei[i]; } return max; } /* 製造できる最大数を求める 【戻り値】最大製造数 */ function max_seizou(){ var min = []; //部品毎に製造できる最大数を求める for(var i = 0;i < parts_su.length;i = i + 1){ min[i] = Math.floor(parts_su[i] / kousei[i]);//部品数から製品構成数を除算して最大数を求める } var min_s = 999999999999; //部品毎の最小数製造数が製造できる製品の最大数になる for(var i = 0;i < min.length;i = i + 1){ if( min[i] < min_s){ min_s = min[i]; } } return min_s; } /* 表示処理 【引数】製造数 */ function print(seizou_su){ document.write("製造数="+seizou_su+"<BR>"); for(var i = 0;i < parts_su.length;i = i + 1){ document.write(parts_name[i] + "部品残り:"+parts_su[i]+"<BR>"); } } </script> |
部品A100個、部品B200個、部品C100個を納入した場合の結果表示です。