Advertisement
Guest User

Untitled

a guest
Mar 4th, 2015
219
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.52 KB | None | 0 0
  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. Tablica(int rozmiar)
  18. : mRozmiar(rozmiar)
  19. {
  20. pTablica = new TYP[rozmiar];
  21. }
  22. bool WczytajTablice(std::istream &strumienWej)
  23. {
  24. TYP doWczytania;
  25. int iterator = 0;
  26. while (iterator < mRozmiar && strumienWej >> doWczytania)
  27. {
  28. pTablica[iterator] = doWczytania;
  29. ++iterator;
  30. }
  31. return iterator == mRozmiar;
  32. }
  33.  
  34. void WypiszTablice(std::ostream &strumienWyj)
  35. {
  36. for (auto i = 0; i < mRozmiar; ++i)
  37. {
  38. strumienWyj << pTablica[i] << " ";
  39. }
  40.  
  41. }
  42.  
  43. ~Tablica()
  44. {
  45. delete[] pTablica;
  46. }
  47.  
  48. bool ZapiszDoPliku(std::string nazwa, bool czyBinarny = false)
  49. {
  50. auto binarny = czyBinarny ? ios::binary : 0;
  51. std::fstream plikWyjsciowy(nazwa.c_str(), ios::out | binarny);
  52.  
  53. if (plikWyjsciowy.is_open())
  54. {
  55. WypiszTablice(plikWyjsciowy);
  56. plikWyjsciowy.close();
  57. return true;
  58. }
  59. else
  60. {
  61. return false;
  62. }
  63.  
  64. }
  65.  
  66. bool WczytajZPliku(std::string nazwa, bool czyBinarny = false)
  67. {
  68. auto binarny = czyBinarny ? ios::binary : 0;
  69. std::fstream plikWyjsciowy(nazwa.c_str(), ios::in | binarny);
  70. if (plikWyjsciowy.is_open())
  71. {
  72. return WczytajTablice(plikWyjsciowy);
  73. }
  74. else
  75. {
  76. return false;
  77. }
  78.  
  79. }
  80.  
  81. bool ZapiszDoPlikuBinarnego(std::string nazwa)
  82. {
  83. return ZapiszDoPliku(nazwa, true);
  84. }
  85.  
  86. bool WczytajDoPlikuBinarnego(std::string nazwa)
  87. {
  88. return WczytajZPliku(nazwa, true)
  89. }
  90.  
  91. Tablica& operator =(Tablica& x)
  92. {
  93. mRozmiar = x.mRozmiar;
  94. TYP* wsk = new TYP[mRozmiar];
  95. for (int i = 0; i < mRozmiar; i++)
  96. {
  97. wsk[i] = x.pTablica[i];
  98. }
  99. pTablica = wsk;
  100. return *this;
  101. //return pTablica = wsk;
  102. //return wsk;
  103. }
  104.  
  105. void wypelnijLiczbamiLosowymi()
  106. {
  107. srand(time(NULL));
  108. //int liczbaWylosowana = (rand()%1000+1);
  109. for (int i = 0; i < mRozmiar; i++)
  110. {
  111. pTablica[i] = (rand()); //% 1000 + 1);
  112. }
  113. }
  114.  
  115. };
  116.  
  117.  
  118. void menu()
  119. {
  120. int opcja;
  121. do
  122. {
  123. cout << "1.Wczytanie tablicy z konsoli" << endl;
  124. cout << "2.Wyswietlenie tablicy" << endl;
  125. cout << "3.Wczytywanie z pliku tekstowego" << endl;
  126. cout << "4.Zapisywanie do pliku tekstowego" << endl;
  127. cout << "5.Wczytywanie z pliku binarnego" << endl;
  128. cout << "6.Zapisywanie do pliku binarnego" << endl;
  129. cout << "7.Wypelnianie tablicy" << endl;
  130. cout << "8.Tworzenie dynamicznej kopii + wyswietlenie kopii" << endl;
  131. cout << "0.Koniec" << endl;
  132. cout << "Wybierz opcje: ";
  133. cin >> opcja;
  134.  
  135.  
  136. switch (opcja){
  137. case 0:
  138. break;
  139. case 1:
  140.  
  141. break;
  142. }
  143. } while (opcja != 0);
  144. }
  145.  
  146.  
  147.  
  148.  
  149. ////////////////////////////////////////main
  150.  
  151.  
  152.  
  153. int main()
  154. {
  155. {
  156. Tablica<int> tab(3);
  157. std::stringstream test("3 5 7");
  158. auto wynik = tab.WczytajTablice(test);
  159.  
  160. if (wynik == true)
  161. {
  162. std::cout << "Test 1 PASS" << std::endl;
  163. }
  164. else
  165. {
  166. std::cout << "Test 1 padl" << std::endl;
  167. }
  168.  
  169. }
  170.  
  171. {
  172. Tablica<float> tab(3);
  173. std::stringstream test("3 5 7 5");
  174. auto wynik = tab.WczytajTablice(test);
  175.  
  176. if (wynik == true)
  177. {
  178. std::cout << "Test 2 PASS" << std::endl;
  179. }
  180. else
  181. {
  182. std::cout << "Test 2 padl" << std::endl;
  183. }
  184. }
  185.  
  186. {
  187. Tablica<int> tab(3);
  188. std::stringstream test("3 5");
  189. auto wynik = tab.WczytajTablice(test);
  190.  
  191. if (wynik == false)
  192. {
  193. std::cout << "Test 3 PASS" << std::endl;
  194. }
  195. else
  196. {
  197. std::cout << "Test 3 padl" << std::endl;
  198. }
  199. }
  200.  
  201. {
  202. Tablica<int> tab(3);
  203. std::stringstream test("3 4 5");
  204. tab.WczytajTablice(test);
  205. std::stringstream wyjscie;
  206. tab.WypiszTablice(wyjscie);
  207.  
  208. if (wyjscie.str() == "3 4 5 ")
  209. {
  210. std::cout << "Test 4 PASS" << std::endl;
  211. }
  212. else
  213. {
  214. std::cout << "Test 4 padl" << std::endl;
  215. }
  216. }
  217.  
  218. {
  219. {
  220. Tablica<int> tab(3);
  221. //std::stringstream test("3 4 5");
  222. //tab.WczytajTablice(test);
  223. tab.WczytajZPliku("plik1.txt", false);
  224. std::stringstream wyjscie;
  225. tab.WypiszTablice(wyjscie);
  226.  
  227. if (wyjscie.str() == "3 4 5 ")
  228. {
  229. std::cout << "Test 5 PASS" << std::endl;
  230. }
  231. else
  232. {
  233. std::cout << "Test 5 padl" << std::endl;
  234. }
  235. }
  236. {
  237. Tablica<int> tab(3);
  238. std::stringstream test("3 4 5");
  239. tab.WczytajTablice(test);
  240. std::string nazwaPliku("test6.dat");
  241.  
  242. tab.ZapiszDoPliku(nazwaPliku);
  243. Tablica<int> tab2(3);
  244. tab2.WczytajZPliku(nazwaPliku);
  245. std::stringstream wyjscie;
  246. tab2.WypiszTablice(wyjscie);
  247.  
  248. if (wyjscie.str() == "3 4 5 ")
  249. {
  250. std::cout << "Test 6 PASS" << std::endl;
  251. }
  252. else
  253. {
  254. std::cout << "Test 6 padl" << std::endl;
  255. }
  256. }
  257. }
  258.  
  259. {
  260. Tablica<int> tab(3);
  261. // std::stringstream test("3 5 7");
  262. auto wynik = tab.WczytajTablice(std::cin);
  263.  
  264. if (wynik == true)
  265. {
  266. std::cout << "Test 1 PASS" << std::endl;
  267. }
  268. else
  269. {
  270. std::cout << "Test 1 padl" << std::endl;
  271. }
  272.  
  273. }
  274. {
  275. Tablica<int> tab(3);
  276. Tablica<int> tab1(3);
  277. bool wynik = tab.WczytajTablice(std::cin);
  278. if (wynik == true)
  279. {
  280. cout << "Czesc 1 PASS" << endl;
  281. tab1 = tab;
  282. cout << "tab \n";
  283. tab.WypiszTablice(cout);
  284. cout << "tab1 \n";
  285. tab1.WypiszTablice(cout);
  286.  
  287. }
  288. else
  289. {
  290. cout << "czesc 1 padla " << endl;
  291. }
  292. }
  293.  
  294.  
  295. {
  296. cout << "Podaj rozmiar\n";
  297. int rozmiarTd;
  298. cin >> rozmiarTd;
  299. Tablica<int> tab(rozmiarTd );
  300. // std::stringstream test("3 5 7");
  301. cout << "Losowanie liczb \n";
  302. tab.wypelnijLiczbamiLosowymi();
  303. tab.WypiszTablice(cout);
  304.  
  305. }
  306.  
  307. {
  308. char c;
  309. std::cin >> c;
  310. }
  311. return 0;
  312. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement