TShiva

Double kill

Nov 17th, 2014
299
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. #include <iostream>
  3. #include <stdlib.h>
  4. #include <stdio.h>
  5. #include <math.h>
  6.  
  7. using namespace std;
  8.  
  9. struct vector{
  10.     double a,b,c;
  11. };
  12.  
  13.  
  14. double len(vector v1){ 
  15.  
  16.     double len=sqrt(v1.a*v1.a+v1.b*v1.b+v1.c*v1.c);
  17.     return len;
  18.  
  19. }
  20.  
  21.  
  22. double scalar(vector v1,vector v2){
  23.  
  24.  
  25.     return (v1.a)*(v2.a)+(v1.b)*(v2.b)+(v1.c)*(v2.c);
  26.  
  27. }
  28.  
  29.  
  30. vector difference(vector v1,vector v2)
  31. {
  32.     vector v3;
  33.     v3.a=(v1.a-v2.a);
  34.     v3.b=(v1.a-v2.b);
  35.     v3.c=(v1.c-v2.c);
  36.     return v3;
  37. }
  38.  
  39. double cos(vector v1,vector v2){
  40.     if( abs(len(v1)*len(v2))<1e-9) { return 0; }
  41.  
  42.     return (scalar(v1,v2)/(len(v1)*len(v2)));
  43.  
  44. }
  45.  
  46.  
  47. bool collinearity(double cos){
  48.     return (abs(cos-1)<1e-9);
  49. }
  50.  
  51.  
  52. void insertv(vector *m,int N)
  53. {
  54.     cout << " Insert element of array " <<endl;
  55.     for     (int i=0;i<N;i++) {
  56.         cin >> m[i].a >> m[i].b >> m[i].c;
  57.  
  58.     }
  59.  
  60. }
  61.  
  62. void printv(vector *m,int N)
  63. {
  64.     for (int i=0;i<N;i++)
  65.         cout << m[i].a <<" " <<m[i].b<<" "<<m[i].c <<endl;
  66.  
  67.     cout << endl;
  68.     //      system("pause");
  69. }
  70.  
  71.  
  72.  
  73.  
  74.  
  75. void insertmas(int *mas,int N)
  76. {
  77.     cout << " Insert element of array n " <<endl;
  78.     for     (int i=0;i<N;i++) {
  79.         cin >> mas[i];
  80.  
  81.     }
  82.  
  83. }
  84.  
  85. void printmas(int *mas,int N)
  86. {
  87.     for (int i=0;i<N;i++) { cout <<" "<< mas[i];}
  88.  
  89.     cout << endl;
  90.     //      system("pause");
  91. }
  92.  
  93.  
  94.  
  95.  
  96.  
  97. double max_len(vector *m,int N){
  98.     if(N <= 0) { return 0; }
  99.  
  100.     double max = len(m[0]);
  101.  
  102.     for (int i=1;i<N;i++)
  103.         if (len(m[i]) > max)
  104.         {   max=len(m[i]);
  105.     }
  106.     return max;
  107. }
  108.  
  109.  
  110. int search(vector *m,int N){
  111.     vector vc;
  112.     cout << endl;
  113.     cout << "Insert a,b,c for your vector which you search";
  114.     cin >> vc.a>>vc.b>>vc.c;
  115.     for (int i=0;i<N;i++)
  116.     {
  117.         if ( (abs(m[i].a-vc.a)<1e-9) && (abs(m[i].b-vc.b)<1e-9) && (abs(m[i].c-vc.c)<1e-9) )
  118.         {return i;
  119.         }
  120.     }
  121.     return -1;
  122.  
  123. }
  124.  
  125. vector sum(vector *m,int N){
  126.     vector sum1;
  127.     sum1.a=0;
  128.     sum1.b=0;
  129.     sum1.c=0;
  130.     for (int i=0;i<N;i++)
  131.     {
  132.         sum1.a+=m[i].a;
  133.         sum1.b+=m[i].b;
  134.         sum1.c+=m[i].c;
  135.     }
  136.     return sum1;
  137. }
  138.  
  139.  
  140. vector linear_comb(vector *m,int *mas,int N)
  141. {
  142.     vector lin_comb;
  143.     lin_comb.a=0;
  144.     lin_comb.b=0;
  145.     lin_comb.c=0;
  146.  
  147.     for (int i=0;i<N;i++)
  148.     {
  149.         lin_comb.a+=m[i].a*mas[i];
  150.         lin_comb.b+=m[i].b*mas[i];
  151.         lin_comb.c+=m[i].c*mas[i];
  152.     }
  153.  
  154.     return lin_comb;
  155. }
  156.  
  157. int perpendicularity(vector *m,int N,vector v1)
  158. {
  159.     int count=0;
  160.     for (int i=0;i<N;i++)
  161.         if (abs(cos(m[i],v1))<1e-9){count++;}
  162.    
  163.     return count;
  164. }
  165.  
  166. void main()
  167. {  
  168.     int N;
  169.  
  170.  
  171.     vector v1,v2;
  172.  
  173.     vector v3;
  174.     cout << " Insert a,b,c for v1 ";
  175.     cin >> v1.a>>v1.b>>v1.c;
  176.     /*cout << len(v1);
  177.  
  178.     cout << " Insert a,b,c for v2 ";
  179.     cin >> v2.a>>v2.b>>v2.c;
  180.     cout << scalar(v1,v2);
  181.  
  182.     v3=difference(v1,v2);
  183.     cout << "  Difference v1 - v2  " << v3.a<<" " << v3.b<<" " << v3.c<<endl;
  184.  
  185.     cout <<"collinearity "<<collinearity(cos(v1,v2));
  186.  
  187.  
  188.     */
  189.     cout << " Enter elements of array ";
  190.     cin >> N;
  191.     vector *m = new vector[N];
  192.     int *mas = new int[N];
  193.     insertv(m,N);
  194.     cout << endl;
  195.     printv(m,N);
  196.         insertmas(mas,N);
  197.     cout << endl;
  198.     printmas(mas,N);
  199.  
  200.     cout <<"Max_len "<< max_len(m,N);
  201.     cout<<endl;
  202.     cout<<" Index necessery element "<<search(m,N);
  203.     cout<<endl;
  204.     vector summy=sum(m,N);
  205.  
  206.     cout<<summy.a<<" "<<summy.b<<" "<<summy.c;
  207.     cout<<endl;
  208.     vector linearry=linear_comb(m,mas,N);
  209.     cout<<linearry.a<<" "<<linearry.b<<" "<<linearry.c;
  210.     cout<<endl;
  211.  
  212.     cout<<"perpendicularity"<<perpendicularity(m,N,v1);
  213. delete[]m;
  214. delete[]mas;
  215.     system("pause");
  216. }
RAW Paste Data