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
forinformationonhowyourprogramcan#include"stdafx.h"usingnamespacestd;voidmain(){inti,j,num

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行)