Advertisement
Guest User

Untitled

a guest
Oct 21st, 2014
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.88 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <fstream>
  4. #include <iomanip>
  5. #include <ctime>
  6. using namespace std;
  7.  
  8.  
  9. template <typename T>
  10.  
  11. // KLASA ELEMENT (WYKORZYSTUJE DO WPISANIA ELEMENTU)
  12.  
  13. class element{
  14. public:
  15.  
  16. T zmienna;
  17. element<T>*nast;
  18. element(T arg){
  19. zmienna=arg;
  20. nast=NULL;
  21. }
  22. element<T>(){
  23. nast=NULL;
  24. }
  25. ~element(){
  26. delete nast;
  27. cout<<"Usunieto element"<<endl;
  28. }
  29. void operator+=(const element<T>&arg){
  30. zmienna += arg.zmienna;
  31. }
  32. };
  33.  
  34. template <typename T>
  35.  
  36. class zbior{
  37. public:
  38. element<T>*glowa;
  39. zbior(){
  40. glowa=NULL;
  41. }
  42. ~zbior(){
  43. delete glowa;
  44. cout<<"Usunieto zbior"<<endl;
  45. }
  46.  
  47. // UMIESZCZANIE NOWYCH ELEMENTOW
  48. void insert(T zmienna){
  49.  
  50. element<T>*nowy;
  51. nowy = new element<T>(zmienna);
  52. element<T>*wsk = glowa;
  53. bool check = false;
  54. if (glowa == NULL){
  55. glowa = nowy;
  56. }/*
  57. else if(nowy->zmienna == glowa->zmienna){
  58. delete nowy;
  59. check = true;
  60.  
  61. }
  62. else if(nowy->zmienna < glowa->zmienna){
  63.  
  64. nowy->nast=glowa;
  65. glowa=nowy;
  66. }
  67.  
  68. else{
  69.  
  70. while(wsk->nast!=NULL && wsk->nast->zmienna <=zmienna){
  71.  
  72. wsk=wsk->nast;
  73. }
  74. if(wsk->zmienna!=zmienna){
  75. nowy->nast=wsk->nast;
  76. wsk->nast=nowy;
  77. }
  78.  
  79. }
  80. }
  81.  
  82. */
  83.  
  84. else{
  85. if (nowy->zmienna == wsk->zmienna){
  86. delete nowy;
  87. check = true;
  88. }
  89. while (wsk->nast != NULL){
  90. if (check == false && nowy->zmienna == wsk->zmienna){
  91. delete nowy;
  92. check = true;
  93. }
  94. wsk = wsk->nast;
  95. }
  96. if (check == false)
  97. wsk->nast = nowy;
  98. }
  99. }
  100.  
  101.  
  102. // USUWANIE KOLEJNYCH WYBRANYCH ELEMENTOW
  103. void remove(T arg){
  104. /*
  105. element<T>*wsk=glowa;
  106. if(zmienna == glowa->zmienna){
  107. glowa=glowa->nast;
  108. wsk->nast=NULL;
  109. delete wsk;
  110. }
  111. else{
  112. while(wsk->nast!=NULL && wsk->nast->zmienna < zmienna && wsk->nast->zmienna!=zmienna){
  113. wsk=wsk->nast;
  114. }
  115. if(wsk->nast->zmienna == zmienna){
  116. element<T>*usun=wsk->nast;
  117. wsk->nast=wsk->nast->nast;
  118. usun->nast=NULL;
  119. delete usun;
  120. }
  121. }
  122.  
  123. }
  124. // WYPISYWANIE KOLEJNYCH ELEMENTOW TABLICY
  125. void wypisz(){
  126. element<T>*wsk=glowa;
  127. while(wsk!=NULL){
  128. cout <<wsk-> zmienna;
  129. wsk=wsk->nast;
  130. }
  131. cout<<'\n';
  132. }
  133. */
  134. element<T> * current = glowa;
  135. if (current != NULL && arg == current->zmienna){
  136. glowa = glowa->nast;
  137. current->nast = NULL;
  138. delete current;
  139. }
  140. else if (current != NULL){
  141. while (current->nast != NULL && arg != current->nast->zmienna){
  142. current = current->nast;
  143. }
  144.  
  145. if (current->nast != NULL && arg == current->nast->zmienna && current->nast != NULL){
  146. element<T> * todele = current->nast;
  147. current->nast = current->nast->nast;
  148. todele->nast = NULL;
  149. delete todele;
  150. }
  151. else if (current->nast != NULL && arg == current->nast->zmienna && current->nast == NULL){
  152. element<T> * todele = current->nast;
  153. current->nast = NULL;
  154. todele->nast = NULL;
  155. delete todele;
  156. }
  157. }
  158. }
  159. template<typename T>
  160. friend ostream& operator <<(ostream & out, zbior<T>*pom);
  161.  
  162.  
  163. void plik(){
  164. cout << "Witaj, podaj nazwe pliku, do ktorego chcesz zapisac dane: ";
  165. string name;
  166. cin >> name;
  167. ofstream PLIK(name);
  168. if (PLIK.is_open()){
  169.  
  170. element<T> temp;
  171. time_t czas;
  172. struct tm* timeinfo;
  173. char buffer[80];
  174. time(&czas);
  175. timeinfo = localtime(&czas);
  176. strftime(buffer, 80, "Warszawa,%d.%m.%Y", timeinfo);
  177. PLIK.setf(ios_base::right);
  178. PLIK.width(66);
  179. PLIK.fill(' ');
  180. PLIK << buffer << endl;
  181. PLIK.unsetf(ios_base::right);
  182. PLIK.setf(ios_base::internal);
  183. PLIK.width(35);
  184. PLIK << "RAPORT O STANIE GRY" << endl;
  185. PLIK.unsetf(ios_base::internal);
  186. PLIK << naglowki<T>();
  187. PLIK << linia<T>();
  188. element<T>*wsk = glowa;
  189. while (wsk != NULL){
  190. temp += wsk->zmienna;
  191. PLIK << efektor<T>(wsk);
  192. //temp += wsk->zmienna;
  193. wsk = wsk->nast;
  194. }
  195. PLIK << linia<T>();
  196. PLIK << stopka<T>(temp);
  197.  
  198. PLIK.close();
  199. }
  200. else
  201. cout << "Nie znaleziono pliku" << endl;
  202. }
  203.  
  204. };
  205.  
  206. // OPERATOR
  207. template<typename T>
  208. ostream& operator << (ostream & out, zbior<T>*pom){
  209.  
  210. element<T>*wsk=pom->glowa;
  211. while(wsk!=NULL){
  212. out<<wsk->zmienna<<' ';
  213. wsk=wsk->nast;
  214. }
  215. out<<'\n';
  216. return out;
  217. }
  218. // *****************************EFEKTORY***************************
  219. template<typename T>
  220. class efektor{
  221. public:
  222. T pole;
  223. static int wskaznik;
  224. efektor(element<T>*arg){
  225. pole = arg->zmienna;
  226. }
  227. };
  228. template<typename T>
  229. int efektor<T>::wskaznik = 1;
  230. template<typename T>
  231. ostream& operator <<(ostream& os, efektor<T>&fw){
  232.  
  233. os.setf(ios_base::left);
  234. os.setf(ios_base::right);
  235. os.width(2);
  236. os << fw.wskaznik++;
  237. os.unsetf(ios_base::right);
  238. os.width(10);
  239. os << '.';
  240. os.setf(ios_base::right);
  241. //os.width(10);
  242. os << fw.pole;
  243. os.unsetf(ios_base::right);
  244. os.width(17);
  245. os.setf(ios_base::right);
  246. os << "1";
  247. os.unsetf(ios_base::right);
  248. return os << endl;
  249.  
  250. }
  251. template<typename T>
  252. class naglowki{
  253. public:
  254. T pole;
  255. naglowki(){
  256. }
  257. };
  258. template<typename T>
  259. ostream& operator<<(ostream&as, naglowki<T>&kl){
  260. as.setf(ios_base::left);
  261. as << "Lp.";
  262. as.unsetf(ios_base::left);
  263. as.width(9);
  264. as << " ";
  265. as.setf(ios_base::left);
  266. as << "nazwa";
  267. as.unsetf(ios_base::left);
  268. as.width(10);
  269. as << " ";
  270. as.setf(ios_base::left);
  271. as << "sztuk";
  272. as.unsetf(ios_base::left);
  273. return as << endl;
  274. }
  275. template<typename T>
  276. class linia{
  277. public:
  278. T pole;
  279. linia(){}
  280. };
  281. template<typename T>
  282. ostream& operator <<(ostream&as, linia<T>&kl){
  283. //as.width(47);
  284. for (int i = 0; i < 60; i++){
  285. as << "=";
  286. }
  287. return as << endl;
  288. }
  289. template<typename T>
  290. class stopka{
  291. public:
  292. T pole;
  293. stopka(element<T>&arg){
  294. pole = arg.zmienna;
  295. }
  296. };
  297. template<typename T>
  298. ostream& operator <<(ostream& os, stopka<T>&fw){
  299. os.width(15);
  300. os.setf(ios_base::right);
  301. os << fw.pole;
  302. return os;
  303. }
  304.  
  305.  
  306.  
  307.  
  308.  
  309.  
  310.  
  311.  
  312.  
  313.  
  314.  
  315.  
  316. //**********************KLASA DLA ZESPOLONYCH******************************
  317. class zesp{
  318. public:
  319. int rz;
  320. int uro;
  321. zesp(){ rz = 0; uro = 0; }
  322. zesp(int a, int b){ rz = a; uro = b; }
  323. bool operator==(const zesp&arg){
  324. if (arg.rz == rz && arg.uro == uro) return true;
  325. return false;
  326. }
  327. bool operator!=(const zesp&arg){
  328. if (arg.rz == rz && arg.uro == uro) return false;
  329. return true;
  330. }
  331. void operator=(const zesp&arg){
  332. rz= arg.rz;
  333. uro= arg.uro;
  334. }
  335. void operator+=(const zesp&arg){
  336. rz += arg.rz;
  337. uro += arg.uro;
  338. }
  339. friend ostream& operator<<(ostream& out, zesp&arg){
  340. return out << arg.rz << '+' << arg.uro << "i";
  341. }
  342. friend istream& operator>>(istream& in, zesp&arg){
  343. return in >> arg.rz >> arg.uro;
  344. }
  345. };
  346.  
  347. //**********************************MAIN*************************************
  348. #include <iostream>
  349. #include "unikalny_zbior.h"
  350. #include <string>
  351. #include <ctime>
  352. #include <fstream>
  353. #ifdef _MSC_VER
  354. #define _CRT_SECURE_NO_WARNINGS
  355. #endif
  356. using namespace std;
  357.  
  358. int main(){
  359.  
  360. //string pomoc; // ZMIENNA POMOCNICZA (DO) WPROWADZANIA LITEREK
  361.  
  362. //char wybor; // ZMIENNA (DO) WYBORU KOMENDY PRZEZ UZYTKOWNIKA
  363. /*
  364. zbior<string>*ZB=new zbior<string>();
  365.  
  366. cout<<"Witaj!.."<<endl<<"1.Dodaj: d"<<endl<<"2.Usun: u"<<endl<<"3.Pokaz: s"<<endl<<"4.Zakoncz: z"<<endl;
  367.  
  368. cin>>wybor;
  369.  
  370. while(wybor!='z'){
  371. if(wybor == 'd'){
  372. cout<<"Podaj literke, jaka chcesz dodac: ";
  373. cin>>pomoc;
  374. ZB->insert(pomoc);
  375.  
  376. }
  377.  
  378. else if(wybor == 'u'){
  379. cout<<"Podaj literke, jaka chcesz usunac: ";
  380. cin>>pomoc;
  381. ZB->remove(pomoc);
  382. }
  383. else if(wybor == 's'){
  384.  
  385. cout<<"Oto elementy w twoim kontenerze"<<endl;
  386. //ZB->wypisz();
  387. cout<<ZB;
  388. }
  389. cin>>wybor;
  390. }
  391. ZB->plik();
  392. delete ZB;
  393. */
  394. zbior<zesp>* A = new zbior<zesp>;
  395. char cont;
  396. zesp temp;
  397. cin >> cont;
  398. while (cont != 'e'){
  399. if (cont == 'i'){
  400. cin >> temp;
  401. A->insert(temp);
  402. cout << A;
  403. }
  404. if (cont == 'r'){
  405. cin >> temp;
  406. A->remove(temp);
  407. cout << A;
  408. }
  409. if (cont == 'f'){
  410. A->plik();
  411.  
  412. }
  413. cin >> cont;
  414. }
  415.  
  416. delete A;
  417. return 0;
  418. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement