Advertisement
Guest User

Untitled

a guest
Nov 24th, 2014
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.86 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. #include <fstream>
  4. #include <vector>
  5. using namespace std;
  6.  
  7. ifstream wejscie;
  8. ofstream wyjscie;
  9. int osady,przewoznicy,monety;
  10. int czas,koszt,cel;
  11. int przewoznik[300][5];
  12. int rear,head,temp1,temp3,temp4;
  13. int temp2=1; //zbieranie celow podrozy
  14.  
  15. typedef struct Opcja
  16. {
  17.     int nr=0; // numer przewoznika
  18.     int skad=0;
  19.     int dokad=0;
  20.     int cena=0;
  21.     int godziny=0;
  22.     int dostep=-1;
  23.     vector <int> droga;
  24. }opcja;
  25. vector <int> sciezka;
  26. void wyzwalacz(opcja tablica[])
  27. {
  28.     for(int i=0;i<przewoznicy;i++)
  29.     {
  30.         if(tablica[i].skad==temp2 && tablica[i].dokad==osady && tablica[i].dostep==-1)
  31.         {
  32.             tablica[i].dostep=0;
  33.             temp3=tablica[i].nr;
  34.             head=temp3;
  35.             tablica[head].droga.push_back(head);
  36.             return;
  37.         }
  38.         if(tablica[i].skad==temp2 && tablica[i].dostep==-1)
  39.         {
  40.             if(temp2==1)
  41.             {
  42.                 rear = tablica[i].nr;
  43.             }
  44.             temp2=tablica[i].dokad;
  45.             temp1=tablica[i].nr;
  46.             sciezka.push_back(temp1);
  47.             cout<<"znalazlem cel u przewoznika nr = "<<temp1<<" plyniemy do = "<<temp2<<endl;
  48.             wyzwalacz(tablica);
  49.             temp3 = tablica[i].nr;
  50.             //temp4 = sciezka[sciezka.size()-1];
  51.             //sciezka.pop_back();
  52.             tablica[head].droga.push_back(temp3);
  53.             temp2=tablica[i].dokad;
  54.             //tablica[head].droga.push_back(temp4);
  55.             if(tablica[i].skad==tablica[rear].dokad)
  56.             {
  57.                 tablica[head].droga.push_back(rear);
  58.             }
  59.             //return;
  60.         }
  61.     }
  62. }
  63. void wypisanie(opcja tablica[])
  64. {
  65.     int licznik_czasu=0;
  66.     int pomocnik_czasu=0;
  67.     int licznik_monet=0;
  68.     int pomocnik_monet=0;
  69.     for(int j=0;j<przewoznicy;j++)
  70.     {
  71.         if(tablica[j].droga.size()!=0)
  72.         {
  73.             for(int k=tablica[j].droga.size()-1;k>=0;k--)
  74.             {
  75.                 pomocnik_monet = tablica[tablica[j].droga[k]].cena;
  76.                 licznik_monet+=pomocnik_monet;
  77.                 pomocnik_czasu = tablica[tablica[j].droga[k]].godziny;
  78.                 licznik_czasu+=pomocnik_czasu;
  79.                 cout<<tablica[j].droga[k]<<"->";
  80.  
  81.             }
  82.             cout<<"\nlicznik monet ="<<licznik_monet;
  83.             cout<<" licznik czasu ="<<licznik_czasu<<endl;
  84.         }
  85.         licznik_czasu=0;
  86.         licznik_monet=0;
  87.     }
  88. }
  89. void pomocnik(opcja tablica[])
  90. {
  91.     int licznik_czasu=0;
  92.     int pomocnik_czasu=0;
  93.     int licznik_monet=0;
  94.     int pomocnik_monet=0;
  95.     int wynik_czasu=-1;
  96.     int wynik_monet=monety+1;
  97.     for(int j=0;j<przewoznicy;j++)
  98.     {
  99.         if(tablica[j].droga.size()!=0)
  100.         {
  101.             for(int k=0;k<tablica[j].droga.size();k++)
  102.             {
  103.                 pomocnik_monet = tablica[tablica[j].droga[k]].cena;
  104.                 licznik_monet+=pomocnik_monet;
  105.                 pomocnik_czasu = tablica[tablica[j].droga[k]].godziny;
  106.                 licznik_czasu+=pomocnik_czasu;
  107.                 cout<<tablica[j].droga[k]<<"->";
  108.             }
  109.             if(wynik_monet>licznik_monet)
  110.             {
  111.                 wynik_czasu=licznik_czasu;
  112.                 wynik_monet=licznik_monet;
  113.             }
  114.             cout<<"\nlicznik monet ="<<licznik_monet;
  115.             cout<<" licznik czasu ="<<licznik_czasu<<endl;
  116.         }
  117.         licznik_czasu=0;
  118.         licznik_monet=0;
  119.     }
  120.     cout<<"czas = "<<wynik_czasu<<" monety = "<<wynik_monet<<endl;
  121. }
  122. int main()
  123. {
  124.     wejscie.open("wejscie1.txt");
  125.     wejscie>>osady>>przewoznicy>>monety;
  126.     opcja n[przewoznicy];
  127.     for(int i=0;i<przewoznicy;i++)
  128.     {
  129.         //n[i] = new opcja;
  130.         n[i].nr=i;
  131.         wejscie>>n[i].skad>>n[i].dokad>>n[i].godziny>>n[i].cena;
  132.     }
  133.     wyzwalacz(n);
  134.     pomocnik(n);
  135.     //wypisanie(n);
  136.     //cout<<endl<<czas<<" "<<koszt<<endl;
  137.     return 0;
  138.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement