View difference between Paste ID: MKu2c4mL and 3Y61EhAg
SHOW: | | - or go back to the newest paste.
1-
								------------------------------------STOS---------------------------------------------
1+
								------------------------------------STOS------------------------------------------
2
struct stos{ int data; stos* next;};
3-
#include <iostream>
3+
4-
#include <time.h>
4+
5
    else{return st == nullptr;}}
6-
using namespace std;
6+
7
{stos* st_2 = nullptr;
8-
struct stos
8+
    *ilosc=0;float suma =0; float sre=0;
9-
{
9+
10-
    int data;
10+
    {suma =suma+st->data; (*ilosc)++; push(st_2, st->data); st=st->next;}
11-
    stos* next;
11+
12-
};
12+
    {push(st, st_2->data); st_2=st_2->next;}
13
    float x=static_cast<float>(*ilosc);
14
    sre=suma/x;return sre;}
15
void push (stos* &st, int new_data){
16
stos* dodana_wartosc = new stos; dodana_wartosc -> data = new_data;
17-
    else{
17+
dodana_wartosc -> next = st; st = dodana_wartosc;}
18-
    cout << " W stosie cos jednak bylo" << endl;
18+
void pop(stos* &st){if(st != nullptr){
19-
    return st == nullptr;
19+
    stos* temp = st; st = st -> next; delete temp;}
20-
    }
20+
    else cout << "Usuwanie nie powiodlo sie, stos jest pusty" << endl; }
21-
}
21+
22
if (st == 0) cout << "stos jest pusty" << endl;
23-
{
23+
else{ cout << "na gorze stosu jest liczba :" << st -> data << endl;}}
24-
    stos* st_2 = nullptr;
24+
25-
    *ilosc=0;
25+
26-
    float suma =0;
26+
struct element {int x; element* nast;};
27-
    float sre=0;
27+
struct kolejka {element* poczatek; element* koniec;};
28
kolejka stworz_kolejke ()
29-
    {
29+
{kolejka nowa_kolejka; nowa_kolejka.poczatek = nullptr;
30-
        suma =suma+st->data;
30+
 nowa_kolejka.koniec = nullptr; return nowa_kolejka;}
31-
        (*ilosc)++;
31+
32-
        push(st_2, st->data);
32+
{element* nowy = new element; nowy -> x = rd; nowy -> nast = nullptr;
33-
        st=st->next;
33+
    if(q.koniec != nullptr) q.koniec -> nast = nowy; q.koniec=nowy;
34-
    }
34+
    if(q.poczatek == nullptr) q.poczatek = nowy;}
35
void usun_elem_pocz (kolejka &q)
36-
    {
36+
{if (q.poczatek == nullptr) return; element* temp = q.poczatek;
37-
        push(st, st_2->data);
37+
 q.poczatek = q.poczatek -> nast; delete temp;
38-
        st_2=st_2->next;
38+
 if(q.poczatek == nullptr) q.koniec == nullptr;}
39-
    }
39+
40
 {while (q.poczatek != nullptr)
41-
    sre=suma/x;
41+
    {cout << q.poczatek -> x << endl; usun_elem_pocz(q);}}
42-
    return sre;
42+
43-
}
43+
44
struct element {int data; element* next;};
45-
    cout << new_data << endl;
45+
struct lista {element* head; element* tail; int el_count;};
46-
stos* dodana_wartosc = new stos;
46+
lista create_list (){lista new_list; new_list.head = nullptr; new_list.tail = nullptr;
47-
dodana_wartosc -> data = new_data;
47+
new_list.el_count = 0; return new_list;}
48-
dodana_wartosc -> next = st;
48+
void add_tail(lista &l, int r_d){ element* n_tail = new element; n_tail -> data = r_d; n_tail -> next = nullptr;
49-
st = dodana_wartosc;
49+
if(l.tail != nullptr)l.tail -> next = n_tail;
50-
}
50+
else l.head = n_tail; l.tail = n_tail; l.el_count ++;}
51-
void pop(stos* &st){
51+
52-
    if(st != nullptr){
52+
element* n_head = new element; n_head -> data = r_d; n_head -> next = l.head; l.head = n_head;
53-
        stos* temp = st;
53+
if(l.tail == nullptr) l.tail == n_head; l.el_count ++;}
54-
        st = st -> next;
54+
55-
        delete temp;
55+
void add_position(lista &l, int r_d, int posit){ if(posit <0 or posit > l.el_count) return; if(posit == 0)
56-
        cout << "Usuwanie powiodlo sie" << endl;
56+
    {add_head(l, r_d); return;}
57-
        }
57+
if(posit == l.el_count){ add_tail(l, r_d); return;}
58-
    else
58+
59-
        cout << "Usuwanie nie powiodlo sie, stos jest pusty" << endl;
59+
for(int i=0; i < posit -1; i++) temp = temp -> next;
60-
}
60+
element* n_e = new element; n_e -> data = r_d; n_e -> next = temp -> next;
61
temp -> next = n_e; l.el_count ++;}
62
void delete_tail(lista &l){ if(l.tail == nullptr) return; element* temp = l.tail;
63-
if (st == 0)
63+
if(l.el_count == 1) {l.tail == nullptr; l.head == nullptr;}
64-
    cout << "stos jest pusty" << endl;
64+
else{ element * tempor = l.head;
65-
else{
65+
for (int i =1; i< l.el_count -1; i++) {tempor = tempor -> next;}
66-
    cout << "na gorze stosu jest liczba :" << st -> data << endl;
66+
l.tail = tempor; l.tail -> next = nullptr;}
67-
}
67+
l.el_count --; delete temp;}
68-
}
68+
void delete_head(lista &l){if(l.tail == nullptr) return; element* temp = l.head; l.head = l.head -> next;
69-
int main()
69+
delete temp; if(l.head  == nullptr) l.tail = nullptr; l.el_count--;}
70-
{
70+
71-
    float sre;
71+
if (posit < 0 or posit > l.el_count){cout << "Podano niewlasciwa pozycje" << endl;return;}
72-
    int *ilosc;
72+
if (posit == 0){delete_head(l);return;}
73-
    ilosc= new int;
73+
if(posit == l.el_count){delete_tail(l);return;}
74-
    int w;
74+
element* temp = l.head; for (int i =1; i< l.el_count -1; i++) {temp = temp -> next;}
75-
    stos* st = nullptr;
75+
element* temp_delete = temp -> next; temp -> next = temp_delete -> next;
76-
    srand(time(NULL));
76+
delete temp_delete; l.el_count --;}
77-
    while (w!=6){
77+
void delete_list(lista &l){ while(l.head != nullptr) {delete_head(l);}}
78-
    cout << " 1 - sprawdzenie czy stos jest pusty" << endl;
78+
void show_list(lista l){element* temp = l.head; while (temp)
79-
    cout << " 2 - dodanie elementu na stos" << endl;
79+
    {cout << temp -> data << endl; temp = temp -> next;}}
80-
    cout << " 3 - usuniecie ze stosu" << endl;
80+
int parzyste(lista l){int i=0; element* temp = l.head;
81-
    cout << " 4 - pobranie elementu ze stosu" << endl;
81+
while (temp){if(temp->data%2==0) i++; temp = temp -> next;} return i;}
82-
    cout << " 5 - obliczyc srednia elementow" << endl;
82+
void show_on_position(lista l, int posit){
83-
    cout << " 6 - wyjscie z programu" << endl;
83+
int c = 0; if (posit < 0 or posit > l.el_count) {return;}
84-
    cout << " Co chcesz zrobic?" << endl;
84+
85-
    cin >> w;
85+
while(l.el_count != 0){c++; if (c == posit) cout << temp -> data << endl; temp = temp -> next; l.el_count --;}}
86
---------------------------------------------LISTA DWUKIERUNKOWA------------------------------------------
87-
    switch (w)
87+
88-
    {
88+
struct element {int data; element* next; element* prev; };
89-
    case 1: is_Empty(st); break;
89+
struct dlist {element* head; element* tail; int el_count; };
90-
    case 2: push (st,rand()%20); break;
90+
dlist create_empty_dlist(){ dlist dl; dl.head = nullptr; dl.tail = nullptr; dl.el_count = 0; return dl;}
91-
    case 3: pop(st); break;
91+
element* create_element(int n_d){element* n_e = new element; n_e -> data = n_d;
92-
    case 4: take_element(st); break;
92+
n_e -> next = nullptr; n_e -> prev = nullptr; return n_e;}
93-
    case 5: sre=srednia(st ,ilosc);
93+
void add_tail(int n_d, dlist &dl){ element* n_e = create_element(n_d);
94-
            cout<< "wartosc srednia wynosi :" << sre << endl;
94+
if (dl.el_count == 0) dl.head = n_e; else{ dl.tail -> next = n_e; n_e -> prev = dl.tail;}
95-
           break;
95+
dl.tail = n_e; dl.el_count ++;} if (dl.el_count == 0) dl.tail = n_e;
96-
    case 6:  cout << "juz nic nie mozesz zrobic " << endl; break;
96+
else{ dl.head -> prev = n_e; n_e -> next = dl.head; } dl.head = n_e; dl.el_count ++;}
97-
    default: cout << " Bledny wybor" << endl;
97+
element* find_position(dlist dl, int posit){if (posit < 0 or posit > dl.el_count-1) return nullptr;
98-
    }
98+
element* temp = dl.head; for (int i =0; i < posit; i++) temp = temp -> next; return temp;}
99-
    }
99+
void add_position(int n_d, dlist &dl, int posit){if (posit < 1 or posit > dl.el_count){return;}
100-
    return 0;
100+
if (posit == 1) {add_head(n_d, dl); return;}
101-
}
101+
if( posit == dl.el_count) {add_tail(n_d, dl); return;}
102
element* temp = dl.head; for(int i=0; i < posit -1; i++) temp = temp -> next;
103
element* n_e = new element; n_e -> data = n_d; n_e -> next = temp -> next;
104
temp -> next = n_e; dl.el_count ++;}
105-
#include <iostream>
105+
void delete_head(dlist &dl){ if (dl.el_count == 0){ return;}
106-
#include <time.h>
106+
else{ element* temp = dl.head;
107-
#include <stdio.h>
107+
if (dl.el_count == 1) {dl.head = nullptr; dl.tail = nullptr;}
108
else {dl.head = dl.head -> next; dl.head -> prev = nullptr;} delete temp; dl.el_count --;}}
109-
using namespace std;
109+
110
if (dl.el_count == 0) {return;}
111-
struct element {
111+
else{ element* temp = dl.tail; if (dl.el_count == 1) {dl.tail = nullptr; dl.head = nullptr;}
112-
int x;
112+
else{ dl.tail = dl.tail -> prev; dl.tail -> next = nullptr;} delete temp;
113-
element* nast;
113+
dl.el_count --;}}
114-
};
114+
void delete_position(dlist &dl, int posit){ if (posit < 1 or posit > dl.el_count){ return;}
115-
struct kolejka {
115+
if (posit == 1) {delete_head(dl); return;}
116-
element* poczatek;
116+
if(posit == dl.el_count){delete_tail(dl); return;}
117-
element* koniec;
117+
element* temp = dl.head; for (int i =1; i< posit -1; i++) {temp = temp -> next;}
118-
};
118+
element* temp_delete = temp -> next; temp -> next = temp_delete -> next;
119
delete temp_delete; dl.el_count --;}
120-
{
120+
void show_list(dlist dl){ element* temp = dl.head;
121-
    kolejka nowa_kolejka;
121+
while (temp) {cout << temp -> data << endl; temp = temp -> next;}}
122-
    nowa_kolejka.poczatek = nullptr;
122+
void delete_list(dlist &dl){ while(dl.head != nullptr){delete_head(dl);}}
123-
    nowa_kolejka.koniec = nullptr;
123+
124-
    return nowa_kolejka;
124+
125-
}
125+
{ int x; element* lewy; element* prawy; element* gora;};
126
struct drzewo {element* r;};
127-
{
127+
128-
    cout << rd << endl;
128+
{ drzewo nowe_drzewo; nowe_drzewo.r = nullptr; return nowe_drzewo;}
129-
    element* nowy = new element;
129+
130-
    nowy -> x = rd;
130+
{element *p; element *nowy_element = new element; nowy_element -> gora = nullptr;
131-
    nowy -> nast = nullptr;
131+
 nowy_element -> lewy = nullptr; nowy_element -> prawy = nullptr; nowy_element -> x = rd;
132-
    if(q.koniec != nullptr) q.koniec -> nast = nowy;
132+
 p = root.r; if(!p) root.r = nowy_element;
133-
    q.koniec=nowy;
133+
 else{while (1){if (rd < p -> x){ if (!p -> lewy){p -> lewy = nowy_element; break;}
134-
    if(q.poczatek == nullptr) q.poczatek = nowy;
134+
   else p = p -> lewy;} else { if (!p -> prawy){ p -> prawy = nowy_element;break;}
135-
}
135+
     else p = p -> prawy;}} nowy_element -> gora = p;}}
136
int wys_drzewo(element *root)
137-
{
137+
{if(root==nullptr) return 0; wys_drzewo(root->lewy);
138-
    if (q.poczatek == nullptr) return;
138+
    cout<< root->x <<" "; wys_drzewo(root->prawy);}
139-
    element* temp = q.poczatek;
139+
140-
    q.poczatek = q.poczatek -> nast;
140+
{if(root==nullptr) return false; if(root->x==szukana) return true;
141-
    delete temp;
141+
else{if (root->x < szukana) czy_istnieje(root->prawy, szukana);
142-
    if(q.poczatek == nullptr) q.koniec == nullptr;
142+
        else czy_istnieje(root->lewy, szukana);}}
143-
}
143+
---------------------------SORTOWANIE PRZEZ WYBIERANIE-----------------------------
144
int find_max_el(int *arr, int n){int maxel = arr[0]; int imax = 0;
145-
 {
145+
for (int i =0; i<n; i++) if(arr[i] > maxel){ maxel= arr[i]; imax = i;} return imax;}
146-
    while (q.poczatek != nullptr)
146+
void selectionsort(int *arr, int n){ int max_in; for(int i = n; i>1; i--){
147-
    {
147+
max_in=find_max_el(arr, i); swap(arr[i-1], arr[max_in]);}}
148-
        cout << q.poczatek -> x << endl;
148+
-----------------BĄBELKOWE-------------------
149-
        usun_elem_pocz(q);
149+
void bublesort(int *arr, int n){ for(int i = n-1; i>0; i-- ){ for( int j = 0; j<i; j++){
150-
    }
150+
 if(arr[j]>arr[j+1]) swap(arr[j], arr[j+1]);}}}
151-
 }
151+
-----------------SORTOWANIE PRZEZ WSTAWIANIE--------------
152
void insertionsort(int *arr, int n){ int temp, j; for(int i=n-2; i>=0; i--){ j = i; temp = arr[j];
153-
int main()
153+
while(temp > arr[j+1] and j < n-1){ arr[j] = arr[j+1]; j++;} arr[j] = temp;}}
154-
{
154+
---------------FLAGA POLSKA----------------
155-
    kolejka q;
155+
int flagapolska(struct student x[], short n){ int p=0, k=n-1; int ind;
156-
    int wybor;
156+
 while(p<k) {while(p<n-1 && x[p].ocena>=10) p++; while(k>=0 && x[k].ocena < 10) k--;
157-
    srand(time(NULL));
157+
 if(p<k){ swap(x[p],x[k]); ind = k;}
158-
    do
158+
 if(x[p].ocena > 10) ind=p; else ind=p-1;} return k;}
159-
        {
159+
void wys (struct student* x, int p, int k)
160-
            cout << "co zrobic?" << endl;
160+
{for(int i=p; i<k; i++){ cout << "imie: " << x[i].imie << " ocena = " << x[i].ocena << endl;}}
161-
            cout << "1. Stworz nowa, pusta kolejke" << endl;
161+
------------FLAGA FFRANCUSKA---------------
162-
            cout << "2. Dodaj losowy element do kolejki" << endl;
162+
int flagafrancuska(struct student x[], short n, int* ko){int p=-1,s=0 ,k=n;
163-
            cout << "3. Usuna element z kolejki" << endl;
163+
 while(s<k){if(x[s].ocena%3 == 0){p++; swap(x[p], x[s]); s++;}
164-
            cout << "4. wyswietl i usun cala kolejke" << endl;
164+
 else{ if(x[s].ocena%3==2){ k--; swap(x[k], x[s]);} else s++;}}
165-
            cout << "5. Wyjscie" << endl;
165+
*ko=k; return p;}
166-
            cin >> wybor;
166+
------------WYSZUKIWANIE LINIOWE------------
167-
            switch(wybor){
167+
int linsearch(int *arr, int n, int klucz){ for(int i=0; i<n; i++){ if(arr[i]==klucz)
168-
            case 1: q=stworz_kolejke(); break;
168+
return i;} return -1;}
169-
            case 2: dodaj_element (q, rand()); break;
169+
---------BISEKCJA Z PĘTLA---------------
170-
            case 3: usun_elem_pocz (q); break;
170+
int bis_p(int *arr, int n, int klucz){ int l=0; int p=n-1; int s;
171-
            case 4: wyswietl_kolejke(q); break;
171+
while(p>=l){ s=(l+p)/2; if(klucz>arr[s]) l=s+1; else{ p=s-1;} if(arr[s]==klucz){ return s;}}return -1;}
172-
            case 5: break;
172+
------------BISEKCJA REKURENCYJNA--------------
173-
            default : cout << "bledny wybor" << endl; break;
173+
int bis_rek(int *arr, int a, int b, int klucz){ int srodek=(a+b)/2;
174-
}
174+
if(b>a){ if(arr[srodek] != klucz){ if(klucz < arr[srodek])
175-
        }
175+
return bis_rek(arr, a, srodek-1, klucz); else{ return bis_rek(arr, srodek+1, b, klucz);}}
176-
    while (wybor != 5);
176+
else{ return srodek;}} else { return -1; }}
177-
    return 0;
177+
---------------KMP-----------------
178-
}
178+
int KMP (int n, int m, int *ind, string tekst, string wzorzec)
179
{int *tab; tab = new int[m]; tab[0]=0; tab[1]=0; int t=0; int x=0;
180
for(int i=2; i<=m; i++){ while(t>0 and wzorzec[t]!=wzorzec[i-1]) t=tab[t];
181
if(wzorzec[t]==wzorzec[i-1])t++; tab[i]=t;}
182
int i=1; int j=0; while(i<=n-m+1){ while(wzorzec[j]==tekst[i+j-1] and j<m) j++;
183-
#include <iostream>
183+
if(j==m){ ind[x]=i-1; x++; j=m;} i=i+max(1,j-tab[j]); j=tab[j];} return x;}
184-
#include <time.h>
184+
---------NAIWNY---------------
185-
#include <stdio.h>
185+
int naiwny(int n, int m, string tekst, string wzorzec, int *tab)
186
{int x=-1, j=0; for(int i = 0; i < n-1; i++){
187-
using namespace std;
187+
 if (wzorzec == tekst.substr(i,m)){tab[j]=i; j++;}} return j;}