
哪位大虾帮我看看这个程序的核心算法是什么。
http://mg1ma.blog.163.com/blog/static/40865038201141174125364/源程序的地址。太长了所以只能发到博客里面去了。...
http://mg1ma.blog.163.com/blog/static/40865038201141174125364/
源程序的地址。太长了所以只能发到博客里面去了。求高手解答。可以归纳出核心算法和流程图吗。 展开
源程序的地址。太长了所以只能发到博客里面去了。求高手解答。可以归纳出核心算法和流程图吗。 展开
2个回答
展开全部
实际上这就是一个用c++类写的单链表结构
结点是class chezhu 类方法有:
char* getname() //获取车主姓名
int getnumber() //获取车主编号
void input() //从键盘输入车主信息,给parking::input()调用
void input(ifstream & is) //从文件流读取车主信息,给parking::begin()调用
void output() //把车主信息显示到屏幕,给parking::show()调用
void output(ofstream & os)//把车主信息写入到文件流类,给parking::save()调用
类class parking
数据:
chezhu *head; //链表的头指针
int key; //标识符 1:则文本文件里的信息与现在的车主信息部一致 0:一致
1.void input(); //录入车主信息
2.void show(); //显示车主信息
3.void found(); //查找车主信息
4.void del(); //删除车主信息
5.void mend(); //修改车主信息
6.void save(); //保存学生信息
void begin(); //从文本文件中读取信息创建链表
void clear(); //删除链表
char mainmenu(); //菜单
int getkey(){ return key;} //获取标识符
void setkey(int k){ key=k; } //设置标识符
我觉得其它函数都没啥说的,但这个parking::save()函数挺有意思。
int parking::find(chezhu **p1,int num,char *pn) /*注意这里的p1是一个指向指针的指针,为什么这里要用到这样一个指针?假如不用的话就必须返回找到的车主信息位置的指针,而下面希望用这个函数返回是否找到,返回bool型(而这里用的是int型替代了,C语言没有bool型时一般这样做)*/
{
chezhu *p;
p=head;
while(p->next)
{
(*p1)=p; //p1指向头指针
if( (p->next)->getnumber()==num||!strcmp( (p->next)->getname(),pn ) )
return 1;
p=p->next;
}
return 0;
}
//查找函数
void parking::found()
{
.............
if(!find(&p,num,name) )/*判断是否找到,由于定义时第一个参数数指向指针的指针,所以这里用了取地址符*/
............
}
}流程图的话可以发给你
上面那位兄弟不知道复制的啥东西?
结点是class chezhu 类方法有:
char* getname() //获取车主姓名
int getnumber() //获取车主编号
void input() //从键盘输入车主信息,给parking::input()调用
void input(ifstream & is) //从文件流读取车主信息,给parking::begin()调用
void output() //把车主信息显示到屏幕,给parking::show()调用
void output(ofstream & os)//把车主信息写入到文件流类,给parking::save()调用
类class parking
数据:
chezhu *head; //链表的头指针
int key; //标识符 1:则文本文件里的信息与现在的车主信息部一致 0:一致
1.void input(); //录入车主信息
2.void show(); //显示车主信息
3.void found(); //查找车主信息
4.void del(); //删除车主信息
5.void mend(); //修改车主信息
6.void save(); //保存学生信息
void begin(); //从文本文件中读取信息创建链表
void clear(); //删除链表
char mainmenu(); //菜单
int getkey(){ return key;} //获取标识符
void setkey(int k){ key=k; } //设置标识符
我觉得其它函数都没啥说的,但这个parking::save()函数挺有意思。
int parking::find(chezhu **p1,int num,char *pn) /*注意这里的p1是一个指向指针的指针,为什么这里要用到这样一个指针?假如不用的话就必须返回找到的车主信息位置的指针,而下面希望用这个函数返回是否找到,返回bool型(而这里用的是int型替代了,C语言没有bool型时一般这样做)*/
{
chezhu *p;
p=head;
while(p->next)
{
(*p1)=p; //p1指向头指针
if( (p->next)->getnumber()==num||!strcmp( (p->next)->getname(),pn ) )
return 1;
p=p->next;
}
return 0;
}
//查找函数
void parking::found()
{
.............
if(!find(&p,num,name) )/*判断是否找到,由于定义时第一个参数数指向指针的指针,所以这里用了取地址符*/
............
}
}流程图的话可以发给你
上面那位兄弟不知道复制的啥东西?

2025-08-05 广告
Paykka 的数字化流程涵盖了开户、收款、提现等全流程,从资料提交、账户开通到各种资金操作,都能在线上完成,无需用户进行线下干预,简化了操作步骤,提升了整体的操作效率。...
点击进入详情页
本回答由paykka提供
展开全部
程序思路有点乱.。写成下面这样的,容易看!
image_1=imread('E:\ebook\lena.bmp'); %读入图片
image_1=rgb2gray(image_1);%灰度化
[m,n]=size(image_1);%计算图片的像素点个数,行列,n是列数,Gray
num=zeros(1,256);%存放各灰度级出现的次数
p=zeros(1,256);%存放各灰度级的比率
image_1=double(image_1);%双精度化
for i=1:m
for j=1:n
num(image_1(i,j)+1)=num(image_1(i,j)+1)+1;%统计各灰度级的像素点个数
end
end
for i=1:256
p(i)=num(i)/(m*n);%计算各灰度级出现的比率
end
for i=2:256
if p(i)~=0
st=i+1;%实现寻找出现比率不为0的最小灰度值
break
end
end
for i=256:-1:1
if p(i)~=0;
nd=i-1;%实现找出出现比率不为0的最大灰度值
break
end
end
%以下程序实现利用最小方差和法找出门阈值
w=inf; th=0;
for t=st:nd%最小非零比率灰度值到最大非零比率灰度值
qt1=0; qt2=0;%前景后景像素点比率
u1=0; u2=0;%前景后景均值
v1=0; v2=0;%
for i=1:t
qt1=qt1+p(i);
end
for i=1:t
u1=u1+i*p(i)/qt1;
end
for i=1:t
v1=v1+((i-u1)^2)*p(i)/qt1;
end
for i=t+1:256
qt2=qt2+p(i);
end
for i=t+1:256
u2=u2+i*p(i)/qt2;
end
for i=t+1:256
v2=v2+((i-u2)^2)*p(i)/qt2;
end
if qt1*v1+qt2*v2<w
th=t; w=qt1*v1+qt2*v2 ;
end
end
for i=1:m
for j=1:n
if (image_1(i,j)+1>th)
image_2(i,j)=255;
else
image_2(i,j)=0;
end
end
end
image_2=uint8(image_2);%读入读出变换
figure,imshow(image_2);%显示二值化后的图片
image_1=imread('E:\ebook\lena.bmp'); %读入图片
image_1=rgb2gray(image_1);%灰度化
[m,n]=size(image_1);%计算图片的像素点个数,行列,n是列数,Gray
num=zeros(1,256);%存放各灰度级出现的次数
p=zeros(1,256);%存放各灰度级的比率
image_1=double(image_1);%双精度化
for i=1:m
for j=1:n
num(image_1(i,j)+1)=num(image_1(i,j)+1)+1;%统计各灰度级的像素点个数
end
end
for i=1:256
p(i)=num(i)/(m*n);%计算各灰度级出现的比率
end
for i=2:256
if p(i)~=0
st=i+1;%实现寻找出现比率不为0的最小灰度值
break
end
end
for i=256:-1:1
if p(i)~=0;
nd=i-1;%实现找出出现比率不为0的最大灰度值
break
end
end
%以下程序实现利用最小方差和法找出门阈值
w=inf; th=0;
for t=st:nd%最小非零比率灰度值到最大非零比率灰度值
qt1=0; qt2=0;%前景后景像素点比率
u1=0; u2=0;%前景后景均值
v1=0; v2=0;%
for i=1:t
qt1=qt1+p(i);
end
for i=1:t
u1=u1+i*p(i)/qt1;
end
for i=1:t
v1=v1+((i-u1)^2)*p(i)/qt1;
end
for i=t+1:256
qt2=qt2+p(i);
end
for i=t+1:256
u2=u2+i*p(i)/qt2;
end
for i=t+1:256
v2=v2+((i-u2)^2)*p(i)/qt2;
end
if qt1*v1+qt2*v2<w
th=t; w=qt1*v1+qt2*v2 ;
end
end
for i=1:m
for j=1:n
if (image_1(i,j)+1>th)
image_2(i,j)=255;
else
image_2(i,j)=0;
end
end
end
image_2=uint8(image_2);%读入读出变换
figure,imshow(image_2);%显示二值化后的图片
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询