文字列内の数字の出現回数を数える

明解C言語 入門編 > 9. 文字列の基本 >

文字列内の数字の出現回数を数える

C


#include <stdio.h>


int main(int argc, char* argv[])
{
int cnt[10] = {0};
char str[100] = "3.1415926535897932846";
unsigned i = 0;

while (str[i])
{
if (('0' <= str[i]) && (str[i] <= '9'))
cnt[str[i] - '0']++;
i++;
}

for (i = 0; i < 10; i++)
{
printf("'%d' : %d\n", i, cnt[i]);
}

return 0;
}

実行結果


R:\>lesson074\Project1.exe
'0' : 0
'1' : 2
'2' : 2
'3' : 3
'4' : 2
'5' : 3
'6' : 2
'7' : 1
'8' : 2
'9' : 3

Delphi


program Project1;

{$APPTYPE CONSOLE}

uses
SysUtils;

procedure main();
var
i, j: Integer;
str: String;
cnt: array[0..9] of Integer;
begin
str := '3.1415926535897932846';

for i := 0 to 9 do
cnt[i] := 0;

for i := 1 to Length(str) do
begin
if ('0' <= str[i]) and (str[i] <= '9') then
begin
j := Integer(str[i]) - Integer('0');
Inc(cnt[j]);
end;
end;

for i := 0 to 9 do
Writeln(Format('"%d" : %d', [i, cnt[i]]));
end;

begin
main;
end.

実行結果


S:\>lesson074\Project1.exe
"0" : 0
"1" : 2
"2" : 2
"3" : 3
"4" : 2
"5" : 3
"6" : 2
"7" : 1
"8" : 2
"9" : 3

Perl
@cnt = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
$str = "3.1415926535897932846";

foreach $char(split(//, $str))
{
    $cnt[$char]++ if (("0" le $char) && ($char le "9"));
}

$i = 0;
foreach $char(@cnt)
{
    printf("'%d' : %d\n", $i++, $char);
}

実行結果

L:\>perl lesson_09_074.pl
'0' : 0
'1' : 2
'2' : 2
'3' : 3
'4' : 2
'5' : 3
'6' : 2
'7' : 1
'8' : 2
'9' : 3

Ruby
cnt = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
str = "3.1415926535897932846"

str.split(//s).each do |char|
    cnt[char.to_i] += 1 if (("0" <= char) && (char <= "9"))
end

cnt.each_with_index do |char, i|
    printf("'%d' : %d\n", i, char)
end

実行結果

L:\>ruby l:\lesson_09_074.rb
'0' : 0
'1' : 2
'2' : 2
'3' : 3
'4' : 2
'5' : 3
'6' : 2
'7' : 1
'8' : 2
'9' : 3