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
答案:1 悬赏:30 手机版
解决时间 2021-07-20 01:28
- 提问者网友:风月客
- 2021-07-19 14:01
最佳答案
- 五星知识达人网友:老鼠爱大米
- 2021-07-19 15:16
char t[2]; 只能放1个字符,另一个用于字符串结尾符号.你却用它
sprintf(t, %d,j);
strcat(t,.txt);
你要把它加大才行.例如声明为 char t[80]; 或 char t[200];
tt 也是同样问题.你要把它加大才行.
改正后再查 第一个问题 (在第14行)
再问: 后面两个加大后没错了。但是你说第十四行,哪里错呢?
再答: 打错了。是第24行--参照你的第一个窗。 也可以试 release, 忽略Debug.
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯