Advertisement
icatalin

Maximizarea unei expresii greedy C++

May 30th, 2018
161
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.55 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. using namespace std;
  4. ifstream f("expresie.in");
  5.  
  6. int a[100],b[100],n,m;
  7. int v[100],k;
  8.  
  9. void citire(int a[], int &m, int b[],int &n)
  10.   {f>>m>>n;
  11.    for(int i=1;i<=m;i++)
  12.      f>>a[i];
  13.    for(int i=1;i<=n;i++)
  14.      f>>b[i];
  15.   }
  16.  
  17. // functie de afisare ale ni vect V cu K elemente
  18. // va fii folosita pentru un vector cu k elemente
  19. //ch va contine o litera care reprezinta denumirea, sau denumirea numelui vectorului care se afiseaza;
  20.  
  21. void afisare(int v[],int k,char ch)
  22.   {cout<<"Elementele vectorului "<<ch<<" sunt: "<<endl;
  23.    for(int i=1;i<=k;i++)
  24.      cout<<v[i]<<" ";
  25.    cout<<endl;
  26.   }
  27.  
  28. void ordonare(int v[], int k)
  29.   {int ok,aux;
  30.    do{
  31.       ok=1;
  32.       for(int i=1;i<=k-1;i++)
  33.         if(v[i]>v[i+1])
  34.          {aux=v[i];v[i]=v[i+1];v[i+1]=aux;ok=0;}
  35.      }while(ok==0);
  36.   }
  37.  
  38. void greedy(int a[],int m,int b[],int n)
  39.   { int e=0,i=1,j;
  40.     //inmultesc perechi de numere negative
  41.     while(a[i]<0 && b[i]<0 && i<=m)
  42.       {cout<<a[i]<<" "<<b[i]<<endl;
  43.        e=e+a[i]*b[i];
  44.        i++;
  45.       }
  46.     //inmultesc perechi de numere pozitive
  47.     i=m;
  48.     j=n;
  49.     while(a[i]>0 && b[j]>0 && i>=1)
  50.       {e=e+a[i]*b[j];
  51.        cout<<a[i]<<" "<<b[j]<<endl;
  52.        i--;j--;
  53.       }
  54.     cout<<endl<<"Valoarea maxima a expresiei E, este: "<<e;
  55.   }
  56.  
  57. int main()
  58.   {citire(a,m,b,n);
  59.    afisare(a,m,'a');
  60.    afisare(b,n,'b');
  61.    ordonare(a,m);
  62.    ordonare(b,n);
  63.    cout<<endl<<"Dupa sortare"<<endl;
  64.    afisare(a,m,'a');
  65.    afisare(b,n,'b');
  66.    cout<<endl;
  67.    greedy(a,m,b,n);
  68.    return 0;
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement