Advertisement
Guest User

Untitled

a guest
Jan 17th, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 9.27 KB | None | 0 0
  1. #include <fstream>
  2. #include <string>
  3. #include <stdio.h>
  4. #include <math.h>
  5. #include <direct.h>
  6.  
  7. using namespace std;
  8.  
  9. vector <string> WczytywanieZPliku(string nazwaPliku) //funkcja wczytujaca linijki tekstu z pliku
  10. {
  11.     string linijka;
  12.     vector <string> linijki;
  13.     fstream myfile(nazwaPliku.c_str());
  14.     if(myfile.is_open())
  15.     {
  16.         while(getline(myfile,linijka))
  17.         {
  18.             linijki.push_back(linijka);
  19.         }
  20.         myfile.close();
  21.     }
  22.     else
  23.     {
  24.         cout<<"Nie mozna otworzyc pliku!"<<endl;
  25.     }
  26.     return linijki;
  27. }
  28.  
  29. vector <string> Segmenty(string linijka) //funkcja dzielaca linijki tekstu na segmenty z poszczegonymi informacjami
  30. {
  31.     int poczatek=0;
  32.     vector <string> podciagi;
  33.     string segment="";
  34.     for(int i=0;i<=linijka.length();i++)
  35.     {
  36.         if(linijka[i]==';' || i==linijka.length())
  37.         {
  38.             segment=linijka.substr(poczatek,i-poczatek);
  39.             podciagi.push_back(segment);
  40.             poczatek=i+1;
  41.         }
  42.     }
  43.     return podciagi;
  44. }
  45.  
  46. vector <string> WczytanieNaSegmenty(string nazwaPliku) //funkcja zmieniajaca wczytane informacje na wektor z kazda informacja
  47. {
  48.     vector <string> liczby;
  49.     vector <string> calosc;
  50.     vector <string> linijki=WczytywanieZPliku(nazwaPliku);
  51.     for(int i=0;i<linijki.size();i++)
  52.     {
  53.         liczby=(Segmenty(linijki[i]));
  54.         for (int j=0;j<liczby.size();j++)
  55.         {
  56.             calosc.push_back(liczby[j]);
  57.         }
  58.     }
  59.     return calosc;
  60. }
  61.  
  62. vector <double> SegmentyConfig(string linijka) //funkcja dzielaca linijki tekstu na segmenty i zapisuje je w postaci liczb, ktore beda dzielily na inne dlugi
  63. {
  64.     int poczatek=0;
  65.     vector <double> podciagi;
  66.     string segment="";
  67.     for(int i=0;i<=linijka.length();i++)
  68.     {
  69.         if(linijka[i]==';' || i==linijka.length())
  70.         {
  71.             segment=linijka.substr(poczatek,i-poczatek);
  72.             podciagi.push_back(stod(segment));
  73.             poczatek=i+1;
  74.         }
  75.     }
  76.     return podciagi;
  77. }
  78.  
  79. vector <double> WczytanieNaSegmentyConfig(string nazwaPliku) //funkcja zmieniajaca wczytany tekst na pojedyncze liczby i zapisujaca je w wektorze
  80. {
  81.     vector <double> liczby;
  82.     vector <double> calosc;
  83.     vector <string> linijki=WczytywanieZPliku(nazwaPliku);
  84.     for(int i=0;i<linijki.size();i++)
  85.     {
  86.         liczby=(SegmentyConfig(linijki[i]));
  87.         for (int j=0;j<liczby.size();j++)
  88.         {
  89.             calosc.push_back(liczby[j]);
  90.         }
  91.     }
  92.     return calosc;
  93. }
  94.  
  95. vector <double> SortowanaSegmentarycznosc(vector <double> dane) //funkcja sortujaca w kolejnosci rosnacej progi zadluzenia
  96. {
  97.     vector <double> noweDane;
  98.     for (int i=0; i<dane.size()-1; i++)
  99.     {
  100.         for (int j=0; j<dane.size()-1; j++)
  101.         {
  102.             if (dane[j]>dane[j+1])
  103.                 {
  104.                 swap(dane[j], dane[j+1]);
  105.                 }
  106.         }
  107.     }
  108.     for (int i = 0; i<dane.size(); i++)
  109.     {
  110.         noweDane.push_back(dane[i]);
  111.     }
  112.     return noweDane;
  113.  
  114. }
  115.  
  116.  
  117. void PokazWektor(vector <string> dane) //funkcja pogladowa pokazujaca wektor-slowa
  118. {
  119.     for(int i=0;i<dane.size();i++)
  120.     {
  121.         cout<<"["<<i<<"]: "<<dane[i]<<endl;
  122.     }
  123. }
  124.  
  125. void PokazWektor2(vector <double> dane) //funkcja pogladowa pokazujaca wektor-liczby
  126. {
  127.     for(int i=0;i<dane.size();i++)
  128.     {
  129.         cout<<"["<<i<<"]: "<<dane[i]<<endl;
  130.     }
  131. }
  132.  
  133. void PokazWektor3(vector <int> dane) //funkcja pogladowa pokazujaca wektor-liczby
  134. {
  135.     for(int i=0;i<dane.size();i++)
  136.     {
  137.         cout<<"["<<i<<"]: "<<dane[i]<<endl;
  138.     }
  139. }
  140.  
  141. vector <double> WartoscDlugu (vector <string> dane) //funkcja okreslajaca podzial dluznikow na grupy ze wzgledu na zadluzenie
  142. {
  143.     vector <double> wartosci=SortowanaSegmentarycznosc(WczytanieNaSegmentyConfig("config.txt"));
  144.     vector <double> h;
  145.     for (int i=1;i<dane.size();i++)
  146.     {
  147.         for(int j=4;j<(4+(6*(dane.size())));j+=(6*i))
  148.         {
  149.             if (stod(WczytanieNaSegmenty("nazwiska.txt")[j])<wartosci[0])
  150.             {
  151.                 h.push_back(1);
  152.             }
  153.             else if (stod(WczytanieNaSegmenty("nazwiska.txt")[j])>=wartosci[0] && stod(WczytanieNaSegmenty("nazwiska.txt")[j])<wartosci[1])
  154.             {
  155.                 h.push_back(2);
  156.             }
  157.             else if (stod(WczytanieNaSegmenty("nazwiska.txt")[j])>=wartosci[1] && stod(WczytanieNaSegmenty("nazwiska.txt")[j])<wartosci[2])
  158.             {
  159.                 h.push_back(3);
  160.             }
  161.             else
  162.             {
  163.                 h.push_back(4);
  164.             }
  165.         }
  166.     }
  167.     return h;
  168. }
  169.  
  170.  
  171. vector <string> Nazwiskaa ()
  172. {
  173.     vector <string> nazwiskaa;
  174.     vector <string> dane=WczytanieNaSegmenty("nazwiska.txt");
  175.     vector <string> dane2=WczytywanieZPliku("nazwiska.txt");
  176.         for(int j=0;j<dane2.size()*6;j+=6)
  177.         {
  178.             nazwiskaa.push_back(dane[j]+" "+dane[j+1]);
  179.         }
  180.     return nazwiskaa;
  181. }
  182.  
  183. vector <string> Mieszkanie ()
  184. {
  185.     vector <string> mieszkanie;
  186.     vector <string> dane=WczytanieNaSegmenty("nazwiska.txt");
  187.     vector <string> dane2=WczytywanieZPliku("nazwiska.txt");
  188.         for(int j=3;j<dane2.size()*6;j+=6)
  189.         {
  190.             mieszkanie.push_back(dane[j]);
  191.         }
  192.     return mieszkanie;
  193. }
  194.  
  195. vector <string> Data ()
  196. {
  197.     vector <string> datta;
  198.     vector <string> dane=WczytanieNaSegmenty("nazwiska.txt");
  199.     vector <string> dane2=WczytywanieZPliku("nazwiska.txt");
  200.         for(int j=5;j<dane2.size()*6;j+=6)
  201.         {
  202.             datta.push_back(dane[j]);
  203.         }
  204.     return datta;
  205. }
  206.  
  207. vector <string> Pesel ()
  208. {
  209.     vector <string> pesel;
  210.     vector <string> dane=WczytanieNaSegmenty("nazwiska.txt");
  211.     vector <string> dane2=WczytywanieZPliku("nazwiska.txt");
  212.         for(int j=2;j<dane2.size()*6;j+=6)
  213.         {
  214.             pesel.push_back(dane[j]);
  215.         }
  216.     return pesel;
  217. }
  218.  
  219. vector <string> Dlug ()
  220. {
  221.     vector <string> dlug;
  222.     vector <string> dane=WczytanieNaSegmenty("nazwiska.txt");
  223.     vector <string> dane2=WczytywanieZPliku("nazwiska.txt");
  224.         for(int j=4;j<dane2.size()*6;j+=6)
  225.         {
  226.             dlug.push_back(dane[j]);
  227.         }
  228.     return dlug;
  229. }
  230.  
  231.  
  232. string StworzList(int nr) //funkcja tworzaca list do dluznika
  233. {
  234.     string pesel=Pesel()[nr];
  235.     string stworzonyList = ((pesel[pesel.size()-2] % 2 == 0) ? "Szanowna Pani " : "Szanowny Panie ") + Nazwiskaa()[nr] + "\n\n" +
  236.                             "Uprzejmie informujemy, iz do dnia dzisiejszego nie otrzymalismy oplaty zadluzenia z dnia: " + Data()[nr] +
  237.                             ", ktore wynosi:  " + Dlug()[nr] + "zl. " +
  238.                             "Jesli nie ureguluje " + ((pesel[pesel.size()-2] % 2== 0) ? "Pani" : "Pan") + " powyzszego zobowiazania to " +
  239.                             "odsetki beda rosnac, a po roku od momentu otrzymania tego listu sprawa wkroczy na droge sadowa. " + "\n" +
  240.                             "Prosimy o jak najszybsze wplacenie zaleglego zobowiazania.";
  241.     return stworzonyList;
  242. }
  243.  
  244. void TworzeniePlikow(string plikGlowny) //funkcja tworzaca pliki z listami do dluznikow zaleznie od progow zadluzenia zapisuje pliki do poszczegolnych folderow
  245. {
  246.     vector <double> wartosci=SortowanaSegmentarycznosc(WczytanieNaSegmentyConfig("config.txt"));
  247.     vector <string> glowny=WczytywanieZPliku(plikGlowny);
  248.     mkdir("Dluznicy");
  249.     mkdir("Dluznicy/Pierwszy Przedzial");
  250.     mkdir("Dluznicy/Drugi Przedzial");
  251.     mkdir("Dluznicy/Trzeci Przedzial");
  252.     mkdir("Dluznicy/Czwarty Przedzial");
  253.     for(int i=0;i<glowny.size();i++)
  254.     {
  255.         string filename = Nazwiskaa()[i];
  256.         if(WartoscDlugu(glowny)[i]==1)
  257.         {
  258.             ofstream outfile("Dluznicy/Pierwszy Przedzial/"+filename+".txt");
  259.  
  260.             if(outfile)
  261.             {
  262.                 outfile <<  StworzList(i) << endl;
  263.             }
  264.             else
  265.             {
  266.             cout << "BLAD: nie mozna otworzyc pliku." << endl;
  267.             }
  268.         }
  269.         else if(WartoscDlugu(glowny)[i]==2)
  270.         {
  271.             ofstream outfile("Dluznicy/Drugi Przedzial/"+filename+".txt");
  272.             if(outfile)
  273.             {
  274.                outfile <<  StworzList(i) << endl;
  275.             }
  276.             else
  277.             {
  278.             cout << "BLAD: nie mozna otworzyc pliku." << endl;
  279.             }
  280.         }
  281.         else if(WartoscDlugu(glowny)[i]==3)
  282.         {
  283.             string filename = Nazwiskaa()[i];
  284.             ofstream outfile("Dluznicy/Trzeci Przedzial/"+filename+".txt");
  285.             if(outfile)
  286.             {
  287.                outfile <<  StworzList(i) << endl;
  288.             }
  289.             else
  290.             {
  291.             cout << "BLAD: nie mozna otworzyc pliku." << endl;
  292.             }
  293.         }
  294.         else
  295.         {
  296.             ofstream outfile("Dluznicy/Czwarty Przedzial/"+filename+".txt");
  297.             if(outfile)
  298.             {
  299.                 outfile <<  StworzList(i) << endl;
  300.             }
  301.             else
  302.             {
  303.             cout << "BLAD: nie mozna otworzyc pliku." << endl;
  304.             }
  305.         }
  306.     }
  307. }
  308.  
  309.  
  310. int main()
  311. {
  312.     TworzeniePlikow("nazwiska.txt");
  313.     cout<<"Pliki zostaly zapisane w folderze /Dluznicy/ w poszczegolnych podfolderach zaleznych od ustaonych progow w pliku /config.txt/"<<"\n"
  314.     <<"Zadanie zrobione przez: Jan Rucinski, Patryk Dyl, Mikolaj Orzechowski";
  315.     return 0;
  316. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement