for information on how your program can#include "stdafx.h"using namespace std; void main() { int i,j,num; double str[11];//11个特征值查询模型 double ds[11];//数据库模型的特征值 double same[400]; //相似度 double
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/26 16:40:06
for information on how your program can#include "stdafx.h"using namespace std; void main() { int i,j,num; double str[11];//11个特征值查询模型 double ds[11];//数据库模型的特征值 double same[400]; //相似度 double
for information on how your program can
#include "stdafx.h"
using namespace std;
void main()
{
int i,j,num;
double str[11];//11个特征值查询模型
double ds[11];//数据库模型的特征值
double same[400]; //相似度
double sum;
tot:
CString f_name,m_path,m_name;
cout<<"选择特征文件 ";
system("pause");
CFileDialog dlg(true,NULL,NULL,OFN_HIDEREADONLY,_T("模型特征向量文件(*.txt)|*.txt||"));
if(dlg.DoModal()==IDOK)
{
m_path=dlg.GetPathName();
cout<<m_path<<endl;
m_name=dlg.GetFileName();
}//if(dlg.DoModal()==IDOK)
ifstream f;
f.open(m_path,ios::in);
if f.is_open())
{
/*文件不存在,操作失败*/
AfxMessageBox(_T("文件"+m_path+"不存在!"));
goto tot;
}
for (i=0;i<11;i++)
{
f>>str[i];
// cout<<str[i]<<" ";
}
f.clear();
f.close();
cout<<"\n输入计算相似度模型的个数 ";
cin>>num;
char s[256];
char t[2];
for(j=1;j<=num;j++)
{
strcpy(s,"E:\\cut\\off\\");
sprintf(t,"%d",j);
strcat(t,".txt");
strcat(s,t);
f_name=s;
f.open(f_name,ios::in);
if f.is_open())
{
/*文件不存在,操作失败*/
AfxMessageBox(_T("文件"+f_name+"不存在"));
return;
}
for (i=0;i<11;i++)
{
f>>ds[i];
// cout<<"["<<i<<"]"<<ds[i]<<endl;
}
sum=0.0;
for(i=0;i<11;i++)
{
sum+=(str[i]-ds[i])*(str[i]-ds[i]);
}
same[j]=sqrt(sum);
//cout<<"same["<<j<<"]="<<same[j]<<endl;
f.clear();
f.close();
}//for(j=1;j<=num;j++)
//保存文件
char tt[2];
sprintf(tt,"%d",num);
FILE *fp;
char fname[32];/*文件名*/
strcpy(fname,"1-");
strcat(fname,tt);
strcat(fname,".txt");
fp=fopen(fname,"w+");
for(i=1;i<=num;i++)
{
fprintf(fp,"%f",same[i]);
fprintf(fp,"\n");
}
fclose(fp);
}
运行首先出现第一张图,忽略后能运行.执行完了跳出第二三张图,忽略后结束.
for information on how your program can#include "stdafx.h"using namespace std; void main() { int i,j,num; double str[11];//11个特征值查询模型 double ds[11];//数据库模型的特征值 double same[400]; //相似度 double
char t[2]; 只能放1个字符,另一个用于字符串结尾符号.你却用它
sprintf(t, "%d",j);
strcat(t,".txt");
你要把它加大才行.例如声明为 char t[80]; 或 char t[200];
tt 也是同样问题.你要把它加大才行.
改正后再查 第一个问题 (在第14行)