还是昨天的作业,现在出现的问题如下:
1,A应该与Z1/Z2的差的绝对值为0.005时候, 可以输入,
比如上面的A=1,Z1=50。Z2=50。这个上面就是应该输出的,但现在的这个代码上面结果是Z1/Z2会出现大于2的结果我用的是VC上输入C的代码进行计算
///////////////////////////////////
已知:A,B(A,B为输入值)//实数
Z1=(10到200)的整数
Z2=(10到200)的数数
M=(2.2,3,4.1,5,6) //实数
求:
当|A-Z1/Z2|<0.0005时
分别用M从(2,2.25,2.5,2.75,3,3.5,4,4.5,5,5.5,6,6.5,7,8,9,10,11,12,14,16,18,20)的每个数字计算:
beat=arccos(M*(z1+z2)/(2*B))
比较计算结果,当12<beat<15时
输出 A  B Z1 Z2 M BEAT  的数值
///////////////////////
举例
用A=1  b=257.6227 M=5,Z1=50 Z2=50酸出来BEAT再12-15之间
就是哪个Z1/Z2的值和A的差的结果,精度控制在0,0005/////////////////////////////////////////////////
程序1 这个程序计算不出结果来,程序计算见后面图
#include "stdio.h" 
#include <iostream.h>
#include"math.h" 
int main() 
{    double A, B;
int  Z1, Z2;
    double beat;
    int n = 0;
    printf("请输入传动比:");
   // scanf("%f", &A);
cin>>A;
    printf("请输入中心距:");
cin>>B;
   // scanf("%f", &B);
    double d1 = A;
int i;
double M[22]={2,2.25,2.5,2.75,3,3.5,4,4.5,5,5.5,6,6.5,7,8,9,10,11,12,14,16,18,20};
    for (Z1 = 13; Z1 <=200; Z1++)
    {
        for (Z2 = 13; Z2 <=200; Z2++)
        {
            double d2 = (Z1 / Z2 ) * 1.0;       
   if (double (fabs(A - d2)  )<= 0.0005)//0.0005还是0.005
            {
           
              for (i=0;i<22;i++)
{
                    double d3 = (double)M[i] * (Z1 + Z2) / (2 * B);
                    if (d3 >= -1.0 && d3 <= 1.0)
                    {
if ( Z1 == 50 && Z2 == 50 )
printf("%d", 1);
                        beat = acos(d3);
double beat2= beat*180/3.1415926;
double b2=(double)M[i] * (Z1 + Z2) / (2 * cos(beat2));
                //      if (beat > 11.0 * 3.1415926 / 180 && beat < 15.0 * 3.1415926 / 180)
if ((beat > 11.0 * 3.1415926 / 180 && beat < 15.0 * 3.1415926 / 180) &&(b2>B-1 && b2<B+1) )
                        {
                            printf("%f %f %d %d %f %f \n", A, b2, Z1, Z2, M[i],beat2);
                            n ++;
break;
                        }
                    }
                }
            }
        }
    }
    if (n == 0)
    {
        printf("无符合条件数据\n");
    }
return 0;
}/////////////////////////////////
程序2 这个有结果但结果不对,比如 z1/z2的值应该是在1加减0.005,而这个上都出来1.2或者 1.3甚至2的值也显示到输出了
#include "stdio.h" 
#include <iostream.h>
#include"math.h" 
int main() 
{    double A, B;
int  Z1, Z2;
    double beat;
    int n = 0;
    printf("请输入A:");
   // scanf("%f", &A);
cin>>A;
    printf("请输入B:");
cin>>B;
   // scanf("%f", &B);
    double d1 = A;
int i;
double M[5]={2.5 ,3,3.5,5,6};
    for (Z1 = 1; Z1 <=200; Z1++)
    {
        for (Z2 = 1; Z2 <=200; Z2++)
        {
            double d2 = (Z1 / Z2 ) * 1.0;       
   if (fabs(A - d2 ) < 0.0005 )
            {
           
              for (i=0;i<5;i++)
{
                    double d3 = (double)M[i] * (Z1 + Z2) / (2 * B);
                    if (d3 >= -1.0 && d3 <= 1.0)
                    {                        beat = acos(d3);
                        if (beat > 12.0 * 3.1415926 / 180 && beat < 15.0 * 3.1415926 / 180)
                        {
                            printf("%f %f %d %d %f \n", A, B, Z1, Z2, M[i]);
                            n ++;
break;
                        }
                    }
                }
            }
        }
    }
    if (n == 0)
    {
        printf("无符合条件数据\n");
    }
return 0;
}C:\Documents and Settings\Administrator\桌面\2.bmp