07/11/27 18:06:06
>>310
#include <stdio.h>
#include <string.h>
#include <math.h>
int main()
{
int i=0,l,c[256]={0};
char buf[256];
double h=0,p;
scanf("%s",buf);
l=strlen(buf);
for(i=0;i<l;i++)
c[buf[i]]++;
for(i=0;i<256;i++)
if(c[i]>0) {
p=(double)c[i]/l;
printf("\"%c\" %lf\n",i,p);
h-=p*log(p);
}
printf("H = %lf\n",h);
return 0;
}
317:デフォルトの名無し
07/11/27 18:14:32
[1] 授業単元: プログラミング
[2] 問題文:
入力された整数0~9のn個の文字列に対応したヒストグラムを出力するプログラムを作成せよ。
例:(n個の整数文字列=0050011050)
数値0が6個、1が2個、5が2個の場合、以下のように出力する。
<出力例>
a[0] = 6 ******
a[1] = 2 **
a[2] = 0
a[3] = 0
a[4] = 0
a[5] = 5 **
a[6] = 0
a[7] = 0
a[8] = 0
a[9] = 0
ただしキーボードからの入力は最大128バイトとし、それを超える場合129バイト以降のデータはカウントしない。
入力データは半角数字のみとし、全角数字の入力は考えない。
文字列カウント関数 count
引数 char inputdata[] 入力データ
int outputdata[] 出力データ
算出結果をヒストグラムで描写する関数名 hist
引数 int outputdata[]
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C言語
[4] 期限: 11月28日まで
[5] その他の制限: なし