c++ 数组长度的问题,不能用.length返回数组长度吗
#include<iostream>#include<cmath>usingnamespacestd;intmain(){/*初始化*/floatpx[20];intn;...
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
/*初始化*/
float px[20];
int n;
cout<<"输入n的值:"<<endl;
cin>>n;
for(int i=0;i<n;i++)
{
cout<<"输入p["<<i<<"]的概率"<<endl;
cin>>px[i];
}
cout<<endl;
cout<<endl;
/*排序px[i]*/
float temp;
cout<<"概率从大到小排序后结果:"<<endl;
for(i=0;i<n;i++)
{ for(int j=i+1;j<n+1;j++)
if(px[i]<px[j])
{
temp=px[i];
px[i]=px[j];
px[j]=temp;
}
cout<<px[i]<<", ";
}
cout<<endl;
cout<<endl;
/*求pa[i]的值*/
float pa0=0;
cout<<"第i个码字的累加概率:"<<endl;
cout<<"pa[0]="<<pa0<<", ";
float pa[20];
for(i=1;i<n;i++)
{
pa[0]=0;
pa[i]=pa[i-1]+px[i-1];
cout<<"pa["<<i<<"]的值="<<pa[i]<<", ";
}
cout<<endl;
cout<<endl;
/*求k[i]自信息量 和 码字*/
int t[20];
float k[20];
for(i=0;i<n;i++)
{ t[i]=-log(px[i])/log(2);
k[i]=-log(px[i])/log(2);
if(t[i]<k[i])
k[i]=t[i]+1;
cout<<"k["<<i<<"]自信息量(码字长度)为"<<k[i]<<",";
//实现二进制编码
int code[20];
for(i=0;i<n;i++)
for(int j=0;j<k.length;j++){
if(pa[i]*2<1)
{
code[j]=0;
pa[i+1]=pa[i]*2;
}
else
{
code[j]=1;
pa[i+1]=pa[i]*2-1;
}
cout<<"pa["<<i<<"]的码字为:"<<endl;
}
return 0;
}
}
请帮忙改改,在看下实现二进制编码时有没有其他的错误,谢谢,在线等 展开
#include <cmath>
using namespace std;
int main()
{
/*初始化*/
float px[20];
int n;
cout<<"输入n的值:"<<endl;
cin>>n;
for(int i=0;i<n;i++)
{
cout<<"输入p["<<i<<"]的概率"<<endl;
cin>>px[i];
}
cout<<endl;
cout<<endl;
/*排序px[i]*/
float temp;
cout<<"概率从大到小排序后结果:"<<endl;
for(i=0;i<n;i++)
{ for(int j=i+1;j<n+1;j++)
if(px[i]<px[j])
{
temp=px[i];
px[i]=px[j];
px[j]=temp;
}
cout<<px[i]<<", ";
}
cout<<endl;
cout<<endl;
/*求pa[i]的值*/
float pa0=0;
cout<<"第i个码字的累加概率:"<<endl;
cout<<"pa[0]="<<pa0<<", ";
float pa[20];
for(i=1;i<n;i++)
{
pa[0]=0;
pa[i]=pa[i-1]+px[i-1];
cout<<"pa["<<i<<"]的值="<<pa[i]<<", ";
}
cout<<endl;
cout<<endl;
/*求k[i]自信息量 和 码字*/
int t[20];
float k[20];
for(i=0;i<n;i++)
{ t[i]=-log(px[i])/log(2);
k[i]=-log(px[i])/log(2);
if(t[i]<k[i])
k[i]=t[i]+1;
cout<<"k["<<i<<"]自信息量(码字长度)为"<<k[i]<<",";
//实现二进制编码
int code[20];
for(i=0;i<n;i++)
for(int j=0;j<k.length;j++){
if(pa[i]*2<1)
{
code[j]=0;
pa[i+1]=pa[i]*2;
}
else
{
code[j]=1;
pa[i+1]=pa[i]*2-1;
}
cout<<"pa["<<i<<"]的码字为:"<<endl;
}
return 0;
}
}
请帮忙改改,在看下实现二进制编码时有没有其他的错误,谢谢,在线等 展开
3个回答
展开全部
C++:是在C语言的基础上开发的一种通用编程语言,应用广泛。C++支持多种编程范式 --面向对象编程、泛型编程和过程化编程。最新正式标准C++14于2014年8月18日公布。[1] 其编程领域众广,常用于系统开发,引擎开发等应用领域,是至今为止最受广大程序员受用的最强大编程语言之一,支持类:类、封装、重载等特性!
C++没有.length这个封装方法来获取长度,要想获取数组的长度可以有很多方法,最简单的就是调用API来获取strlen函数!
C++没有.length这个封装方法来获取长度,要想获取数组的长度可以有很多方法,最简单的就是调用API来获取strlen函数!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
//实现二进制编码
cout<<"p["<<i<<"]的码字为:";
for(int j=0;j<k[i];j++)
{
if(pa[i]*2<1)
{
code[j]=0;
pa[i]=pa[i]*2;
}
else
{
code[j]=1;
pa[i]=pa[i]*2-1;
}
cout<<code[j];
}
cout<<endl;
这样就可以了
cout<<"p["<<i<<"]的码字为:";
for(int j=0;j<k[i];j++)
{
if(pa[i]*2<1)
{
code[j]=0;
pa[i]=pa[i]*2;
}
else
{
code[j]=1;
pa[i]=pa[i]*2-1;
}
cout<<code[j];
}
cout<<endl;
这样就可以了
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
//实现二进制编码
char code[20];
for(i=0;i<n;i++)
{
_itoa(pa[i],code,2);
printf("String of pa[%d] : %s\n",i,code);
}
return 0;
char code[20];
for(i=0;i<n;i++)
{
_itoa(pa[i],code,2);
printf("String of pa[%d] : %s\n",i,code);
}
return 0;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询