注册 登录
编程论坛 C语言论坛

麻烦大侠修改程序,把输出的点文件存在电脑硬盘里面;

adong2000 发布于 2022-10-06 16:47, 1178 次点击
#include "stdio.h"
#include "math.h"
void main ()
{

 //FILE*fp;
 double pi=3.1415926;

 double L2,L1,L3,L4,L5;

 double L0;

 double xb,yb;

 double r1=31.0;//凸轮直径(可设定)
 double r2=31.0;//夹持工件滚子直径(可设定)
 double Rmin=23.0,Rmax=152.0;//夹持工件半径值(可设定)
 double xita=147.0*pi/180.0;//两臂之间的夹角(可设定)
 double airfmin=0.0, airfmax=0.0, airf=0.0;

 double beita=0.0, omg=0.0;

 double t=0.0;//加持工件半径差值
    xb=0.0;
    yb=0.0;
    L1=355.0, L2=150.0;//支撑臂长度(可设定)
    L3=225.0, L4=280.0;//工件回转中心与侧臂回转中心的距离(可设定)
    L5=234.0;//夹持最小工件时滚子到凸轮最小端面的距离(可设定)
    L0=sqrt(L3*L3+L4*L4);
    omg=atan(L3/L4);
    airfmin=acos((L1*L1+L0*L0-(Rmin+r2)*(Rmin+r2))/(2*L1*L0));//最小弧度
    airfmax=acos((L1*L1+L0*L0-(Rmax+r2)*(Rmax+r2))/(2*L1*L0));//最大弧度
       //fp=fopen("f:\tulunquxian.dat","wb");
 for(t=0.0; t<=Rmax-Rmin; t=t+0.01)      
{
                 airf=acos((L1*L1+L0*L0-(Rmin+r2+t)*(Rmin+r2+t))/(2*L1*L0));
    if(airf<airfmin) break;
    if(airf>airfmax) break;
    beita=pi-xita-omg+airf;
    xb=L4+L2*cos(beita)-(L5+(Rmin+r2)/2+t);
    yb=L3-L2*sin(beita);
    //fprintf(fp,"%1f%1f%1f\r\n",xb,yb,0.0);
    printf("xb=%1f,yb=%1f,\n",xb,yb);
}
     //fclose(fp);
}


//上面是程序的源代码,,现在的程序产生的点文件太大在DOS窗口里显示已经超过10万行,就不显示其余的了,麻烦修改一下程序,让输出的点文件全部存在电脑硬盘里面谢谢
5 回复
#2
adong20002022-10-06 16:57
补充一下,我的电脑系统是WIN10; 谢谢各位大侠
#3
yahooboby2022-10-07 01:40

#include "stdio.h"
#include "math.h"
#include <fstream>
#include <string.h>
#include <iostream>
#include <iomanip>
int main (void)
{

 //FILE*fp;
 double pi=3.1415926;

 double L2,L1,L3,L4,L5;

 double L0;

 double xb,yb;

 double r1=31.0;//凸轮直径(可设定)
 double r2=31.0;//夹持工件滚子直径(可设定)
 double Rmin=23.0,Rmax=152.0;//夹持工件半径值(可设定)
 double xita=147.0*pi/180.0;//两臂之间的夹角(可设定)
 double airfmin=0.0, airfmax=0.0, airf=0.0;

 double beita=0.0, omg=0.0;

 double t=0.0;//加持工件半径差值
    xb=0.0;
    yb=0.0;
    L1=355.0, L2=150.0;//支撑臂长度(可设定)
    L3=225.0, L4=280.0;//工件回转中心与侧臂回转中心的距离(可设定)
    L5=234.0;//夹持最小工件时滚子到凸轮最小端面的距离(可设定)
    L0=sqrt(L3*L3+L4*L4);
    omg=atan(L3/L4);
    airfmin=acos((L1*L1+L0*L0-(Rmin+r2)*(Rmin+r2))/(2*L1*L0));//最小弧度
    airfmax=acos((L1*L1+L0*L0-(Rmax+r2)*(Rmax+r2))/(2*L1*L0));//最大弧度
    //fp=fopen("f:\tulunquxian.dat","wb");
    std::ofstream myfile ("out.txt");
    if (myfile.is_open()){
    for(t=0.0; t<=Rmax-Rmin; t=t+0.01){
    airf=acos((L1*L1+L0*L0-(Rmin+r2+t)*(Rmin+r2+t))/(2*L1*L0));
    if(airf<airfmin) break;
    if(airf>airfmax) break;
    beita=pi-xita-omg+airf;
    xb=L4+L2*cos(beita)-(L5+(Rmin+r2)/2+t);
    yb=L3-L2*sin(beita);
    //fprintf(fp,"%1f%1f%1f\r\n",xb,yb,0.0);
    printf("xb=%1f,yb=%1f,\n",xb,yb);
    myfile << "xb=" << xb << std::fixed << std::setprecision(6) << "," << "yb=" << yb << std::fixed << std::setprecision(6) << "," << std::endl;
    }
    myfile.close();
    }
    //fclose(fp);
}
#4
adong20002022-10-07 09:46
楼上的老师您好!

您修改的这个程序的第三行   #include <fstream>  ; 我DEV-C++中运行,提示错误    [Error] fstream: No such file or directory  程序运行不了,
您能否再帮我们修改一下,多谢
#5
adong20002022-10-07 11:00
那位老师帮我解决一下这个问题,谢谢!!急用!![
#6
adong20002022-10-07 11:02
输出的点文件的格式是(例如)    xb=78.670345,yb=104.291795
1