統計ビット数
例1:ランダム関数で100個の数を生成し、設計プログラム統計個位で0、1、2、3、4、5、6、7、8、9の数字はそれぞれいくらありますか.
【分析】これは基本的なアルゴリズム問題です.C++のランダム関数を用いて100個の乱数を生成するには,各数のビット数をどのように取得するかが重要である.
私たちは数字が10進数で構成されていることを知っています.各数字を10で割って、得られた余剰数はビット上の数字です.たとえば、数値123は10に対して3、すなわち123%10=3を余す.
完全なコードは次のとおりです.
効果は次のとおりです.
【分析】これは基本的なアルゴリズム問題です.C++のランダム関数を用いて100個の乱数を生成するには,各数のビット数をどのように取得するかが重要である.
私たちは数字が10進数で構成されていることを知っています.各数字を10で割って、得られた余剰数はビット上の数字です.たとえば、数値123は10に対して3、すなわち123%10=3を余す.
完全なコードは次のとおりです.
#include <iostream>
#include <time.h>
#include <stdlib.h>
#include <string.h>
using namespace std;
#define MAX 101
//
void input(int num[])
{
int i;
srand((unsigned)time(NULL)); //
for (i=1;i<MAX;i++)
{
num[i]=rand()%100; // 100
}
}
//
void output(int num[])
{
int i;
for(i=1;i<MAX;i++)
{
cout<<num[i]<<" ";
if (0 == i%10) // 10
{
cout<<endl; //
}
}
cout<<endl;
}
//
void cal_num(int num[],int count[])
{
int i,mod;
for(i=1;i<MAX;i++)
{
mod=num[i]%10; // 10 ,
count[mod]++;
}
}
void main()
{
int num[MAX];
int i,count[10];
memset(count,0,10*sizeof(int));// count[] 10 0
input(num);
cout<<"100 num: "<<endl;
output(num);
cal_num(num,count);
for (i=0;i<10;i++)
{
cout<<i<<":"<<count[i]<<endl;
}
}
効果は次のとおりです.