Advertisement
Guest User

Untitled

a guest
Mar 28th, 2015
204
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 19.59 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <iostream>
  3. #include <time.h>
  4. #include <string>
  5. #include <vector>
  6. #include <math.h>
  7. #include <fstream>
  8. #include <windows.h>
  9. using namespace std;
  10.  
  11. char *t;
  12. #define N 2000
  13. LARGE_INTEGER startTimer()
  14. {
  15. LARGE_INTEGER start;
  16. DWORD_PTR oldmask = SetThreadAffinityMask(GetCurrentThread(), 0);
  17. QueryPerformanceCounter(&start);
  18. SetThreadAffinityMask(GetCurrentThread(), oldmask);
  19. return start;
  20. }
  21. LARGE_INTEGER endTimer()
  22. {
  23. LARGE_INTEGER stop;
  24. DWORD_PTR oldmask = SetThreadAffinityMask(GetCurrentThread(), 0);
  25. QueryPerformanceCounter(&stop);
  26. SetThreadAffinityMask(GetCurrentThread(), oldmask);
  27. return stop;
  28. }
  29. LARGE_INTEGER performanceCountStart, performanceCountEnd;
  30.  
  31. //TABLICA
  32. void usun(int n, int * tab, int rozm)
  33. {
  34. performanceCountStart = startTimer();
  35. for (int i = n; i < rozm; i++) //zaczynamy wykonywanie pętli od elementu ktory chcemy usunac
  36. {
  37. tab[i] = tab[i + 1]; //każda wartosc przesuwany na nastepne miejsce - usuwany n-ty element, zsuwamy nastepne
  38. }
  39.  
  40. performanceCountEnd = endTimer();
  41. LONGLONG tm = performanceCountEnd.QuadPart - performanceCountStart.QuadPart;
  42. cout << "Usunieto" << endl;
  43.  
  44. for (int i = 0; i<rozm -1; i++) //wyswietlamy od tab[i+1] bo w pierwszej linii jest podana ilosc liczb
  45. printf("tab[%2d]=%4ld\n", i, tab[i+1]); //do rozm-1 bo usunelismy jeden element
  46.  
  47. cout << "Czas dzialania: " << tm << " mikrosekund" << endl;
  48. }
  49. void dodaj(int m, int * tab, int rozm, int wart)
  50. {
  51. int temp, temp2;
  52. performanceCountStart = startTimer();
  53. temp2 = wart; //temp2 to element ktory dodajemy
  54. for (int i = m; i<rozm+1; i++) //pętla od m-miejsce w ktorym dodajemy element, do rozm+1 - zwiekszamy o 1 bo zwiekszamy tablice o 1 element
  55. {
  56. temp = temp2; //nadpisujemy kazdy element dalej rozsuwajac tablice od i=m - miejsca w ktorym dodajemy
  57. temp2 = tab[i];
  58. tab[i] = temp;
  59. }
  60. performanceCountEnd = endTimer();
  61. LONGLONG tm = performanceCountEnd.QuadPart - performanceCountStart.QuadPart;
  62.  
  63. for (int i = 0; i<rozm; i++) //wyswietlanie
  64. printf("tab[%2d]=%4ld\n", i, tab[i+1]);
  65.  
  66. cout << "Czas dzialania: " << tm << " mikrosekund" << endl;
  67. }
  68. void wyszukaj(int *tab, int rozm, int wart1)
  69. {
  70. int i;
  71. performanceCountStart = startTimer();
  72. for (i = 0; i < rozm; i++) //pętla przechodzaca po calej tablicy
  73. {
  74. if (tab[i + 1] == wart1) break; //jesli i+1 element tablicy jest rowny szukanej wartosci to wychodzimy z pętli
  75. //(i+1 bo pierwszy element to ilość elementow w pliku)
  76. }
  77. performanceCountEnd = endTimer();
  78. if (i < rozm) cout << "Znalazles element!\n"; //jesli nie doszlismy do konca to oznacza to tyle ze wczesniej wyszlismy z pętli czyli znalezlismy element
  79. if (i >= rozm) cout << "Nie znaleziono elementu!\n"; //jesli doszlismy do konca to znaczy ze nie znalezlismy elementu bo wczesniej nie wyszlismy z pętli
  80.  
  81. LONGLONG tm = performanceCountEnd.QuadPart - performanceCountStart.QuadPart;
  82. cout << "Czas dzialania: " << tm << " mikrosekund" << endl;
  83. }
  84.  
  85. //LISTA
  86. class lista{
  87. public:
  88. class ogniwo{
  89. public:
  90. ogniwo * next;
  91. ogniwo * prev;
  92. int value;
  93. };
  94. class inter{
  95. public:
  96. ogniwo * wsk;
  97. inter next(inter it);
  98. };
  99. lista (int v); //Konstruktor parametryczny
  100. void wyswietl(); //Wyswietlanie od przodu
  101. void wyswietl1(); //Wyswietlanie od tyłu
  102. inter poczatek; //Konstruktor domyślny ustawiający początek listy
  103. inter koniec; //Konstruktor domyślny ustawiający koniec listy
  104. inter begin(); //Metoda zwracająca początek
  105. inter end(); //Metoda zrwacająca koniec
  106. inter get(int v); //Metoda zwracająca miejsce, w które chcemy dodać element
  107. inter szukajl(int v); //Metoda klasy intera szukająca elementu
  108. inter stworz(inter it, int m); //Metoda klasy intera tworząca liste
  109. inter usunl(int y); //Metoda klasy intera usuwająca element
  110. inter dodajl(inter it, int v); //Metoda klasy intera dodająca element
  111. int size; //Rozmiar listy
  112. };
  113. lista::lista(int v) //Konstruktor parametryczny
  114. { //odczytuje wartosci z pliku tekstowego
  115.  
  116. FILE* plik = fopen(t, "rt");
  117. ogniwo * a = new ogniwo;
  118. int k;
  119. for (int ilosc_wczytanych = 0; ilosc_wczytanych<v; ilosc_wczytanych++){
  120. fscanf(plik, "%ld", &k); //przechodzimy po kazdym elemencie listy ustawiając wskaźniki na niego
  121. a->next = a; //nadając mu wartosc
  122. a->prev = a;
  123. a->value = k;
  124. poczatek.wsk = a;
  125. koniec.wsk = a;
  126. size = 1;
  127. }
  128. fclose(plik);
  129. }
  130. lista::inter lista::begin(){
  131. return poczatek;
  132. }
  133. void lista::wyswietl(){
  134. inter it = poczatek; //Wyswietla zwartosc listy dwukierunkowej od przodu
  135. it.wsk = it.wsk->prev; //pomijamy pierwszą liczbe - ilosc elementow
  136. for (int i = 0; i < size; i++){
  137. it.wsk = it.wsk->prev;
  138. cout << it.wsk->value << " ";
  139. }
  140. cout << endl;
  141. }
  142. void lista::wyswietl1(){
  143. inter it = poczatek; //Wyswietla zwartosc listy dwukierunkowej od tylu
  144. for (int i = 0; i < size; i++){
  145. cout << it.wsk->value << " ";
  146. it.wsk = it.wsk->next;
  147. }
  148. cout << endl;
  149. }
  150. lista::inter lista::get(int v){
  151. inter it = poczatek; //metoda ustawia wskaźnik w miejsce, w ktore chcemy dodac element
  152. it.wsk = it.wsk->prev; //pomijamy pierwszą liczbe - ilosc elementow
  153. for (int i = 0; i <= v; i++){
  154. it.wsk = it.wsk->prev;
  155. }
  156. return it;
  157. }
  158. lista::inter lista::dodajl(inter it, int v){
  159. ogniwo * a = it.wsk; //Wstawia nowy element do listy dwukierunkowej
  160. ogniwo * b = new ogniwo; //Element ma wartosc v i jest wstawiany za elementem wskazywanym przez wskaźnik it
  161. ogniwo * c = a->next;
  162. performanceCountStart = startTimer();
  163. b->next = c; //wstawia c po b
  164. b->prev = a; //wstawia a przed b
  165. b->value = v; //ustawia wartosc dla b
  166. c->prev = b; //ustawia b przed c
  167. a->next = b; //ustawia b po a
  168. if (b->next == b)koniec.wsk = b; //poprawia koniec listy, jezeli dodajemy za ostatnim elementem
  169. performanceCountEnd = endTimer();
  170. size++; //dodajemy element wiec zwiekszamy rozmiar
  171.  
  172. LONGLONG tm = performanceCountEnd.QuadPart - performanceCountStart.QuadPart;
  173. cout << "Czas dzialania: " << tm << " mikrosekund" << endl;
  174. return it;
  175. }
  176. lista::inter lista::stworz(inter it, int v){
  177. int k; //towrzymy liste
  178. FILE* plik = fopen(t, "rt");
  179. for (int ilosc_wczytanych = 0; ilosc_wczytanych < v; ilosc_wczytanych++){ //petla od 0 do podanego przez nas rozmiaru
  180. fscanf(plik, "%ld", &k); //skanujemy plik
  181. ogniwo * a = it.wsk; //i ustawiamy poszczegolne wartosci w odpowiednie miejsca
  182. ogniwo * b = new ogniwo;
  183. ogniwo * c = a->next;
  184. b->next = c;
  185. b->prev = a;
  186. b->value = k;
  187. c->prev = b;
  188. a->next = b;
  189. if (b->next == b)koniec.wsk = b; //poprawia koniec listy, jezeli dodajemy za ostatnim elementem
  190. }
  191. size = v; //rozmiar ustawiamy na taki jaki podalismy przy tworzeniu
  192. return it;
  193. }
  194. lista::inter lista::szukajl(int v){
  195. inter it = poczatek;
  196. int i = 0;
  197. performanceCountStart = startTimer();
  198. for (i = 0; i < size; i++){ //szukamy od poczatku do rozmiaru jaki podalismy wczesniej
  199. int x = it.wsk->value; //x to wartosc jaka wskazuje wskaźnik
  200. if (x == v) break; //jesli x rowna sie szukanej wartosci to wychodzimy z pętli
  201. else { //jesli nie to ustawiamy wskaźnik na nastepny element
  202. it.wsk = it.wsk->next;
  203. }
  204. }
  205. performanceCountEnd = endTimer();
  206. if (i < size) cout << "Jest taka liczba" << endl; //jesli h nie jest taki jak rozmiar to oznacza ze wyszlismy wczesniej z petli czyli znalezlismy element
  207. if (i >= size) cout << "Brak liczby" << endl; //jesli h jest taki jak rozmiar to znaczy ze przeszlismy przez całą pętle - nie znalezlismy elementu
  208.  
  209. LONGLONG tm = performanceCountEnd.QuadPart - performanceCountStart.QuadPart;
  210. cout << "Czas dzialania: " << tm << " mikrosekund" << endl;
  211.  
  212. return it;
  213. }
  214. lista::inter lista::usunl(int y){
  215. int i = 0;
  216. inter it = poczatek; //ustawiamy wskaźnik w miejsce, w ktorym jest element, ktory chcemy usunac
  217. it.wsk = it.wsk->prev; //pomijamy pierwszą liczbe - ilosc elementow
  218. for (i = 0; i <= size; i++){
  219. it.wsk = it.wsk->prev;
  220. if (it.wsk->value == y) break; //jesli wartosci na ktory wskazuje wskaznik jest taka jaka chcemy usunac to konczy sie dzialanie petli
  221. }
  222. if (i < size) {
  223. ogniwo * b = it.wsk; //b jest elementem ktory chcemy usunac
  224. ogniwo * a = b->prev; //a jest przed b
  225. ogniwo * c = b->next; //c jest po a
  226. performanceCountStart = startTimer();
  227. a->next = c; //ustawia c po a ---\ USUNIĘCIE B /---
  228. c->prev = a; //ustawia a przed c ---/ *********** \---
  229. if (poczatek.wsk == b) poczatek.wsk = c; //popraw poczatek listy, jezeli usuwamy pierwszy element
  230. if (koniec.wsk == b) koniec.wsk = a; //popraw koniec listy, jezeli usuwamy ostatni element
  231. delete b; //usunięcie b
  232. it.wsk = a;
  233. performanceCountEnd = endTimer();
  234. size--;
  235.  
  236. LONGLONG tm = performanceCountEnd.QuadPart - performanceCountStart.QuadPart;
  237. cout << "Czas dzialania: " << tm << " mikrosekund" << endl;
  238. return it;
  239. }
  240. else
  241. cout << "Nie ma takiej liczby!\n";
  242. }
  243.  
  244. //KOPIEC
  245. class kopiec{
  246. public:
  247. int tab[N]; //Tablica
  248. int size; //Rozmiar
  249. kopiec(); //Konstruktor bezparametrowy
  250. void insert_into(int v); //Metoda wstawiająca element o wartosci v do kopca
  251. void stworz_kopiec(int wielkosc, int tmptab[]); //Metoda tworząca kopiec z elementow pliku
  252. void usun_korzen(); //Metoda usuwająca korzeń
  253. void wyswietl(); //Metoda wyświetlająca kopiec
  254. void szukaj(int poczatek, int liczba); //Metoda wyszukująca element
  255. };
  256. kopiec::kopiec(){
  257. size = 0;
  258. }
  259. void kopiec::insert_into(int v){ //Wstawia element o wartosci v do kopca
  260. performanceCountStart = startTimer();
  261. tab[size + 1] = v; //zwiekszamy rozmiar o 1 i na ostatnie miejsce wstawiamy podana przez nas wartosc
  262. int s = size + 1;
  263. while (s != 1) { //kiedy rozmiar jest rozny (wiekszy) od 1 to sortujemy wszystkie elementy
  264. if (tab[s / 2] < tab[s]) {
  265. swap(tab[s / 2], tab[s]);
  266. s /= 2; //rozmiar dzielimy na 2 - zaczynamy od nowa tylko na innych pozycjach do czasu az s=1
  267. }
  268. else
  269. break;
  270. }
  271. size++;
  272. performanceCountEnd = endTimer();
  273. LONGLONG tm = performanceCountEnd.QuadPart - performanceCountStart.QuadPart;
  274. cout << "Czas dzialania: " << tm << " mikrosekund" << endl;
  275. }
  276. void kopiec::stworz_kopiec(int wielkosc, int tmptab[]){ //wstawia do tmptab wartosci z pliku
  277. performanceCountStart = startTimer();
  278. for (int i = 1; i<wielkosc + 1; i++){ //zaczyna od 1 bo 0 to ilosc elementow
  279. tab[size + 1] = tmptab[i]; //kazdy element tablicy w klasie kopiec jest teraz równy elementom z tablicy wczytanej z pliku
  280. int s = size + 1; //zwiekszamy rozmiar
  281. while (s != 1) { //tak jak wczesniej po kolei zamieniamy kazdy element jezeli poprzedni jest wiekszy od nastepnego -
  282. if (tab[s / 2] < tab[s]) { //aby spelniac zasade kopca - potomek ma niższa wartosc niz rodzic
  283. swap(tab[s / 2], tab[s]);
  284. s /= 2; //dzielimy s przez 2 i zaczynamy jeszcze raz - idziemy ku korzeniowi
  285. }
  286. else
  287. break;
  288. }
  289. size++;
  290. }
  291. performanceCountEnd = endTimer();
  292. LONGLONG tm = performanceCountEnd.QuadPart - performanceCountStart.QuadPart;
  293. cout << "Czas dzialania: " << tm << " mikrosekund" << endl;
  294. }
  295. void kopiec::usun_korzen() { //usuwamy korzen
  296. performanceCountStart = startTimer();
  297. tab[1] = tab[size]; //ostatni element jest teraz pierwszym - nowym korzeniem
  298. size--; //zmniejszamy rozmiar - cały proces usuwania korzenia
  299. int tmp = 1; //dalej sortowanie w dół
  300. while (tmp * 2 <= size){
  301. if (tab[tmp] < tab[tmp * 2] || tab[tmp] < tab[tmp * 2 + 1]) { //jesli tab[2] jest mniejszy od tab[4] lub tab[2] jest mniejszy od tab[5]
  302. if (tab[tmp * 2] > tab[tmp * 2 + 1] || tmp * 2 + 1 > size) { // i jesli tab[4] jest wiekszy od tab[5] lub 5 jest wiekszy od rozmiaru
  303. swap(tab[tmp], tab[tmp * 2]); //to zamieniamy tab[2] z tab[4]
  304. tmp = tmp * 2; //i tmp zwiekszyamy dwukrotnie - przechodzimy dalej (niżej)
  305. }
  306. else { //jesli tab[4] jest mniejszy od tab[5] i 5 jest mniejszy od rozmiwaru
  307. swap(tab[tmp], tab[tmp * 2 + 1]); //to zamieniamy tab[2] z tab[5]
  308. tmp = tmp * 2 + 1; //zwiekszamy tmp
  309. }
  310. }
  311. else
  312. break;
  313. }
  314. performanceCountEnd = endTimer();
  315. LONGLONG tm = performanceCountEnd.QuadPart - performanceCountStart.QuadPart;
  316. cout << "\nCzas dzialania: " << tm << " mikrosekund" << endl;
  317. }
  318. void kopiec::wyswietl() {
  319. int h = 1;
  320. for (int i = 1; i <= size; i++) {
  321. cout << tab[i] << " ";
  322. if (i == (pow(2, h) - 1)) { //warunek ktory sprawia ze mozna zobaczyć jak formuje sie drzewo
  323. cout << endl;
  324. h++; }
  325. }
  326. cout << endl;
  327. }
  328. void kopiec::szukaj(int poczatek, int liczba){
  329. int i;
  330. performanceCountStart = startTimer();
  331. if (poczatek <= size){
  332. for ( i = 1; i <= size; i++) //pętla od pierwszego do ostatniego podanego przez nas elementu
  333. {
  334. if (tab[i] == liczba) //jesli ktoryś element jest równy szukanej liczbie to wychodzimy z pętli
  335. break;
  336. }
  337. }
  338. performanceCountEnd = endTimer();
  339. if ( i < size + 1) cout << "Znalazles " << liczba << "! " << endl; //jesli przed dojściem pętli do końca wyszliśmy z niej to
  340. //oznacza wywołanie break'a czyli znalezlismy element
  341. if ( i >= size + 1) cout << "Nie znalazles " << liczba << "! " << endl; //jesli przeszlismy przez cala petle to oznacza ze nie znalezlismy
  342. //szukanego elementu - nie wywołał się break
  343. LONGLONG tm = performanceCountEnd.QuadPart - performanceCountStart.QuadPart;
  344. cout << "Czas dzialania: " << tm << " mikrosekund" << endl;
  345. }
  346.  
  347.  
  348. void main()
  349. {
  350. MENU:
  351. system("CLS");
  352. string nazwa_pliku;
  353. char a,x;
  354. cout << "*------------------- MENU -----------------*\n"
  355. "| Na czym chcesz dzialac? |\n"
  356. "|------------------------------------------|\n"
  357. "| |\n"
  358. "| 1. Tablica - wcisnij 1 |\n"
  359. "| 2. Lista - wcisnij 2 |\n"
  360. "| 3. Kopiec - wcisnij 3 |\n"
  361. "| 4. Zakoncz - wcisnij 4 |\n"
  362. "| |\n"
  363. "*------------------------------------------*\n";
  364. TUTAJ:
  365. cin >> a;
  366. switch (a)
  367. {
  368. case '1': {
  369. int rozm, n, m, wart, wart1;
  370.  
  371. cout << "Z jakiego pliku chcesz wczytac liczby?\n"
  372. "Podstawowe pliki: kolejne.txt, losowe.txt\n";
  373. cin >> nazwa_pliku;
  374. t = new char[nazwa_pliku.size() + 1];
  375. strcpy(t, nazwa_pliku.c_str()); //zamieniamy string na char
  376.  
  377. cout << "Podaj rozmiar tablicy:" << endl;
  378. cin >> rozm;
  379. int * tablica = new int[rozm]; //uzupelniamy tablice tyloma elementami ile chcemy
  380.  
  381. printf("Odczyt z pliku i wyswietlenie zawartosci tablicy");
  382. FILE* plik = fopen(t, "rt"); //otwarcie pliku
  383. int ilosc_wczytanych = 0; //zmienna ktora pozniej wyswietli nam ile jest liczb w pliku
  384. while (ilosc_wczytanych - 1 < rozm && fscanf(plik, "%ld", &tablica[ilosc_wczytanych]) == 1) //wczytanie po kolei kazdej liczby
  385. ilosc_wczytanych++; //zwiększamy zmienna dopoki nie dojdzie do konca
  386. fclose(plik); //bezpiecznie zamykamy plik
  387. printf("\nIlosc liczb w pliku = %d\n", tablica[0] );
  388. for (int i = 0; i < rozm; i++) //wypisanie liczb na ekran
  389. printf("tab[%2d]=%4ld\n", i, tablica[i + 1]);
  390.  
  391. cout << "\nKtory element chcesz usunac? (pierwszy element - tab[ 0]) ";
  392. cin >> n;
  393. usun(n, tablica, rozm);
  394.  
  395. cout << "\nW ktorym miejscu chcesz dodac element? (pierwszy element - tab[ 0]) ";
  396. cin >> m;
  397. cout << "Podaj wartosc elementu: ";
  398. cin >> wart;
  399. dodaj(m, tablica, rozm, wart);
  400.  
  401. cout << "\nJaka wartosc chcesz wyszukac? ";
  402. cin >> wart1;
  403. wyszukaj(tablica, rozm, wart1);
  404.  
  405. cout << "\nChcesz wrocic do menu? t/n ";
  406. cin >> x;
  407. if (x == 't')
  408. goto MENU;
  409. else break;
  410. }
  411. case '2': {
  412. char a;
  413. int liczba, liczba2, liczba3, liczba4, liczba5;
  414.  
  415. cout << "Z jakiego pliku chcesz wczytac liczby?\n"
  416. "Podstawowe pliki: kolejne.txt, losowe.txt\n";
  417. cin >> nazwa_pliku;
  418. t = new char[nazwa_pliku.size() + 1];
  419. strcpy(t, nazwa_pliku.c_str()); //zamieniamy string na char
  420.  
  421. cout << "Wyswietlac od przodu (p) czy od tylu (t) ? ";
  422. cin >> a;
  423.  
  424. cout << "Ile elementow chcesz wczytac: " << endl;
  425. cin >> liczba;
  426. lista L(liczba + 1); //tworzymy liste - odczytujemy wartosci z pliku
  427. lista::inter it = L.begin(); //zwracamy początek listy
  428. L.stworz(it, liczba); //tworzymy liste - przypisujemy wartości kazdemu elementowi
  429. if (a == 'p') L.wyswietl(); //wyswietlanie
  430. else L.wyswietl1();
  431.  
  432. cout << "\nPodaj gdzie chcesz wstawic liczbe" << endl;
  433. cin >> liczba3;
  434. cout << "Podaj jaka liczbe chcesz wstawic" << endl;
  435. cin >> liczba4;
  436. it = L.get(liczba3); //ustawiamy miejsce (liczba3) w ktore chcemy wstawic liczba4
  437. L.dodajl(it, liczba4); //wstawiamy liczba4
  438. if (a == 'p') L.wyswietl(); //wyswietlanie
  439. else L.wyswietl1();
  440.  
  441. cout << "\nPodaj jaka liczbe chcesz usunac" << endl;
  442. cin >> liczba2;
  443. L.usunl(liczba2); //usuwamy element
  444. if (a == 'p') L.wyswietl(); //wyswietlanie
  445. else L.wyswietl1();
  446.  
  447. cout << "\nPodaj co chcesz znalezc" << endl;
  448. cin >> liczba5;
  449. L.szukajl(liczba5); //metoda wyszukująca element
  450.  
  451. cout << "\nChcesz wrocic do menu? t/n ";
  452. cin >> x;
  453. if (x == 't')
  454. goto MENU;
  455. else break;
  456.  
  457. }
  458. case '3':
  459. {
  460. kopiec K; //tworzymy kopiec
  461. int wielkosc, one, q;
  462.  
  463. cout << "Z jakiego pliku chcesz wczytac liczby?\n"
  464. "Podstawowe pliki: kolejne.txt, losowe.txt\n";
  465. cin >> nazwa_pliku;
  466. t = new char[nazwa_pliku.size() + 1];
  467. strcpy(t, nazwa_pliku.c_str()); //zamieniamy string na char
  468.  
  469. cout << "Podaj ile elementow chcesz wprowadzic do kopca: \n";
  470. cin >> wielkosc;
  471.  
  472. int * tmptab = new int[wielkosc + 1]; //tworzymy tymczasową tablice
  473. FILE* plik = fopen(t, "rt"); //otwarcie pliku
  474. int ilosc_wczytanych = 0; //zmienna ktora pozniej wyswietli nam ile jest liczb w pliku
  475. while (ilosc_wczytanych - 1<wielkosc && fscanf(plik, "%ld", &tmptab[ilosc_wczytanych]) == 1)//wczytanie po kolei kazdej liczby
  476. ilosc_wczytanych++; //zwiększamy zmienna dopoki nie dojdzie do konca
  477. fclose(plik); //bezpieczne zamknięcie pliku
  478. printf("\nIlosc odczytanych liczb = %d\n", tmptab[0]);
  479.  
  480. K.stworz_kopiec(wielkosc, tmptab); //tworzymy kopiec z elementow odczytanych z pliku
  481. K.wyswietl(); //wyswietlamy jego zawartosc
  482.  
  483. cout << "\nJaka liczbe chcesz dodac? ";
  484. cin >> one;
  485. K.insert_into(one);
  486. K.wyswietl();
  487.  
  488. cout << "\nJaka liczbe chcesz wyszukac? ";
  489. cin >> q;
  490. K.szukaj(1, q);
  491. system("pause");
  492.  
  493. cout << "\nUsuwa korzen";
  494. K.usun_korzen();
  495. K.wyswietl();
  496.  
  497. cout << "\nChcesz wrocic do menu? t/n ";
  498. cin >> x;
  499. if (x == 't')
  500. goto MENU;
  501. else break;
  502. }
  503. case '4': cout << "Zakonczyles prace!\n"; break;
  504.  
  505. default: cout << "Nie ma takiej opcji! Wpisz jeszcze raz...\n";
  506. goto TUTAJ;
  507. }
  508. system("pause");
  509. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement