Advertisement
Guest User

Untitled

a guest
Jan 18th, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 8.65 KB | None | 0 0
  1. WYSZUKIWANIE
  2.  
  3. #include <iostream>
  4. #include <ctime>
  5. #include <cmath>
  6. #include <stdio.h>
  7. #include <string>
  8. #include <stdlib.h>
  9.  
  10. using namespace std;
  11.  
  12. const int N = 100; //długość tesktu
  13. //const int M = 5 ; //długość wzorca
  14.  
  15. char T[N];
  16. //char P[M];
  17.  
  18. void init(){
  19.     int i;
  20.     for(i=0;i<N;i++)
  21.         T[i] = (char)(rand()%28 + 65);
  22.     T[i]= '\0';
  23. }
  24.  
  25. void searchN(){
  26.     cout << "Tekst: " << endl;
  27.     for(int i = 0; i<N; i++) cout << T[i];
  28.     cout << "\nPodaj wzorzec: " << endl;
  29.     string wzorzec;
  30.     getline(cin, wzorzec);
  31.     int M = wzorzec.length();
  32.     //for(int i = 0; i<M; i++) cout << wzorzec[i]; cout << endl;
  33.     int i = 0;
  34.     bool czyZnaleziono = false;
  35.     while(i<=N-M){
  36.         int j = M-1;
  37.         while(j>-1 && T[i+j]==wzorzec[j]) j--;
  38.         if(j==-1){
  39.             cout << "znaleziono na pozycji " << i << endl;
  40.             czyZnaleziono = true;
  41.         }
  42.         i++;
  43.     }
  44.     if(!czyZnaleziono) cout << "Nie znaleziono" << endl;
  45.  
  46. } //zadanie 1
  47.  
  48. void KRsearch(){} //zadanie 2
  49. void BMsearch(){} //zadanie
  50.  
  51. int main(int argc, char *argv[]){
  52.     srand(time(NULL));
  53.     init();
  54.     searchN(); //zadanie 1
  55.     KRsearch(); //zadanie 2
  56.     BMsearch(); //zadanie 3
  57. }
  58.  
  59.  
  60. HASZ
  61.  
  62. #include <iostream>
  63. #include <ctime>
  64. #include <cmath>
  65. #include <stdio.h>
  66. #include <string.h>
  67. #include <stdlib.h>
  68.  
  69. using namespace std;
  70.  
  71. const int N = 157;
  72. char* T[N] = {0}; //tablica
  73.  
  74. int hash1(char* slowo){
  75.     int n = strlen(slowo);
  76.     int h = 0;
  77.     for(int i = n-1; i>=0; i--){
  78.         h += pow(3,i)*slowo[i];
  79.     }
  80.     h %= 157; //163;
  81.     return h;
  82. } //funkcja haszująca
  83.  
  84. char* init(){ //generuje losowy ciąg n-znakowy
  85.     int n = rand()%9+1;
  86.     int i;
  87.     char *t = new char[n+1];
  88.     for(i=0;i<n;i++)
  89.         t[i] = (char)(rand()%28 + 65);
  90.     t[i]= '\0';
  91.     return t;
  92. }
  93.  
  94. void dodaj(char* slowo){
  95.     int hasz = hash1(slowo);
  96.     while(T[hasz]!=0) hasz = (hasz+1)%N;
  97.     T[hasz] = slowo;
  98. }
  99.  
  100. void drukuj(){
  101.     for(int i = 0; i<N; i++){
  102.         cout << "T[" << i << "]: " << T[i] << endl;
  103.         //for (list<char*>::iterator it=T[i].begin(); it != T[i].end(); ++it) cout << *it << "; "; cout << endl;
  104.     }
  105. } //wydruk całej tablicy (pozycja + słowo)
  106.  
  107. int main(int argc, char *argv[]){
  108.     srand( time( NULL ) );
  109.     for(int i =0; i< N;i++){
  110.          char *s = init();
  111.          dodaj(s);
  112.     }
  113.     drukuj();
  114. }
  115.  
  116. PRIM
  117.  
  118. #include <iostream>
  119. #include <ctime>
  120. #include <iomanip>
  121. using namespace std;
  122.  
  123. const int N = 5;
  124. int graf[N][N]={
  125. {0,2,100,100,6},
  126. {100,0,1,3,100},
  127. {4,100,0,1,2},
  128. {100,100,100,0,1},
  129. {3,100,100,100,0}
  130. };
  131.  
  132. int poprzednik[N]={0};
  133. int odwiedzony[N]={0};
  134. int waga[N]={0};
  135.  
  136.  
  137. int min()
  138. {
  139.    
  140.     int poz;
  141.     int min=100;
  142.     for(int j=0;j<N;j++)
  143.     {
  144.         if(odwiedzony[j]==0 && min>waga[j])
  145.             {
  146.                 min=waga[j];
  147.                 poz=j;
  148.             }  
  149.     }
  150.     odwiedzony[poz]=1;
  151.     return poz;
  152. }
  153.  
  154. void Prim(int s)
  155. {
  156. for(int i=0;i<N;i++)
  157.         waga[i]=100;
  158.  
  159. waga[s]=0;
  160. poprzednik[s]=-1;
  161.  
  162. for(int i=0;i<N;i++)
  163.     {
  164.     int u=min();
  165.     for(int v=0;v<N;v++)
  166.         {
  167.         if(odwiedzony[v]==0 && graf[u][v]<waga[v])
  168.         {
  169.             poprzednik[v]=u;
  170.             waga[v]=graf[u][v];
  171.         }
  172.             }      
  173.     }  
  174. }
  175.  
  176. int main()
  177. {
  178. int s;
  179. cout<<"Podaj wierzcholek od ktorego zaczynasz (1 - "<<N<<"): ";
  180. cin>>s;
  181. s=s-1;
  182. Prim(s);
  183.  
  184. cout<<"w: ";
  185. for(int i=0;i<N;i++)
  186.     cout<<setw(2)<<i+1<<" ";
  187. cout<<endl;
  188. cout<<"p: ";
  189. for(int i=0;i<N;i++)
  190.     cout<<setw(2)<<poprzednik[i]+1<<" ";
  191. cout<<endl;
  192. cout<<"k: ";
  193. for(int i=0;i<N;i++)
  194.     cout<<setw(2)<<waga[i]<<" ";
  195.    
  196. }
  197.  
  198. DIJKSTRA
  199.  
  200. #include <iostream>
  201. #include <ctime>
  202. #include <iomanip>
  203. using namespace std;
  204.  
  205. const int N = 5;
  206. int graf[N][N]={
  207. {0,2,100,100,6},
  208. {100,0,1,3,100},
  209. {4,100,0,100,2},
  210. {100,100,1,0,1},
  211. {3,100,100,100,0}
  212. };
  213.  
  214. int odwiedzony[N]={0};
  215. int droga[N]={0};
  216. int poprzednik[N]={0};
  217.  
  218. int min()
  219. {
  220.    
  221.     int poz;
  222.     int min=100;
  223.     for(int j=0;j<N;j++)
  224.     {
  225.         if(odwiedzony[j]==0 && min>droga[j])
  226.             {
  227.                 min=droga[j];
  228.                 poz=j;
  229.             }  
  230.     }
  231.     odwiedzony[poz]=1;
  232.     return poz;
  233. }
  234.  
  235. void dijkstra(int s){
  236.     for(int i=0;i<N;i++)
  237.         {
  238.         droga[i]=100;      
  239.         poprzednik[i]=-1;
  240.         odwiedzony[i]=0;
  241.         }
  242.     droga[s]=0;
  243.    
  244.     for(int x=0;x<N;x++)
  245.         {
  246.         int u=min();
  247.         for(int v=0;v<N;v++)
  248.             {
  249.             if(graf[u][v]>0)
  250.                 {
  251.                 if(droga[v]>droga[u]+graf[u][v])
  252.                     {
  253.                     droga[v]=droga[u]+graf[u][v];
  254.                     poprzednik[v]=u;
  255.                     }
  256.                 }
  257.             }
  258.         }          
  259. }
  260.  
  261.  
  262. int main()
  263. {
  264. int s;
  265. cout<<"Podaj wierzcholek od ktorego zaczynasz (1 - "<<N<<"): "<<endl;
  266. cin>>s;
  267. s=s-1;
  268. dijkstra(s);
  269. cout<<endl;
  270. cout<<"w: ";
  271. for(int i=0;i<N;i++)
  272. {
  273.     cout<<setw(2)<<i+1<<" ";
  274. }
  275. cout<<endl;
  276. cout<<"p: ";
  277. for(int i=0;i<N;i++)
  278. {
  279. cout<<setw(2)<<poprzednik[i]+1<<" ";
  280. }
  281. cout<<"\nd: ";
  282. for(int i=0;i<N;i++)
  283. {
  284. cout<<setw(2)<<droga[i]<<" ";
  285.  
  286. }
  287. }
  288.  
  289. GRAFY BFS DFS
  290.  
  291. #include <iostream>
  292. #include <time.h>
  293. #include <queue>
  294. using namespace std;
  295. const int N = 5;
  296. int graf[N][N];
  297. int odwiedzony[N]={0}; //0 – nieodwiedzony, 1 – odwiedzony
  298.  
  299.  
  300. void init(){ //losowy graf
  301.  for(int i=0;i<N;i++)
  302.  for(int j=0;j<N;j++)
  303.  graf[i][j]=rand()%2;
  304. }
  305. queue <int> kolejka;
  306.  
  307.  
  308. void listaSasiedztwa(){
  309.     for(int s=0;i<N;s++){
  310.         cout << s;
  311.         for(int i=0;i<N;i++){
  312.             if(graf[s][i]==1){
  313.                 cout << "->" << i;
  314.             }
  315.         }
  316.     }
  317.     cout << endl;
  318. }
  319.  
  320.  
  321. void BFS(int s){
  322. for(int i=0;i<N;i++)
  323. {
  324.     odwiedzony[i]=0;
  325. }
  326. odwiedzony[s]=1;
  327. kolejka.push(s);
  328. while(!kolejka.empty())
  329.     {
  330.         int u=kolejka.front();
  331.         cout<<u<<" ";
  332.         for(int i=0;i<N;i++)
  333.             if(odwiedzony[i]==0 && graf[u][i]==1)
  334.             {
  335.                 odwiedzony[i]=1;
  336.                 kolejka.push(i);
  337.             }
  338.         kolejka.pop(); 
  339.     }
  340.    
  341. }
  342.  
  343.  
  344. void visit(int u)
  345. {
  346.     cout<<u<<" ";
  347.     odwiedzony[u]=1;
  348.     for(int i=0;i<N;i++)
  349.     {
  350.         if(odwiedzony[i]==0 && graf[u][i]==1)
  351.         visit(i);
  352.     }
  353. }
  354.  
  355. void DFS(){
  356. for(int i=0;i<N;i++)
  357.     {
  358.     odwiedzony[i]=0;
  359.     }
  360.  
  361. for(int i=0;i<N;i++)
  362.     {
  363.     if(odwiedzony[i]==0)
  364.     visit(i);
  365.     }
  366. }
  367.  
  368.  
  369.  
  370.  
  371. int main(int argc, char *argv[]){
  372. srand(time(NULL)); init();
  373. cout<<"Wygenerowany graf:\n";
  374. for(int i=0;i<N;i++)
  375. {
  376. for(int j=0;j<N;j++)
  377. {
  378.     cout<<graf[i][j]<<" ";
  379. }
  380. cout<<endl;
  381. }
  382. cout<<"DFS: \n";
  383. DFS();
  384.  
  385.  
  386. cout<<"\nBFS: \n";
  387. BFS(0);
  388. }
  389.  
  390.  
  391. KOLEJKA
  392.  
  393. #include <iostream>
  394. using namespace std;
  395. const int N=5;
  396. int rozmiarKolejki=0;
  397. int kolejka[N]={0};
  398.  
  399.  
  400.  
  401. void zanurzanie(int N, int i)
  402. {
  403.     int l,r,wiekszy;
  404.     l=2*i+1;
  405.     r=2*i+2;
  406.     if(l<=N && kolejka[l]>kolejka[i])
  407.     wiekszy=l;
  408.     else
  409.     wiekszy=i;
  410.     if(r<=N && kolejka[r]>kolejka[wiekszy])
  411.     wiekszy=r;
  412.     if(wiekszy!=i)
  413.     {
  414.         swap(kolejka[i],kolejka[wiekszy]);
  415.         zanurzanie(N,wiekszy);
  416.         }  
  417. }
  418. void wynurzanie(int i)
  419. {
  420.     int ojciec;
  421.     if(i>0)
  422.     {
  423.     ojciec=(i-1)/2;
  424.     if(kolejka[i]>kolejka[ojciec])
  425.     {
  426.         swap(kolejka[i],kolejka[ojciec]);
  427.         wynurzanie(ojciec);
  428.         }  
  429.     }
  430.    
  431. }
  432.  
  433. void insert(int i)
  434. {
  435.     kolejka[rozmiarKolejki]=i;
  436.     wynurzanie(rozmiarKolejki);
  437.     rozmiarKolejki++;
  438.    
  439. }
  440.  
  441.  
  442.  
  443. int extract()
  444. {
  445.     if(rozmiarKolejki<1)
  446.     cout<<"Kolejka pusta"<<endl;
  447.     else
  448.     {
  449.         swap(kolejka[0],kolejka[rozmiarKolejki]);
  450.         rozmiarKolejki=rozmiarKolejki-1;
  451.         zanurzanie(rozmiarKolejki,0);
  452.     }
  453.    
  454. }
  455.  
  456. int main()
  457. {
  458. insert(12);
  459. insert(15);
  460. insert(10);
  461. insert(3);
  462. for(int i=0;i<rozmiarKolejki;i++)
  463. cout<<kolejka[i]<<" ";     
  464.  
  465. extract();
  466. extract();
  467. cout<<endl;
  468. for(int i=0;i<rozmiarKolejki;i++)
  469. cout<<kolejka[i]<<" "; 
  470.  
  471. insert(7);
  472. insert(5);
  473. insert(9);
  474. insert(11);
  475. cout<<endl;
  476. for(int i=0;i<rozmiarKolejki;i++)
  477. cout<<kolejka[i]<<" "; 
  478.  
  479. extract();
  480. extract();
  481. extract();
  482. extract();
  483. extract();
  484. extract();
  485. cout<<endl;
  486. for(int i=0;i<rozmiarKolejki;i++)
  487. cout<<kolejka[i]<<" "; 
  488. }
  489.  
  490.  
  491. KOPIEC
  492.  
  493. #include <iostream>
  494. using namespace std;
  495.  
  496. const int N=14;
  497. int kopiec[N]={7,6,8,5,6,4,1,2,3,2,6,4,6,6};
  498.  
  499.  
  500. void zanurzanie(int N, int i)
  501. {
  502.     int l,r,wiekszy;
  503.     l=2*i+1;
  504.     r=2*i+2;
  505.     if(l<N && kopiec[l]>kopiec[i])
  506.     wiekszy=l;
  507.     else
  508.     wiekszy=i;
  509.     if(r<N && kopiec[r]>kopiec[wiekszy])
  510.     wiekszy=r;
  511.     if(wiekszy!=i)
  512.     {
  513.         swap(kopiec[i],kopiec[wiekszy]);
  514.         zanurzanie(N,wiekszy);
  515.         }  
  516. }
  517. void wynurzanie(int i)
  518. {
  519.     int ojciec;
  520.     if(i>0)
  521.     {
  522.     ojciec=(i-1)/2;
  523.     if(kopiec[i]>kopiec[ojciec])
  524.     {
  525.         swap(kopiec[i],kopiec[ojciec]);
  526.         wynurzanie(ojciec);
  527.         }  
  528.     }
  529.    
  530. }
  531.  
  532. void tworzenie()
  533. {
  534.     for(int i=N/2;i>=0;i--)
  535.     zanurzanie(N,i);
  536. }
  537.  
  538. void sortowanie()
  539. {
  540.     int X=N-1;
  541.     for(int i=X;i>0;i--)
  542.     {
  543.         swap(kopiec[0],kopiec[i]);
  544.        
  545.         X--;
  546.         zanurzanie(X,0);
  547.     }
  548. }
  549.  
  550.  
  551. int main()
  552. {
  553.    
  554. cout<<"Zanurzanie: ";
  555. zanurzanie(N,0);
  556. for(int i=0;i<N;i++)
  557. cout<<kopiec[i]<<" ";
  558.  
  559. cout<<"\nWynurzanie: ";
  560. wynurzanie(13);
  561. for(int i=0;i<N;i++)
  562. cout<<kopiec[i]<<" ";
  563.  
  564. cout<<"\nTworzenie: ";
  565. tworzenie();
  566. for(int i=0;i<N;i++)
  567. cout<<kopiec[i]<<" ";
  568.  
  569. cout<<"\nSortowanie: ";
  570. sortowanie();
  571. for(int i=0;i<N;i++)
  572. cout<<kopiec[i]<<" ";
  573. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement