Advertisement
Vic22

X95013 - sorting rationals

Jan 15th, 2020
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.94 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4.  
  5. struct rational{
  6.     int num;
  7.     int den;
  8. };
  9.  
  10. void swap(rational& a, rational& b){
  11.     rational c = a;
  12.     a = b;
  13.     b = c;
  14. }
  15.  
  16. void bubbl(vector<rational>& v){
  17.     int k = v.size()-1;
  18.     bool sorted = false;
  19.     while (not sorted){
  20.         sorted = true;
  21.         for (int i = 0; i < k; ++i){
  22.             if (v[i].num * v[i+1].den > v[i+1].num * v[i].den){
  23.                 swap(v[i], v[i + 1]);
  24.                 sorted = false;
  25.             }
  26.         }
  27.         --k;
  28.     }
  29. }
  30.  
  31. int main() {
  32.     int n;
  33.     int aux = 0;
  34.     while(cin >> n){
  35.         if (aux != 0) cout << endl;
  36.         ++aux;
  37.         vector<rational> v(n);
  38.         for (int i = 0; i < n; ++i){
  39.             cin >> v[i].num >> v[i].den;
  40.         }
  41. //     SORTING
  42.         bubbl(v);
  43.         for (int i = 0; i < n; ++i){
  44.             cout << v[i].num << '/' << v[i].den << endl;
  45.         }
  46.     }
  47. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement