ut200910_C++.cpp
  1  #include <iostream>
  2  #include <fstream>
  3  #include <vector>
  4  #include <algorithm>
  5  #include <iomanip>
  6  
  7  using namespace std;
  8  
  9  struct jarmu
 10  {
 11      int o, p, mp, t;        // óra, perc, másodperc és áthaladási idõ
 12      char v;                 // város, AHONNAN jön
 13  };
 14  
 15  void F1(vector<jarmu> &f)
 16  {
 17      cout << "1. feladat - adatok beolvasása..." << endl;
 18      ifstream fbe;
 19      string jarmuvek_szama;
 20      fbe.open("forgalom.txt");
 21      getline(fbe,jarmuvek_szama);
 22      jarmu temp;
 23      while(fbe>>temp.o&&fbe>>temp.p&&fbe>>temp.mp&&fbe>>temp.t&&fbe>>temp.v)
 24      {
 25          f.push_back(temp);
 26      }
 27      fbe.close();
 28      /*
 29      for(auto elem:f)
 30      {
 31          cout << elem.o << " " << elem.p << " " << elem.mp << " " << elem.t << " " << elem.v << endl;
 32      }
 33      */
 34      cout << "----------------------------------------------------------------------------------" << endl;
 35  }
 36  
 37  void F2(vector<jarmu> f)
 38  {
 39      cout << "2. feladat" << endl;
 40      int n;
 41      cout << "Kérem egy jármû sorszámát: ";
 42      cin >> n;
 43      char v = f[n-1].v=='A'? 'F': 'A';
 44      printf("A(z) %d. jármû %c város felé haladt.\n",n,v);
 45      cout << "----------------------------------------------------------------------------------" << endl;
 46  }
 47  
 48  int atvalt(vector<jarmu> u, int index)
 49  {
 50      return u[index].o*3600+u[index].p*60+u[index].mp;
 51  }
 52  
 53  void F3(vector<jarmu> f)
 54  {
 55  
 56      cout << "3. feladat" << endl;
 57      vector<jarmu> utolsok;
 58      int i=f.size()-1, n=0;
 59      while(n<2)
 60      {
 61          if(f[i].v=='A')
 62          {
 63              n++;
 64              utolsok.push_back(f[i]);
 65          }
 66          i--;
 67      }
 68      if(n==2)
 69      {
 70          cout << "A két utolsó F-be tartó különbsége: " << atvalt(utolsok,0)+utolsok[0].t-(atvalt(utolsok,1)+utolsok[1].t) << endl;
 71      }
 72      else
 73      {
 74          cout << "Sajnos nincs két F-be tartó jármû!" << endl;
 75      }
 76      cout << "----------------------------------------------------------------------------------" << endl;
 77  }
 78  
 79  void F4(vector<jarmu> f)
 80  {
 81      cout << "4. feladat" << endl;
 82  
 83      vector<vector<int>> matrix(24, vector<int>(2));
 84  
 85      for(auto elem:f)
 86      {
 87          if(elem.v=='A') matrix[elem.o-1][0]++;
 88          else matrix[elem.o-1][1]++;
 89      }
 90  
 91      for(int i=0;i<24;i++)
 92      {
 93          if(matrix[i][0]+matrix[i][1]>0)
 94          {
 95              cout << i+1 << " ";
 96              for(int j=0;j<2;j++)
 97                  if(matrix[i][j]!=0) cout << matrix[i][j] << " ";
 98              cout << endl;
 99          }
100      }
101      cout << "----------------------------------------------------------------------------------" << endl;
102  }
103  
104  bool t_szerint(const jarmu &a, const jarmu &b)
105  {
106      return a.t < b.t; // itt adjuk meg a rendezési szempontot
107  }
108  void F5(vector<jarmu> f)
109  {
110      cout << "5. feladat" << endl;
111      vector<jarmu> temp;
112      temp=f;
113      sort(temp.begin(),temp.end(),t_szerint);
114  
115      cout << fixed;
116      for(int i=0;i<10;i++)
117      {
118          cout << temp[i].o << " " << temp[i].p << " " << temp[i].mp << " " << temp[i].v << " " << setprecision(1) << (float) 1000/temp[i].t << " " << endl;
119      }
120  
121      cout << "----------------------------------------------------------------------------------" << endl;
122  }
123  
124  void F6(vector<jarmu> f)
125  {
126      cout << "6. feladat" << endl;
127      ofstream fki;
128      fki.open("alsoC++.txt");
129      int kilep, elozo=0;
130      for(int i=0;i<f.size();i++)
131      {
132          if(f[i].v=='F')
133          {
134              kilep=max(elozo,atvalt(f,i)+f[i].t);
135              fki << kilep/3600 << " " << kilep%3600/60 << " " << kilep%3600%60 << endl;
136              elozo=kilep;
137          }
138      }
139      fki.close();
140  }
141  
142  int main()
143  {
144      setlocale(LC_ALL,"");
145      vector<jarmu> forgalom;
146      F1(forgalom);
147      F2(forgalom);
148      F3(forgalom);
149      F4(forgalom);
150      F5(forgalom);
151      F6(forgalom);
152      return 0;
153  }
154