数字のカウントを上げる際、01と1でカウントをスタートさせたい

このQ&Aのポイント
  • 数字のカウントを上げる際、01と1でカウントをスタートさせたいです。
  • for構文(やwhile構文foreach構文)を使用して、指定の範囲でカウントを行いますが、出力する際に01と1の形式で表示させたいです。
  • お手数おかけしますが、良い方法があれば教えていただきたいです。
回答を見る
  • ベストアンサー

数字のカウントを上げる際、01と1でカウントをスタートさせたい

題名にもあります通り、数字のカウントを上げる際、01と1でカウントをスタートさせたいのです。どなた様か良いお知恵をお借りできませんでしょうか。 for構文(やwhile構文foreach構文)で下記の場合ですと、1からカウントするのはわかるのですが・・・。 for ($n =1; $n < 14; $n++) { print "<br>\$n = $n"; } イメージとしましては、printする際、 $n = 1 $n = 001 $n = 2 $n = 002 .. $n = 10 $n = 010 $n = 11 $n = 011 といった感じで出力させたいのです。 お手数お掛けしますが、宜しくお願いします。

  • taku0
  • お礼率80% (160/199)
  • Perl
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.1

printf や sprintf を活用するといいかと。 例 $n=2; printf "%03d", $n; # 結果 > 002 参考 http://www.rfs.jp/sb/perl/05/sprintf.html http://www.rfs.jp/sb/perl/05/printf.html

taku0
質問者

お礼

printfで実現できるんですね。 参考URLまで有難うございます。 無事解決できそうです。有難うございました。

関連するQ&A

  • 1_1から1_5へカウントアップ後、2_1から1_5へカウントアップしたい

    お世話になります。 題名にあります通りなんですが、1_1から1_5にカウントアップしたら 2_1から2_5へとカウントアップするようなスクリプトを考えているのですが 下記の例ですと、1111122222333334444455555となってしまいなす。 どなたか良きアドバイス頂けないでしょうか。宜しくお願いします。 @list = (0, 1, 2, 3, 4, 5); foreach $b(@list) { for ( $a = 1 ; $a <= 5 ; $a++ ) { print ""; print "$a_$b\n" ; } }

    • ベストアンサー
    • Perl
  • 一行ずつリアルタイムに結果を表示したい

    cgiプログラムで print "<html><body>"; foreach(0..1000000000000){ $n++; print "$n<br>\n"; } print "</body></html>"; というかんじで結果を出力しようとすると 出力の際、処理されたところまでいったん表示され 何分かたってまた、処理されたところまでを表示されます。 例)1~10000表示→3分後に10001~20000を表示 これでは10001が処理できているのかが3分後にならないとわかりません。 そのため出力結果を一行ずつリアルタイムに表示できるようにしたいのですが、 どのように処理したら良いでしょうか? お教え下さい。よろしくお願いします。

    • ベストアンサー
    • CGI
  • array_randで要素が数字の場合の処理方法

    PHPのarray_randについて教えて下さい。 下記のようなソースを作りましたが思った通りの結果になりません。 //(A) $test=array(3,5,8,11,14,24,26,28); print_r($test); foreach ($test as $val) { echo $val.'<br>'; } //(B) $keys = array_rand($test, 5);//決められた数を抽出 print_r($keys).'<br><br>'; foreach ($keys as $val) { echo $val.'<br>'; } Aの部分の結果は Array ( [0] => 3 [1] => 5 [2] => 8 [3] => 11 [4] => 14 [5] => 24 [6] => 26 [7] => 28 ) foreachの部分の出力↓ 3 5 8 11 14 24 26 28 となりこれは特に問題ありません。 Bの部分でAの配列から5つランダムで取り出したいのですが、結果は Array ( [0] => 0 [1] => 3 [2] => 5 [3] => 6 [4] => 7 ) 0 foreachの部分の出力↓ 0 3 5 6 7 となってしまい、Aの配列の添え字の中から5つの数字が選ばれるようになってしまいます。 Aの添え字ではなく「3,5,8,11,14,24,26,28」の数字から5つランダムで取り出すにはどのような書き方をすればよいのでしょうか? ご回答よろしくお願い致します。

    • ベストアンサー
    • PHP
  • Perlを使った単語出現カウント

    コマンドライン引数で 入力ファイルからデータ受け取って結果を出力ファイルに書き込みたいのですが、プログラムは #!/usr/bin/perl while ( <> ) { @words = split(" "); $wc{@words[0]} += 1; } foreach $key (keys %wc) { print "$wc{$key} $key\n"; } で今のコードでは、コンソールに出力されるだけとなってしまいます。 ファイル入出力を行うにはどうすればいいですか?

    • ベストアンサー
    • Perl
  • ボタン押したときだけカウント

    http://www.sic.shibaura-it.ac.jp/~p00050/ でホームページを作っています。 左下のほうにあるリンクをクリックしたときだけ、カウントが上がるようにしたいんです。 でも表示更新したときにもカウントが上がってしまいます。 左下の部分のフレームはcount.cgiで、ソースは次のとおり。 #!/usr/local/bin/perl $data = 'data.dat'; open(F, "$data"); $count = <F>; close(F); $count++; open(F, ">$data"); print F "$count"; close(F); print "content-type:text/html\n\n"; print "<body bgcolor=black topmargin=0 leftmargin=0 bottommargin=0 rightmargin=0>\n"; print "<font color=lightgrey size=2><p align=center>ポイント <b>$count</b><br>\n"; print "このページに共感した人は、<br>好きなだけ<a href=count.cgi target=count>ここ</a>を押してください。"; print "</p></font></body>\n";

    • 締切済み
    • CGI
  • 二桁の数字からなる配列数10個内に00がある場合、

    お世話になります。 二桁の数字からなる配列数10個内に00がある場合、十の位と一の位をそれぞれ取り出すようにテスト中なのですが、配列内に00がある場合、十の位と一の位の数字がコピーされてしまうようです。 #!/usr/bin/perl @Array="10<>78<>51<>78<>00<>72<>43<>82<>65<>29<>"; foreach$i(0..$#Array){ @Mtmp=split(/<>/,$Array[$i]); } foreach$i(0..$#Mtmp){ ($M_old_9,$M_old_8,$M_old_7,$M_old_6,$M_old_5,$M_old_4,$M_old_3,$M_old_2,$M_old_1,$M_old_0)=split(/<>/,$Mtmp[$i]); # if($Mtmp[$i] != ''){ $M_n = substr ("$Mtmp[$i]", -2);#■二桁のの数字 $M_t10=$M_n; $M_t1 = substr ("$M_t10", -1 , 1);#■一の位を取り出し chop$M_t10; #■十の位を取り出し $acount++; # } print "No.$i $Mtmp[$i]\n"; $M_yosou++; $M_old_9=$M_old_8; $M_old_8=$M_old_7; $M_old_7=$M_old_6; $M_old_6=$M_old_5; $M_old_5=$M_old_4; $M_old_4=$M_old_3; $M_old_3=$M_old_2; $M_old_2=$M_old_1; $M_old_1=$M_old_0; $M_old_0=$M_n;#■二桁のの数字 $M_old_n9_10=$M_old_n8_10; $M_old_n8_10=$M_old_n7_10; $M_old_n7_10=$M_old_n6_10; $M_old_n6_10=$M_old_n5_10; $M_old_n5_10=$M_old_n4_10; $M_old_n4_10=$M_old_n3_10; $M_old_n3_10=$M_old_n2_10; $M_old_n2_10=$M_old_n1_10; $M_old_n1_10=$M_old_n0_10; $M_old_n0_10=$M_t10;#■十の位 $M_old_n9_1=$M_old_n8_1; $M_old_n8_1=$M_old_n7_1; $M_old_n7_1=$M_old_n6_1; $M_old_n6_1=$M_old_n5_1; $M_old_n5_1=$M_old_n4_1; $M_old_n4_1=$M_old_n3_1; $M_old_n3_1=$M_old_n2_1; $M_old_n2_1=$M_old_n1_1; $M_old_n1_1=$M_old_n0_1; $M_old_n0_1=$M_t1;#■一の位 } print "\$acount=$acount\n<br>\@Mtmp=@Mtmp \n<br>\$M_n=$M_n \n<br>\$M_t10=$M_t10 \n<br>\$M_t1=$M_t1 \n<br>\$M_old_9=$M_old_9\n<br>\$M_old_8=$M_old_8\n<br>\$M_old_7=$M_old_7\n<br>\$M_old_6=$M_old_6\n<br>\$M_old_5=$M_old_5\n<br>\$M_old_4=$M_old_4\n<br>\$M_old_3=$M_old_3\n<br>\$M_old_2=$M_old_2\n<br>\$M_old_1=$M_old_1\n<br>\$M_old_0=$M_old_0\n<br>\$M_old_n9_10=$M_old_n9_10\n<br>\$M_old_n8_10=$M_old_n8_10\n<br>\$M_old_n7_10=$M_old_n7_10\n<br>\$M_old_n6_10=$M_old_n6_10\n<br>\$M_old_n5_10=$M_old_n5_10\n<br>\$M_old_n4_10=$M_old_n4_10\n<br>\$M_old_n3_10=$M_old_n3_10\n<br>\$M_old_n2_10=$M_old_n2_10\n<br>\$M_old_n1_10=$M_old_n1_10\n<br>\$M_old_n0_10=$M_old_n0_10\n<br>\$M_old_n9_1=$M_old_n9_1\n<br>\$M_old_n8_1=$M_old_n8_1\n<br>\$M_old_n7_1=$M_old_n7_1\n<br>\$M_old_n6_1=$M_old_n6_1\n<br>\$M_old_n5_1=$M_old_n5_1\n<br>\$M_old_n4_1=$M_old_n4_1\n<br>\$M_old_n3_1=$M_old_n3_1\n<br>\$M_old_n2_1=$M_old_n2_1\n<br>\$M_old_n1_1=$M_old_n1_1\n<br>\$M_old_n0_1=$M_old_n0_1\n<br><br>"; __END__; 上記の実行結果は # perl test3.cgi No.0 10 No.1 78 No.2 51 No.3 78 No.4 00 No.5 72 No.6 43 No.7 82 No.8 65 No.9 29 $acount=10 <br>@Mtmp=10 78 51 78 00 72 43 82 65 29 <br>$M_n=29 <br>$M_t10=2 <br>$M_t1=9 <br>$M_old_9= <br>$M_old_8= <br>$M_old_7= <br>$M_old_6= <br>$M_old_5= <br>$M_old_4= <br>$M_old_3= <br>$M_old_2= <br>$M_old_1= <br>$M_old_0=29 <br>$M_old_n9_10=1 <br>$M_old_n8_10=7 <br>$M_old_n7_10=5 <br>$M_old_n6_10=7 <br>$M_old_n5_10=0 <br>$M_old_n4_10=7 <br>$M_old_n3_10=4 <br>$M_old_n2_10=8 <br>$M_old_n1_10=6 <br>$M_old_n0_10=2 <br>$M_old_n9_1=0 <br>$M_old_n8_1=8 <br>$M_old_n7_1=1 <br>$M_old_n6_1=8 <br>$M_old_n5_1=0 <br>$M_old_n4_1=2 <br>$M_old_n3_1=3 <br>$M_old_n2_1=2 <br>$M_old_n1_1=5 <br>$M_old_n0_1=9 <br><br> なのですが、上記の00を取り出した部分がなぜか十の位と一の位どちらもコピーされてしまいます。 これはなぜこのような症状がおきるのでしょうか。また00の際も十の位と一の位それぞれ0を取り出すにはどのようにすれば宜しいでしょうか。 2.下記の $M_old_9= ... $M_old_0= の所が二桁の数字が順次展開されないのは何故なのでしょうか。 お忙しいかとは存じますが、よろしくお願い致します。

    • ベストアンサー
    • Perl
  • 入力に出現する数字文字をカウントするプログラム

    こんにちは、毎度お世話になります。 #include<iostream> using namespace std; int main(void){ char c; int cnt[10] = {0}; while(cin.get(c)){ if(c >= '0' && c <= '9') cnt[c - '0']++; } for (int = 0; i < 10; i++) cout << i << "の出現回数:" << cnt[i] << '\n'; return(0); } [/code] ここで質問なんですが、このプログラムの中で数字文字をカウントしているのはどこでしょうか? そして while(cin.get(c)){ if(c >= '0' && c <= '9') cnt[c - '0']++; } ここの部分が何を表しているのか解りません。 よろしくお願いします。

  • 入れた数字の回数だけ、繰り返して足し算をするプログラミング

    こんにちは、初質問ですが、皆さんの知恵を借りたいと思います。よろしくお願いします! C言語はまったくの初心者です。下のプログラミングはどうやって作ったらいいのか、全然わかりません。 プログラミング:n1とn2の二つの数字を入力させ、n1×n2の結果を掛け算を使わずに、足し算だけで表示させる。 たぶん繰り返し文を使って、n2回n1の足し算すると思いますが、whileだけで作れますか?あるいはforを使ったほうがいいですか?できればプログラミングを書いてください。 ぜひよろしくお願いします!!!

  • 指定のフォルダに指定のファイルがあったら画像を表示、なければ飛ばすいい方法(CGI)

    指定のフォルダに指定のファイルがあったら画像を表示、なければ飛ばすというようにしたいのです。 opendir (FOLDER,"img"); @FOLDERS = readdir (FOLDER); closedir(FOLDER); my ($cnt) = 0; foreach(@FOLDERS) { if ($_ =~ /.+\..+/) { $cnt++; } } $tate = $cnt/10; print "<TABLE CELLSPACING=0 CELLPADDING=2>\n"; print "<TR>\n"; for($i=1;$i<11;){ for($n=2;$n<$cnt;$n++){ $F = $FOLDERS[$n]; if("$i.jpg" eq "$F"){ print "<TD CLASS=TD1><IMG SRC='img/$i.jpg' HEIGHT=65 WIDTH=50><BR>$i</TD>\n"; $i=$i+1; } #if } #for $n } #for $i というようにしてみたのですが時間がかかりすぎてしまいます。 何かいい方法はないでしょうか?

    • 締切済み
    • CGI
  • 指定したファイルがあるかどうかの確認

    指定したファイルがフォルダ内にあるかどうかを調べるために以下のようにしました。 #フォルダ内の確認 opendir (FOLDER,"img"); @FOLDERS = readdir (FOLDER); closedir(FOLDER); my ($cnt) = 0; foreach(@FOLDERS) { if ($_ =~ /.+\..+/) { $cnt++; } } #指定したファイルがあるかどうかの確認 for($i=1;$i<3;$i++){ for($n=2;$n<$cnt;$n++){ $F = $FOLDERS[$n]; if('$i.jpg' eq '$F'){ print "<TD CLASS=TD1><IMG SRC='img/$i.jpg' HEIGHT=65 WIDTH=50></TD>\n"; print "<FONT COLOR=RED>★</FONT><BR>\n"; #$i=$i+1; } elsif('$i.jpg' ne '$F'){ print "$i.jpg $F<BR>\n"; }#if } #for $n } #for $i ですがすべて「違う」となってしまいます。 どこがダメなのでしょうか? ※perlです。

    • ベストアンサー
    • CGI

専門家に質問してみよう