| 查看: 528 | 回复: 0 | ||
[求助]
程序求助
|
|
我的程序采用读取文件数据自动赋值计算,m存放在map容器中,下一次输入计算后,在map中搜索jiao1,如果有jiao1相对的就jie1相加。我刚开始是手动输入,第一次输入与第二次输入有叠加,实现了我的功能,但是现在改为读取文件数据后,最后的结果只是最后一次计算的结果。这个是程序逻辑出错了吗?(可能程序计算公式较多,看起来较麻烦,可以只看程序整体逻辑关系) #include<stdio.h> #include<stdlib.h> #include<math.h> #include <map> #include <iostream> #include <sstream> #include <fstream> #include <string> using namespace std; map<float,float> g_mapData; void insert_map(float jie1,float jiao1) { if (g_mapData.find(jiao1) != g_mapData.end() ) { float jie = g_mapData[jiao1]; g_mapData[jiao1] = jie + jie1; }else g_mapData[jiao1]= jie1; } void str2int(int &int_temp,const string &string_temp) { stringstream stream(string_temp); stream>>int_temp; } int main(int args, char **argv) { std::ifstream fin("split.txt", std::ios::in); char line[1024]={0}; std::string X = ""; std::string Y = ""; std::string Z = ""; while(fin.getline(line, sizeof(line))) { std::stringstream word(line); word >> X; word >> Y; word >> Z; std::cout << "X: " << X << std::endl; std::cout << "Y: " << Y << std::endl; std::cout << "Z: " << Z << std::endl; string str = X; int nX = 0; str2int(nX,str); str = Y; int nY = 0; str2int(nY,str); str = Z; int nZ = 0; str2int(nZ,str); std::ifstream fin("split1.txt", std::ios::in); char line[1024]={0}; std::string X1 = ""; std::string Y1 = ""; std::string Z1 = ""; while(fin.getline(line, sizeof(line))) { std::stringstream word(line); word >> X1; word >> Y1; word >> Z1; std::cout << "X1: " << X1 << std::endl; std::cout << "Y1: " << Y1 << std::endl; std::cout << "Z1: " << Z1 << std::endl; string str = X1; int nX1 = 0; str2int(nX1,str); str = Y1; int nY1 = 0; str2int(nY1,str); str = Z1; int nZ1 = 0; str2int(nZ1,str); int n; double b,c,d,e,f,jit,ji1,sum,jiw,xiangliangx,xiangliangy,zongjiao; sum=0; jiw=0; b=nX1; c=4; d=4; e=2; f=2; double x=fabs(nX-c); double y=fabs(b-d); double j=sqrt(x*x+y*y); double h=e+f; if(j<h) { double A; A=(e*e+j*j-f*f)/(2*j*e); double ji=0; ji=acos(A); ji=ji/3.1415926*180; int jir=int(ji); ji=jir; jit= ji/180*3.1415926; n=ji/1; printf("与第一个圆的夹角%lf\n",ji); xiangliangx=c-nX; xiangliangy=d-b; if(xiangliangy>0) if(xiangliangx>0) zongjiao=atan(xiangliangy/xiangliangx); else zongjiao=atan(-xiangliangy/xiangliangx)+3.1415926/2; else if(xiangliangx>0) zongjiao=atan(xiangliangy/xiangliangx); else zongjiao=atan(-xiangliangy/xiangliangx)-3.1415926/2; zongjiao = int(zongjiao/3.1415926*180); zongjiao=zongjiao/180*3.1415926; for(int i=1;i<n;i++) { double x1,x2,x3,jieg1,jieg2,jieg,B,jie0,jie1,jiao1,jiao2,jiao; B=jit/n; x1=1+tan(i*B)*tan(i*B); x2=-2*j; x3=j*j-f*f; jieg1=(-x2+sqrt(x2*x2-4*x1*x3))/(2*x1); jieg2=jieg1*tan(i*B); jieg=sqrt(jieg1*jieg1+jieg2*jieg2); jie0=(jieg-2); jiao1=(zongjiao+B*i)/3.1415926*180; jiao2=(zongjiao-B*i)/3.1415926*180; jiao=i*B/3.1415926*180; jie1=pow(jie0,1.5)*cos(i*B)*f; sum=sum+jie1; printf("输出A%d=%lf\n",i+1,jie1); printf("输出角A%d=%lf\n",i+1,jiao1); printf("输出角A%d=%lf\n",i+1,jiao2); insert_map(jie1,jiao1); } } else printf("两圆无交点" ;} } system("pause" ;return 0; } |
» 猜你喜欢
对氯苯硼酸纯化
已经有3人回复
求助:我三月中下旬出站,青基依托单位怎么办?
已经有12人回复
不自信的我
已经有12人回复
假如你的研究生提出不合理要求
已经有5人回复
所感
已经有4人回复
论文终于录用啦!满足毕业条件了
已经有28人回复
要不要辞职读博?
已经有7人回复
北核录用
已经有3人回复
实验室接单子
已经有3人回复
磺酰氟产物,毕不了业了!
已经有8人回复












;
回复此楼