Advertisement
Guest User

Untitled

a guest
Mar 4th, 2015
208
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include <sstream>
  3. #include <stdio.h>
  4. #include <fstream>
  5. #include <string>
  6. #include<ctime>
  7. #include<cstdlib>
  8.  
  9. using namespace std;
  10. template <typename TYP>
  11. class Tablica
  12. {
  13. int mRozmiar;
  14. TYP* pTablica;
  15. Tablica() = delete;
  16. public:
  17. void adres()
  18. {
  19. cout << pTablica << endl;
  20. }
  21. Tablica(int rozmiar)
  22. : mRozmiar(rozmiar)
  23. {
  24. pTablica = new TYP[rozmiar];
  25. }
  26. bool WczytajTablice(std::istream &strumienWej)
  27. {
  28. TYP doWczytania;
  29. int iterator = 0;
  30. while (iterator < mRozmiar && strumienWej >> doWczytania)
  31. {
  32. pTablica[iterator] = doWczytania;
  33. ++iterator;
  34. }
  35. return iterator == mRozmiar;
  36. }
  37.  
  38. void WypiszTablice(std::ostream &strumienWyj)
  39. {
  40. for (auto i = 0; i < mRozmiar; ++i)
  41. {
  42. strumienWyj << pTablica[i] << " ";
  43. }
  44.  
  45. }
  46.  
  47. ~Tablica()
  48. {
  49. delete[] pTablica;
  50. }
  51.  
  52. bool ZapiszDoPliku(std::string nazwa, bool czyBinarny = false)
  53. {
  54. auto binarny = czyBinarny ? ios::binary : 0;
  55. std::fstream plikWyjsciowy(nazwa.c_str(), ios::out | binarny);
  56.  
  57. if (plikWyjsciowy.is_open())
  58. {
  59. WypiszTablice(plikWyjsciowy);
  60. plikWyjsciowy.close();
  61. return true;
  62. }
  63. else
  64. {
  65. return false;
  66. }
  67.  
  68. }
  69.  
  70. bool WczytajZPliku(std::string nazwa, bool czyBinarny = false)
  71. {
  72. auto binarny = czyBinarny ? ios::binary : 0;
  73. std::fstream plikWyjsciowy(nazwa.c_str(), ios::in | binarny);
  74. if (plikWyjsciowy.is_open())
  75. {
  76. return WczytajTablice(plikWyjsciowy);
  77. }
  78. else
  79. {
  80. return false;
  81. }
  82.  
  83. }
  84.  
  85. bool ZapiszDoPlikuBinarnego(std::string nazwa)
  86. {
  87. return ZapiszDoPliku(nazwa, true);
  88. }
  89.  
  90. bool WczytajDoPlikuBinarnego(std::string nazwa)
  91. {
  92. return WczytajZPliku(nazwa, true);
  93. }
  94.  
  95. Tablica& operator =(Tablica& x)
  96. {
  97. mRozmiar = x.mRozmiar;
  98. TYP* wsk = new TYP[mRozmiar];
  99. for (int i = 0; i < mRozmiar; i++)
  100. {
  101. wsk[i] = x.pTablica[i];
  102. }
  103. pTablica = wsk;
  104. return *this;
  105. //return pTablica = wsk;
  106. //return wsk;
  107. }
  108.  
  109. void wypelnijLiczbamiLosowymi()
  110. {
  111. srand((unsigned int)time(NULL));
  112. //int liczbaWylosowana = (rand()%1000+1);
  113. for (int i = 0; i < mRozmiar; i++)
  114. {
  115. pTablica[i] = (rand()); //% 1000 + 1);
  116. }
  117. }
  118.  
  119. /*Tablica& tworzKopia(Tablica& dawca const)
  120. {
  121. Tablica tabKopia(mRozmiar) = dawca;
  122. return tabKopia;
  123. }*/
  124.  
  125. };
  126.  
  127.  
  128. void menu()
  129. {
  130. typedef int nazwaTypu;
  131. cout << "Wybierz rozmiar tablicy\n";
  132. int rozmiarTablicy;
  133. cin >> rozmiarTablicy;
  134. Tablica<nazwaTypu> tab(rozmiarTablicy);
  135. int opcja;
  136. do
  137. {
  138. cout << "1.Wczytanie tablicy z konsoli" << endl;
  139. cout << "2.Wyswietlenie tablicy" << endl;
  140. cout << "3.Wczytywanie z pliku tekstowego" << endl;
  141. cout << "4.Zapisywanie do pliku tekstowego" << endl;
  142. cout << "5.Wczytywanie z pliku binarnego" << endl;
  143. cout << "6.Zapisywanie do pliku binarnego" << endl;
  144. cout << "7.Wypelnianie tablicy" << endl;
  145. cout << "8.Tworzenie dynamicznej kopii + wyswietlenie kopii" << endl;
  146. cout << "0.Koniec" << endl;
  147. cout << "Wybierz opcje: ";
  148. cin >> opcja;
  149.  
  150.  
  151. switch (opcja){
  152. case 0:
  153. break;
  154. case 1:
  155. tab.WczytajTablice(cin);
  156. break;
  157. case 2:
  158. tab.WypiszTablice(cout);
  159. break;
  160. case 3:
  161. {
  162. cout << "Podaj nazwe pliku\n";
  163. string nazwa;
  164. cin >> nazwa;
  165. tab.WczytajZPliku(nazwa);
  166. break;
  167. }
  168. case 4:
  169. {
  170. cout << "Podaj nazwe pliku\n";
  171. string nazwa;
  172. cin >> nazwa;
  173. tab.ZapiszDoPliku(nazwa);
  174. break;
  175. }
  176. case 5:
  177. {
  178. cout << "Podaj nazwe pliku\n";
  179. string nazwa;
  180. cin >> nazwa;
  181. tab.WczytajDoPlikuBinarnego(nazwa);
  182. break;
  183. }
  184. case 6:
  185. {
  186. cout << "Podaj nazwe pliku\n";
  187. string nazwa;
  188. cin >> nazwa;
  189. tab.ZapiszDoPlikuBinarnego(nazwa);
  190. break;
  191. }
  192. case 7:
  193. tab.wypelnijLiczbamiLosowymi();
  194. break;
  195. case 8:
  196. {
  197. {
  198. Tablica < nazwaTypu > tabKopia(rozmiarTablicy);
  199. Tablica < nazwaTypu > tabKopia1(rozmiarTablicy);
  200. tabKopia = tab;
  201. tabKopia1 = tab;
  202. tabKopia.WypiszTablice(cout);
  203. tab.adres();
  204. tabKopia.adres();
  205. tabKopia1.adres();
  206. cout << "\ntab " << &tab << endl;
  207. cout << "tabKopia " << &tabKopia << endl;
  208. cout << "tabKopia " << &tabKopia1 << endl;
  209. break;
  210. }
  211. }
  212. default:
  213. cout << "Nie ma takiej opcji\n";
  214. break;
  215. }
  216. cout << "\n";
  217. } while (opcja != 0);
  218. }
  219.  
  220.  
  221.  
  222.  
  223. ////////////////////////////////////////main
  224.  
  225.  
  226.  
  227. int main()
  228. {
  229.  
  230. menu();
  231.  
  232. /*{
  233. Tablica<int> tab(3);
  234. std::stringstream test("3 5 7");
  235. auto wynik = tab.WczytajTablice(test);
  236.  
  237. if (wynik == true)
  238. {
  239. std::cout << "Test 1 PASS" << std::endl;
  240. }
  241. else
  242. {
  243. std::cout << "Test 1 padl" << std::endl;
  244. }
  245.  
  246. }
  247.  
  248. {
  249. Tablica<float> tab(3);
  250. std::stringstream test("3 5 7 5");
  251. auto wynik = tab.WczytajTablice(test);
  252.  
  253. if (wynik == true)
  254. {
  255. std::cout << "Test 2 PASS" << std::endl;
  256. }
  257. else
  258. {
  259. std::cout << "Test 2 padl" << std::endl;
  260. }
  261. }
  262.  
  263. {
  264. Tablica<int> tab(3);
  265. std::stringstream test("3 5");
  266. auto wynik = tab.WczytajTablice(test);
  267.  
  268. if (wynik == false)
  269. {
  270. std::cout << "Test 3 PASS" << std::endl;
  271. }
  272. else
  273. {
  274. std::cout << "Test 3 padl" << std::endl;
  275. }
  276. }
  277.  
  278. {
  279. Tablica<int> tab(3);
  280. std::stringstream test("3 4 5");
  281. tab.WczytajTablice(test);
  282. std::stringstream wyjscie;
  283. tab.WypiszTablice(wyjscie);
  284.  
  285. if (wyjscie.str() == "3 4 5 ")
  286. {
  287. std::cout << "Test 4 PASS" << std::endl;
  288. }
  289. else
  290. {
  291. std::cout << "Test 4 padl" << std::endl;
  292. }
  293. }
  294.  
  295. {
  296. {
  297. Tablica<int> tab(3);
  298. //std::stringstream test("3 4 5");
  299. //tab.WczytajTablice(test);
  300. tab.WczytajZPliku("plik1.txt", false);
  301. std::stringstream wyjscie;
  302. tab.WypiszTablice(wyjscie);
  303.  
  304. if (wyjscie.str() == "3 4 5 ")
  305. {
  306. std::cout << "Test 5 PASS" << std::endl;
  307. }
  308. else
  309. {
  310. std::cout << "Test 5 padl" << std::endl;
  311. }
  312. }
  313. {
  314. Tablica<int> tab(3);
  315. std::stringstream test("3 4 5");
  316. tab.WczytajTablice(test);
  317. std::string nazwaPliku("test6.dat");
  318.  
  319. tab.ZapiszDoPliku(nazwaPliku);
  320. Tablica<int> tab2(3);
  321. tab2.WczytajZPliku(nazwaPliku);
  322. std::stringstream wyjscie;
  323. tab2.WypiszTablice(wyjscie);
  324.  
  325. if (wyjscie.str() == "3 4 5 ")
  326. {
  327. std::cout << "Test 6 PASS" << std::endl;
  328. }
  329. else
  330. {
  331. std::cout << "Test 6 padl" << std::endl;
  332. }
  333. }
  334. }
  335.  
  336. {
  337. Tablica<int> tab(3);
  338. // std::stringstream test("3 5 7");
  339. auto wynik = tab.WczytajTablice(std::cin);
  340.  
  341. if (wynik == true)
  342. {
  343. std::cout << "Test 1 PASS" << std::endl;
  344. }
  345. else
  346. {
  347. std::cout << "Test 1 padl" << std::endl;
  348. }
  349.  
  350. }
  351. {
  352. Tablica<int> tab(3);
  353. Tablica<int> tab1(3);
  354. bool wynik = tab.WczytajTablice(std::cin);
  355. if (wynik == true)
  356. {
  357. cout << "Czesc 1 PASS" << endl;
  358. tab1 = tab;
  359. cout << "tab \n";
  360. tab.WypiszTablice(cout);
  361. cout << "tab1 \n";
  362. tab1.WypiszTablice(cout);
  363.  
  364. }
  365. else
  366. {
  367. cout << "czesc 1 padla " << endl;
  368. }
  369. }
  370.  
  371.  
  372. {
  373. cout << "Podaj rozmiar\n";
  374. int rozmiarTd;
  375. cin >> rozmiarTd;
  376. Tablica<int> tab(rozmiarTd );
  377. // std::stringstream test("3 5 7");
  378. cout << "Losowanie liczb \n";
  379. tab.wypelnijLiczbamiLosowymi();
  380. tab.WypiszTablice(cout);
  381.  
  382. }
  383. */
  384. {
  385. char c;
  386. std::cin >> c;
  387. }
  388. return 0;
  389. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement