Advertisement
Guest User

Untitled

a guest
May 19th, 2019
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.95 KB | None | 0 0
  1.  
  2. #include <iostream>
  3. #include <cstring>
  4. #include <fstream>
  5. #include <string>
  6.  
  7. using namespace std;
  8.  
  9.  
  10. struct dane_osobowe {
  11. string imie;
  12. string nazwisko;
  13. string wzrost;
  14. string dzien_urodzenia;
  15. string miesiac_urodzenia;
  16. string rok_urodzenia;
  17. char plec='S';
  18.  
  19. void wyswietl();
  20. };
  21.  
  22. void dane_osobowe::wyswietl() {
  23. cout << endl << "Imie: " << imie << endl;
  24. cout << "Nazwisko: " << nazwisko << endl;
  25. cout << "Wzrost: " << wzrost << " cm." << endl;
  26. cout << "Data urodzenia: " << dzien_urodzenia << "." << miesiac_urodzenia << "." << rok_urodzenia << "r" << endl;
  27. if(plec=='m' || plec=='M'){
  28. cout << "Plec: Mezczyzna" << endl;
  29. } else if(plec=='k' || plec=='K') {
  30. cout << "Plec: Kobieta" << endl;
  31. }
  32. else
  33. cout << "Plec: Nieznana" << endl;
  34. }
  35.  
  36.  
  37. struct firma {
  38. string nazwa;
  39. string lokalizacja;
  40. string opis;
  41. dane_osobowe prezes;
  42.  
  43. void wyswietl();
  44. };
  45.  
  46. void firma::wyswietl() {
  47. cout << endl;
  48. cout << "Nazwa firmy: " << nazwa << endl;
  49. cout << "Lokalizacja: " << lokalizacja << endl;
  50. cout << opis << endl;
  51. cout << "Dane prezesa: ";
  52. prezes.wyswietl();
  53. }
  54.  
  55.  
  56. string *wczytaj(string &nazwa, int &n){
  57. fstream plik;
  58. plik.open(nazwa, ios::in);
  59. string linia;
  60. if(plik.good()){
  61.  
  62. while(getline(plik,linia)){
  63. n++;
  64. }
  65.  
  66.  
  67. plik.clear();
  68. plik.seekg(0, ios::beg);
  69.  
  70. string *tab=new string[n];
  71.  
  72. for(int i=0; i<n; i++){
  73. getline(plik,tab[i]);
  74. }
  75.  
  76.  
  77.  
  78. plik.close();
  79. return tab;
  80. } else {
  81. cout << "problem" << endl;
  82. return 0;
  83. }
  84.  
  85. }
  86.  
  87. firma *nazwa(string *baza1, string *baza2, int n, int n2){
  88. string linia =".";
  89. string dana;
  90. size_t pozycja = 0;
  91. size_t pozycja2=0;
  92. firma *firmy = new firma[n];
  93. for(int i=0; i<n; i++){
  94. unsigned j=0;
  95. pozycja=baza1[i].find(linia);
  96. for(; j<pozycja; j++){
  97. int k=0;
  98. dana[k] = baza1[i][j];
  99. k++;
  100. }
  101. firmy[i].nazwa = dana;
  102. pozycja=baza1[i].find(linia,pozycja+1);
  103. for(; j<pozycja; j++){
  104. int k=0;
  105. dana[k] = baza1[i][j];
  106. k++;
  107. }
  108. firmy[i].lokalizacja = dana;
  109. pozycja=baza1[i].find(linia,pozycja+1);
  110. for(; j<pozycja; j++){
  111. int k=0;
  112. dana[k] = baza1[i][j];
  113. k++;
  114. }
  115. firmy[i].opis = dana;
  116. pozycja=baza1[i].find(linia,pozycja+1);
  117. size_t rozmiar = sizeof(baza1[i]);
  118. size_t rozmiar_nazwiska = rozmiar-pozycja-1;
  119.  
  120. string szukane_nazwisko1;
  121.  
  122. for(unsigned r=pozycja; r<rozmiar_nazwiska; r++){
  123. szukane_nazwisko1[r] = baza1[i][pozycja+r];
  124. }
  125.  
  126.  
  127.  
  128.  
  129.  
  130. string prezes;
  131.  
  132. for(int l=0; l<n2; l++){
  133. if(baza2[l].find(szukane_nazwisko1)!=string::npos){
  134. prezes = baza2[l];
  135. }
  136. }
  137.  
  138. for(int z=0; z<n2; z++){
  139.  
  140. pozycja2=baza2[z].find(linia);
  141. for(unsigned l=0; l<pozycja2; l++){
  142. int k=0;
  143. dana[k] = baza2[i][l];
  144. k++;
  145. }
  146. firmy[i].prezes.imie = dana;
  147. pozycja2=baza2[z].find(linia,pozycja2+1);
  148. for(unsigned l; l<pozycja2; l++){
  149. int k=0;
  150. dana[k] = baza2[i][l];
  151. k++;
  152. }
  153. firmy[i].prezes.imie = dana;
  154. pozycja2=baza2[z].find(linia,pozycja2+1);
  155. for(unsigned l; l<pozycja2; l++){
  156. int k=0;
  157. dana[k] = baza2[i][l];
  158. k++;
  159. }
  160. firmy[i].prezes.imie = dana;
  161. pozycja2=baza2[z].find(linia,pozycja2+1);
  162. for(unsigned l; l<pozycja2; l++){
  163. int k=0;
  164. dana[k] = baza2[i][l];
  165. k++;
  166. }
  167. firmy[i].prezes.imie = dana;
  168. pozycja2=baza2[z].find(linia,pozycja2+1);
  169. for(unsigned l; l<pozycja2; l++){
  170. int k=0;
  171. dana[k] = baza2[i][l];
  172. k++;
  173. }
  174. firmy[i].prezes.imie = dana;
  175. pozycja2=baza2[z].find(linia,pozycja2+1);
  176. for(unsigned l; l<pozycja2; l++){
  177. int k=0;
  178. dana[k] = baza2[i][l];
  179. k++;
  180. }
  181. firmy[i].prezes.imie = dana;
  182. pozycja2=baza2[z].find(linia,pozycja2+1);
  183. for(unsigned l; l<pozycja2; l++){
  184. int k=0;
  185. dana[k] = baza2[i][l];
  186. k++;
  187. }
  188. firmy[i].prezes.imie = dana;
  189. }
  190.  
  191.  
  192.  
  193.  
  194.  
  195. }
  196.  
  197. return firmy;
  198. }
  199.  
  200. void wypisz(const string *baza, int n){
  201. cout << endl << endl;
  202. for(int i=0; i<n; i++){
  203. cout << baza[i] << endl;
  204. }
  205. cout << endl;
  206. }
  207.  
  208.  
  209.  
  210.  
  211.  
  212.  
  213.  
  214.  
  215. void zapisz(string *baza, int n, string nowa_nazwa){
  216. fstream plik;
  217. plik.open(nowa_nazwa, ios::out);
  218.  
  219. if(plik.good()){
  220.  
  221. for(int i=0; i<n; i++){
  222. plik << baza[i] << endl;
  223. }
  224.  
  225.  
  226. plik.close();
  227. } else {
  228. cout << "problem" << endl;
  229. }
  230. }
  231.  
  232. int main(int argc,char *argv[]){
  233.  
  234. fstream plik;
  235. string nazwa(argv[1]);
  236. string nazwa2(argv[2]);
  237. int rozmiar1=0;
  238. int rozmiar2=0;
  239. string *baza_prezesow=NULL;
  240. string *baza_firm=NULL;
  241. firma *firmy = NULL;
  242.  
  243. baza_firm = wczytaj(nazwa, rozmiar1);
  244. wypisz(baza_firm, rozmiar1);
  245. baza_prezesow = wczytaj(nazwa2, rozmiar2);
  246. wypisz(baza_prezesow, rozmiar2);
  247.  
  248. firmy = nazwa(baza_firm, baza_prezesow, rozmiar1, rozmiar2);
  249.  
  250.  
  251.  
  252. cout << "r1: " << rozmiar1 << endl << "r2: " << rozmiar2 << endl;
  253.  
  254. delete [] baza_firm;
  255. delete [] baza_prezesow;
  256.  
  257.  
  258.  
  259. return 0;
  260. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement