文字列内の数字の出現回数を数える
明解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