Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdafx.h>
- #include <conio.h>
- #include <math.h>
- #include <stdio.h>
- using namespace std;
- int Assemb(int z1, int z2, int z3, int z4)
- {
- double P=0;
- double U1h=1-((double)z3*(double)z4)/((double)z2);
- double k=3;
- double B=0.1;
- int Pr=B*10000;
- while ((Pr%10000!=0)&&(P<1000))
- {
- P++;
- B=(1+P*k)*(double)z1*U1h/k;
- Pr=B*10000;
- }
- if (Pr%10000==0)
- return 0;
- else return 1;
- }
- int Coax(int z1, int z2, int z3, int z4)
- {
- double rw1=(double)z1/2, rw2=(double)z2/2, rw3=(double)z3/2, rw4=(double)z4/2;
- double a=rw1+rw3, b=rw4+rw2;
- if ((a==b)&&(z1>17)&&(z3>17))
- return 0;
- else return 1;
- }
- int Neigh(int z1, int z2, int z3)
- {
- double k=3;
- if (sin(3.1415926/k)>(((double)z2+2)/((double)z1+(double)z3)))
- return 0;
- else return 1;
- }
- int Precis(int z1, int z2, int z3, int z4)
- {
- double U1h=1-((double)z3*(double)z4)/((double)z1*(double)z2);
- if((13*0.95<abs(U1h))&&(abs(U1h)<13*1.05))
- return 0;
- else return 1;
- }
- int main(array<std::String^>^args)
- {
- int z1=17, z2=18, z3=18, z4=18;
- int Z1=0, Z2=0, Z3=0, Z4=800;
- int fl=0, proc=0;
- printf("\rIn progress, %d%%", proc);
- while(z4<100)
- {
- while(Assemb(z1, z2, z3, z4)||Coax(z1, z2, z3)||Neigh(z1, z2, z3)||Precis(z1, z2, z3, z4)||f1)
- {
- f1=0;
- if(z1<100)
- {
- z1++;
- continue;
- }
- if(z2<100)
- {
- z1=17;
- z2++;
- continue;
- }
- if(z3<100)
- {
- z1=17;
- z2=20;
- z3++;
- continue;
- }
- if(z4<100)
- {
- z1=17;
- z2=20;
- z3=17;
- z4++;
- proc++;
- printf("\rIn progress, %d%%", proc);
- continue;
- }
- break;
- }
- if(z4+z3+z2<Z2+Z3+Z4)
- {
- Z1=z1; Z2=z2; Z3=z3; Z4=z4;
- }
- fl=1;
- }
- double U1h=1-((double)Z3*(double)Z4)/((double)Z1*(double)Z2);
- printf("\nNumbers of teeth: \n z1 = %u; \n z3 = %u; \n z4 = %u; \n U1h = %f;", Z1, Z2, Z3, Z4, U1h);
- getch();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement