- ベストアンサー
こんなのが作りたいんです
まず、3桁の数字があります。例えば123とか、その数字を入力します。すると一の位で1は何回出たなどが表示されるものが作りたいんです。 例えば、124 234 222 134 などと入力すると、 100の位で1は2回 2は2回・・・・・・ 10の位で 1は0回 2は2回・・・・・・ 1の位で 1は0回 2は一回・・・・・・ などと表示されるものが作りたいんです。 それに一度入力したものは保存されて、何がボタンを押すと上のように表示されるものが作りたいんですが JAVASCRIPT で出来ますか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
一応作ってみました >入力したものが保存される は、数字を1つ入力する毎に次のページに持ち越す?というような意味なのかなと思いましたが、それは面倒なので、textareaで保持するようにしています。数えたい数字を一行に1つ改行して次のような感じで入力します 例 124 234 222 134 実行ボタンを押すと、下のエリアに結果が表示されます。 0回の表示は鬱陶しいのでスキップしていますが、 if(numCount[i][j]!=0) による0でないというチェックをコメントアウトすることで、0回も表示することができます。 -------------------------------------------------------------- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=SHIFT_JIS"> <title>各桁の数字の出現頻度を数える</title> <script type="text/javascript"> <!-- function count(){ var maxScale = 1; var data = document.getElementById("inputArea").value.split("\n"); for(var i=0;i<data.length;i++){ var num = ""+parseInt(data[i]);//トリム var len = num.length; //正の整数を期待している if(maxScale < len) maxScale = len;//最大の桁数を求める data[i]=num; } var numCount=new Array(maxScale); for(var i=0;i<maxScale;i++){ numCount[i]=new Array(10);//0~9用の配列を確保 for(var j=0;j<10;j++){ numCount[i][j]=0;//初期化 } } for(var i=0;i<data.length;i++){ var len = data[i].length; for(var j=0;j<len;j++){ numCount[len-1-j][parseInt(data[i].charAt(j))]++; } } var outArea = document.getElementById("resultArea"); outArea.value="結果\n"; for(var i=numCount.length-1;i>=0;i--){ outArea.value += spaceFormat("1" + nZero(i),maxScale) + "の位で"; for(var j=0;j<10;j++){ if(numCount[i][j]!=0) outArea.value += ""+j+"は"+ numCount[i][j]+"個 "; } outArea.value +="\n"; } } function nZero(n){ var zero=""; while(zero.length<n){ zero+="0"; } return zero; } function spaceFormat(str,n){ while(str.length<n) str=" "+str; return str; } //--> </script> </head> <body> 一行に1つの数字を入力して実行ボタンを押す<br> <textarea id="inputArea" cols="10" rows="10"></textarea><br> <button type="button" onclick="count()">実行</button><br> <textarea id="resultArea" cols="80" rows="5"></textarea> </body> </html>
その他の回答 (1)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
#1補足>0個というのも表示させたいのですが #1で説明した通り、1行コメントアウトまたは、削除することで 0個も表示されるようになります。
お礼
こんなに詳しくありがとうございます。
補足
もう1つ質問があるのですが、0個というのも表示させたいのですが