Commit c0b14c544131744ae980568edb9ae1eb9fd08613
1 parent
e02010c3
Reformatted code
Showing
84 changed files
with
1811 additions
and
1934 deletions
Too many changes to show.
To preserve performance only 84 of 279 files are displayed.
examples01-en/01-firstcpp/hellocpp.cpp
examples01-en/02-string/string.cpp
... | ... | @@ -4,14 +4,13 @@ using namespace std; |
4 | 4 | |
5 | 5 | string getword() |
6 | 6 | { |
7 | - string s; | |
8 | - cin >> s; | |
9 | - return s; | |
7 | + string s; | |
8 | + cin >> s; | |
9 | + return s; | |
10 | 10 | } |
11 | 11 | |
12 | - | |
13 | 12 | int main() |
14 | -{ | |
15 | - cout << "Podaj slowo" << endl; | |
16 | - cout << "Podane slowo to:" << getword() << endl; | |
13 | +{ | |
14 | + cout << "Podaj slowo" << endl; | |
15 | + cout << "Podane slowo to:" << getword() << endl; | |
17 | 16 | } | ... | ... |
examples01-en/03-vector/vector.cpp
1 | 1 | #include <iostream> |
2 | -#include <vector> | |
3 | 2 | #include <string> |
3 | +#include <vector> | |
4 | 4 | using namespace std; |
5 | 5 | |
6 | 6 | int main() |
7 | 7 | { |
8 | - string word; | |
9 | - vector<string> v; | |
10 | - while(cin) | |
11 | - { | |
12 | - if(cin>>word) | |
13 | - v.push_back(word); | |
14 | - } | |
15 | - for(unsigned int i=0;i<v.size();i++) | |
16 | - cout << v[i]<<" "; | |
17 | - cout << endl; | |
8 | + string word; | |
9 | + vector<string> v; | |
10 | + while (cin) { | |
11 | + if (cin >> word) | |
12 | + v.push_back(word); | |
13 | + } | |
14 | + for (unsigned int i = 0; i < v.size(); i++) | |
15 | + cout << v[i] << " "; | |
16 | + cout << endl; | |
18 | 17 | } | ... | ... |
examples01-en/04-qt-1/hello.cpp
100755 → 100644
examples01-en/05-qt-2/hello.cpp
100755 → 100644
1 | 1 | #include <QApplication> |
2 | 2 | #include <QPushButton> |
3 | 3 | |
4 | -int main(int argc, char *argv[]) | |
4 | +int main(int argc, char* argv[]) | |
5 | 5 | { |
6 | 6 | QApplication app(argc, argv); |
7 | 7 | |
8 | 8 | QPushButton hello("Hello world!"); |
9 | 9 | hello.resize(100, 30); |
10 | 10 | hello.setFont(QFont("Arial", 18, QFont::Bold)); |
11 | - hello.setGeometry(400, 200 , 180, 40); | |
11 | + hello.setGeometry(400, 200, 180, 40); | |
12 | 12 | |
13 | 13 | hello.show(); |
14 | 14 | return app.exec(); | ... | ... |
examples01-en/06-qt-3/hello.cpp
100755 → 100644
1 | 1 | #include <QApplication> |
2 | -#include <QPushButton> | |
3 | 2 | #include <QDial> |
3 | +#include <QPushButton> | |
4 | 4 | |
5 | -int main(int argc, char *argv[]) | |
5 | +int main(int argc, char* argv[]) | |
6 | 6 | { |
7 | 7 | QApplication app(argc, argv); |
8 | 8 | |
9 | 9 | QPushButton hello("Hello world!"); |
10 | 10 | hello.resize(100, 30); |
11 | 11 | hello.setFont(QFont("Arial", 18, QFont::Bold)); |
12 | - hello.setGeometry(400, 200 , 180, 40); | |
12 | + hello.setGeometry(400, 200, 180, 40); | |
13 | 13 | |
14 | 14 | QDial dial; |
15 | 15 | dial.show(); | ... | ... |
examples01-en/07-stackc/stack.c
1 | +#include "stack.h" | |
1 | 2 | #include <assert.h> |
2 | -#include <stdlib.h> | |
3 | 3 | #include <stdio.h> |
4 | -#include "stack.h" | |
4 | +#include <stdlib.h> | |
5 | 5 | |
6 | 6 | void init(struct stack_handle* s) |
7 | 7 | { |
8 | - s->top=0; | |
8 | + s->top = 0; | |
9 | 9 | } |
10 | 10 | |
11 | -void finalize(struct stack_handle* s) | |
12 | -{ | |
13 | -} | |
11 | +void finalize(struct stack_handle* s) {} | |
14 | 12 | |
15 | 13 | void clear(struct stack_handle* s) |
16 | 14 | { |
17 | - s->top=0; | |
15 | + s->top = 0; | |
18 | 16 | } |
19 | 17 | |
20 | -void push(struct stack_handle* s,int a) | |
18 | +void push(struct stack_handle* s, int a) | |
21 | 19 | { |
22 | - assert(s->top<STACKSIZE); | |
23 | - s->data[s->top++]=a; | |
20 | + assert(s->top < STACKSIZE); | |
21 | + s->data[s->top++] = a; | |
24 | 22 | } |
25 | 23 | |
26 | 24 | int pop(struct stack_handle* s) |
27 | 25 | { |
28 | - assert(s->top>0); | |
29 | - return s->data[--s->top]; | |
26 | + assert(s->top > 0); | |
27 | + return s->data[--s->top]; | |
30 | 28 | } |
31 | - | ... | ... |
examples01-en/07-stackc/stack.h
1 | 1 | #define STACKSIZE 20 |
2 | 2 | |
3 | -struct stack_handle | |
4 | -{ | |
5 | -int top; /* index of first free slot on stack */ | |
6 | -int data[STACKSIZE]; | |
3 | +struct stack_handle { | |
4 | + int top; /* index of first free slot on stack */ | |
5 | + int data[STACKSIZE]; | |
7 | 6 | }; |
8 | 7 | |
9 | -void push(struct stack_handle* s,int a); | |
8 | +void push(struct stack_handle* s, int a); | |
10 | 9 | int pop(struct stack_handle* s); |
11 | 10 | void clear(struct stack_handle* s); |
12 | 11 | void init(struct stack_handle* s); |
13 | 12 | void finalize(struct stack_handle* s); |
14 | - | ... | ... |
examples01-en/07-stackc/teststack.c
1 | -#include <stdio.h> | |
2 | 1 | #include "stack.h" |
2 | +#include <stdio.h> | |
3 | 3 | |
4 | 4 | int main() |
5 | 5 | { |
6 | - struct stack_handle s1; | |
7 | - struct stack_handle s2; | |
8 | - init(&s1); | |
9 | - init(&s2); | |
10 | - push(&s1,1); | |
11 | - push(&s1,2); | |
12 | - push(&s1,3); | |
13 | - push(&s2,5); | |
14 | - push(&s2,6); | |
15 | - printf("%d %d\n",pop(&s1),pop(&s2)); | |
16 | - printf("%d\n",pop(&s1)); | |
17 | - finalize(&s1); | |
18 | - finalize(&s2); | |
19 | - return 0; | |
6 | + struct stack_handle s1; | |
7 | + struct stack_handle s2; | |
8 | + init(&s1); | |
9 | + init(&s2); | |
10 | + push(&s1, 1); | |
11 | + push(&s1, 2); | |
12 | + push(&s1, 3); | |
13 | + push(&s2, 5); | |
14 | + push(&s2, 6); | |
15 | + printf("%d %d\n", pop(&s1), pop(&s2)); | |
16 | + printf("%d\n", pop(&s1)); | |
17 | + finalize(&s1); | |
18 | + finalize(&s2); | |
19 | + return 0; | |
20 | 20 | } | ... | ... |
examples01-en/08-stackcpp/stack.cpp
1 | -#include <assert.h> | |
2 | -#include <stdlib.h> | |
3 | -#include <stdio.h> | |
4 | 1 | #include "stack.h" |
2 | +#include <assert.h> | |
5 | 3 | #include <iostream> |
4 | +#include <stdio.h> | |
5 | +#include <stdlib.h> | |
6 | 6 | using namespace std; |
7 | 7 | |
8 | 8 | stack::stack() |
9 | 9 | { |
10 | - this->top=0; | |
11 | - cout << "stack::stack() called\n"; | |
12 | - | |
10 | + this->top = 0; | |
11 | + cout << "stack::stack() called\n"; | |
13 | 12 | } |
14 | 13 | |
15 | 14 | stack::~stack() |
16 | 15 | { |
17 | - cout << "stack::~stack() called\n"; | |
16 | + cout << "stack::~stack() called\n"; | |
18 | 17 | } |
19 | 18 | |
20 | 19 | void stack::clear() |
21 | 20 | { |
22 | - this->top=0; | |
21 | + this->top = 0; | |
23 | 22 | } |
24 | 23 | |
25 | 24 | void stack::push(int a) |
26 | 25 | { |
27 | - assert(this->top<STACKSIZE); | |
28 | - this->data[this->top++]=a; | |
26 | + assert(this->top < STACKSIZE); | |
27 | + this->data[this->top++] = a; | |
29 | 28 | } |
30 | 29 | |
31 | 30 | int stack::pop() |
32 | 31 | { |
33 | - assert(this->top>0); | |
34 | - return this->data[--this->top]; | |
32 | + assert(this->top > 0); | |
33 | + return this->data[--this->top]; | |
35 | 34 | } |
36 | - | ... | ... |
examples01-en/08-stackcpp/stack.h
1 | 1 | #define STACKSIZE 20 |
2 | 2 | |
3 | -class stack | |
4 | -{ | |
5 | -public: | |
6 | -void push(int a); | |
7 | -int pop(); | |
8 | -void clear(); | |
9 | -stack(); | |
10 | -~stack(); | |
11 | -private: | |
12 | -int top; | |
13 | -int data[STACKSIZE]; | |
14 | -}; | |
3 | +class stack { | |
4 | + public: | |
5 | + void push(int a); | |
6 | + int pop(); | |
7 | + void clear(); | |
8 | + stack(); | |
9 | + ~stack(); | |
15 | 10 | |
11 | + private: | |
12 | + int top; | |
13 | + int data[STACKSIZE]; | |
14 | +}; | ... | ... |
examples01-en/08-stackcpp/teststack.cpp
1 | -#include <stdio.h> | |
2 | 1 | #include "stack.h" |
2 | +#include <stdio.h> | |
3 | 3 | |
4 | 4 | int main() |
5 | 5 | { |
6 | - stack s1; | |
7 | - stack s2; | |
8 | - s1.push(1); | |
9 | - s1.push(2); | |
10 | - s1.push(3); | |
11 | - s2.push(5); | |
12 | - s2.push(6); | |
13 | - { | |
14 | - stack s3; | |
15 | - } | |
16 | - printf("%d %d\n",s1.pop(),s2.pop()); | |
17 | - printf("%d\n",s1.pop()); | |
18 | - return 0; | |
6 | + stack s1; | |
7 | + stack s2; | |
8 | + s1.push(1); | |
9 | + s1.push(2); | |
10 | + s1.push(3); | |
11 | + s2.push(5); | |
12 | + s2.push(6); | |
13 | + { | |
14 | + stack s3; | |
15 | + } | |
16 | + printf("%d %d\n", s1.pop(), s2.pop()); | |
17 | + printf("%d\n", s1.pop()); | |
18 | + return 0; | |
19 | 19 | } | ... | ... |
examples01-en/09-funoverload/overload.cpp
... | ... | @@ -3,16 +3,16 @@ using namespace std; |
3 | 3 | |
4 | 4 | void fun(char c) |
5 | 5 | { |
6 | - cout<<"fun(char) called"<<endl; | |
6 | + cout << "fun(char) called" << endl; | |
7 | 7 | } |
8 | 8 | |
9 | 9 | void fun(int c) |
10 | 10 | { |
11 | - cout <<"fun(int) called"<<endl; | |
11 | + cout << "fun(int) called" << endl; | |
12 | 12 | } |
13 | 13 | |
14 | 14 | int main() |
15 | 15 | { |
16 | - fun(10); | |
17 | - fun('0'); | |
16 | + fun(10); | |
17 | + fun('0'); | |
18 | 18 | } | ... | ... |
examples01-pl/01-kompilacja/hello.c
examples01-pl/02-moduly/hello.c
examples01-pl/02-moduly/witaj.c
examples01-pl/03-cmdline/cmdline.c
... | ... | @@ -2,10 +2,10 @@ |
2 | 2 | |
3 | 3 | int main(int argc, char** argv) |
4 | 4 | { |
5 | -int i; | |
6 | -printf("argc==%d\n",argc); | |
7 | -for(i=0;i<argc;i++) | |
8 | - printf("%s ",argv[i]); | |
9 | -printf("\n"); | |
10 | -return 0; | |
5 | + int i; | |
6 | + printf("argc==%d\n", argc); | |
7 | + for (i = 0; i < argc; i++) | |
8 | + printf("%s ", argv[i]); | |
9 | + printf("\n"); | |
10 | + return 0; | |
11 | 11 | } | ... | ... |
examples01-pl/04-malloc/malloc.c
1 | 1 | #include <stdio.h> |
2 | 2 | #include <stdlib.h> |
3 | 3 | |
4 | -int | |
5 | -main () | |
4 | +int main() | |
6 | 5 | { |
7 | - double *a = NULL; | |
8 | - int n; | |
9 | - int i; | |
10 | - FILE *infile = fopen ("ala", "r"); | |
11 | - if (fscanf (infile, "%d\n", &n) != 1) abort(); | |
12 | - a = (double *) malloc (n * sizeof (double)); | |
13 | - if(a==NULL) abort(); | |
14 | - for (i = 0; i < n; i++) | |
15 | - if (1 != fscanf (infile, "%lf ", /*a+i */ &(a[i]))) abort(); | |
16 | - for (i = 0; i < n; i++) | |
17 | - printf ("%f ", a[i]); | |
18 | - printf("\n"); | |
19 | - free (a); | |
20 | - fclose (infile); | |
21 | - return 0; | |
6 | + double* a = NULL; | |
7 | + int n; | |
8 | + int i; | |
9 | + FILE* infile = fopen("ala", "r"); | |
10 | + if (fscanf(infile, "%d\n", &n) != 1) | |
11 | + abort(); | |
12 | + a = (double*)malloc(n * sizeof(double)); | |
13 | + if (a == NULL) | |
14 | + abort(); | |
15 | + for (i = 0; i < n; i++) | |
16 | + if (1 != fscanf(infile, "%lf ", /*a+i */ &(a[i]))) | |
17 | + abort(); | |
18 | + for (i = 0; i < n; i++) | |
19 | + printf("%f ", a[i]); | |
20 | + printf("\n"); | |
21 | + free(a); | |
22 | + fclose(infile); | |
23 | + return 0; | |
22 | 24 | } | ... | ... |
examples01-pl/05-2darray/2darray.c
1 | 1 | #include <stdio.h> |
2 | 2 | #include <stdlib.h> |
3 | 3 | |
4 | -int | |
5 | -main () | |
4 | +int main() | |
6 | 5 | { |
7 | - double **a = NULL; | |
8 | - double **b = NULL; | |
9 | - int rows = 3; | |
10 | - int columns = 5; | |
11 | - int i; | |
12 | - a = (double **) malloc (rows * sizeof (double *)); | |
13 | - for (i = 0; i < rows; i++) | |
14 | - a[i] = (double *) malloc (columns * sizeof (double)); | |
15 | - b = (double **) malloc (rows * sizeof (double *)); | |
16 | - b[0] = (double *) malloc (rows * columns * sizeof (double)); | |
17 | - for (i = 1; i < rows; i++) | |
18 | - b[i] = b[i-1] + columns; | |
19 | - /* use a and b */ | |
20 | - for (i = 0; i < rows; i++) | |
21 | - free (a[i]); | |
22 | - free (a); | |
23 | - free (b[0]); | |
24 | - free (b); | |
25 | - return 0; | |
6 | + double** a = NULL; | |
7 | + double** b = NULL; | |
8 | + int rows = 3; | |
9 | + int columns = 5; | |
10 | + int i; | |
11 | + a = (double**)malloc(rows * sizeof(double*)); | |
12 | + for (i = 0; i < rows; i++) | |
13 | + a[i] = (double*)malloc(columns * sizeof(double)); | |
14 | + b = (double**)malloc(rows * sizeof(double*)); | |
15 | + b[0] = (double*)malloc(rows * columns * sizeof(double)); | |
16 | + for (i = 1; i < rows; i++) | |
17 | + b[i] = b[i - 1] + columns; | |
18 | + /* use a and b */ | |
19 | + for (i = 0; i < rows; i++) | |
20 | + free(a[i]); | |
21 | + free(a); | |
22 | + free(b[0]); | |
23 | + free(b); | |
24 | + return 0; | |
26 | 25 | } | ... | ... |
examples01-pl/06-mymalloc/main.c
1 | -#include <assert.h> | |
2 | 1 | #include "mymalloc.h" |
2 | +#include <assert.h> | |
3 | 3 | |
4 | 4 | int main() |
5 | 5 | { |
6 | -void* p1; | |
7 | -void* p2; | |
8 | -void* p3; | |
9 | -void* p4; | |
10 | -void* p5; | |
6 | + void* p1; | |
7 | + void* p2; | |
8 | + void* p3; | |
9 | + void* p4; | |
10 | + void* p5; | |
11 | 11 | |
12 | -if(!mymalloc_init(10000000)) abort(); | |
13 | -mymalloc_dump(); | |
14 | -p1=mymalloc(100); | |
15 | -mymalloc_dump(); | |
16 | -p2=mymalloc(200); | |
17 | -mymalloc_dump(); | |
18 | -p3=mymalloc(300); | |
19 | -mymalloc_dump(); | |
20 | -myfree(p2); | |
21 | -mymalloc_dump(); | |
22 | -p2=mymalloc(150); | |
23 | -mymalloc_dump(); | |
24 | -p2=myrealloc(p2,170); | |
25 | -mymalloc_dump(); | |
26 | -p2=myrealloc(p2,300); | |
27 | -mymalloc_dump(); | |
28 | -p4=mymalloc(10000); | |
29 | -mymalloc_dump(); | |
30 | -p5=mymalloc(50000); | |
31 | -mymalloc_dump(); | |
32 | -myfree(p4); | |
33 | -mymalloc_dump(); | |
34 | -p4=mymalloc(7000); | |
35 | -mymalloc_dump(); | |
36 | -myfree(p2); | |
37 | -mymalloc_dump(); | |
38 | -myfree(p1); | |
39 | -mymalloc_dump(); | |
40 | -myfree(p3); | |
41 | -mymalloc_dump(); | |
42 | -myfree(p4); | |
43 | -mymalloc_dump(); | |
44 | -myfree(p5); | |
45 | -mymalloc_dump(); | |
46 | -return 0; | |
12 | + if (!mymalloc_init(10000000)) | |
13 | + abort(); | |
14 | + mymalloc_dump(); | |
15 | + p1 = mymalloc(100); | |
16 | + mymalloc_dump(); | |
17 | + p2 = mymalloc(200); | |
18 | + mymalloc_dump(); | |
19 | + p3 = mymalloc(300); | |
20 | + mymalloc_dump(); | |
21 | + myfree(p2); | |
22 | + mymalloc_dump(); | |
23 | + p2 = mymalloc(150); | |
24 | + mymalloc_dump(); | |
25 | + p2 = myrealloc(p2, 170); | |
26 | + mymalloc_dump(); | |
27 | + p2 = myrealloc(p2, 300); | |
28 | + mymalloc_dump(); | |
29 | + p4 = mymalloc(10000); | |
30 | + mymalloc_dump(); | |
31 | + p5 = mymalloc(50000); | |
32 | + mymalloc_dump(); | |
33 | + myfree(p4); | |
34 | + mymalloc_dump(); | |
35 | + p4 = mymalloc(7000); | |
36 | + mymalloc_dump(); | |
37 | + myfree(p2); | |
38 | + mymalloc_dump(); | |
39 | + myfree(p1); | |
40 | + mymalloc_dump(); | |
41 | + myfree(p3); | |
42 | + mymalloc_dump(); | |
43 | + myfree(p4); | |
44 | + mymalloc_dump(); | |
45 | + myfree(p5); | |
46 | + mymalloc_dump(); | |
47 | + return 0; | |
47 | 48 | } | ... | ... |
examples01-pl/06-mymalloc/mymalloc.c
1 | -#include <unistd.h> | |
1 | +#include "mymalloc.h" | |
2 | 2 | #include <assert.h> |
3 | 3 | #include <stdio.h> |
4 | 4 | #include <string.h> |
5 | -#include "mymalloc.h" | |
5 | +#include <unistd.h> | |
6 | 6 | |
7 | -typedef struct _blkdata | |
8 | -{ | |
9 | - unsigned long size; /* rozmiar bloku wlaczajac naglowek */ | |
10 | - unsigned int flags; | |
11 | -} | |
12 | -blkdata; | |
7 | +typedef struct _blkdata { | |
8 | + unsigned long size; /* rozmiar bloku wlaczajac naglowek */ | |
9 | + unsigned int flags; | |
10 | +} blkdata; | |
13 | 11 | #define MM_OCCUPIED 1 |
14 | 12 | #define MM_LAST 2 |
15 | 13 | |
16 | -static void *begin; | |
14 | +static void* begin; | |
17 | 15 | |
18 | -int | |
19 | -mymalloc_init (unsigned long size) | |
16 | +int mymalloc_init(unsigned long size) | |
20 | 17 | { |
21 | - blkdata *b; | |
22 | - assert (size > 0); | |
23 | - begin = sbrk (size); | |
24 | - if (!begin) | |
25 | - return 0; | |
26 | - b = (blkdata *) begin; | |
27 | - b->size = size; | |
28 | - b->flags = MM_LAST; | |
29 | - return 1; | |
18 | + blkdata* b; | |
19 | + assert(size > 0); | |
20 | + begin = sbrk(size); | |
21 | + if (!begin) | |
22 | + return 0; | |
23 | + b = (blkdata*)begin; | |
24 | + b->size = size; | |
25 | + b->flags = MM_LAST; | |
26 | + return 1; | |
30 | 27 | }; |
31 | 28 | |
32 | -void * | |
33 | -mymalloc (unsigned long size) | |
29 | +void* mymalloc(unsigned long size) | |
34 | 30 | { |
35 | - blkdata *b = (blkdata *) begin; | |
36 | - printf ("Request to allocate %lu bytes\n", size); | |
37 | - while (1) | |
38 | - { | |
39 | - if ((b->size > size + sizeof (blkdata)) && !(b->flags & MM_OCCUPIED)) | |
40 | - { | |
41 | - unsigned long after = b->size - size - sizeof (blkdata); | |
42 | - if (after > sizeof (blkdata)) | |
43 | - { | |
44 | - blkdata *na = | |
45 | - (blkdata *) ((void *) b + size + sizeof (blkdata)); | |
46 | - na->flags = 0; | |
47 | - if (b->flags & MM_LAST) | |
48 | - na->flags |= MM_LAST; | |
49 | - na->size = after; | |
50 | - b->size = size + sizeof (blkdata); | |
51 | - b->flags = MM_OCCUPIED; | |
52 | - return ((void *) b) + sizeof (blkdata); | |
53 | - } | |
54 | - else /* wez caly blok */ | |
55 | - { | |
56 | - b->flags |= MM_OCCUPIED; | |
57 | - return ((void *) b) + sizeof (blkdata); | |
58 | - } | |
59 | - }; | |
60 | - if (b->flags & MM_LAST) | |
61 | - break; | |
62 | - b = (blkdata *) ((void *) b + b->size); | |
31 | + blkdata* b = (blkdata*)begin; | |
32 | + printf("Request to allocate %lu bytes\n", size); | |
33 | + while (1) { | |
34 | + if ((b->size > size + sizeof(blkdata)) && !(b->flags & MM_OCCUPIED)) { | |
35 | + unsigned long after = b->size - size - sizeof(blkdata); | |
36 | + if (after > sizeof(blkdata)) { | |
37 | + blkdata* na = (blkdata*)((void*)b + size + sizeof(blkdata)); | |
38 | + na->flags = 0; | |
39 | + if (b->flags & MM_LAST) | |
40 | + na->flags |= MM_LAST; | |
41 | + na->size = after; | |
42 | + b->size = size + sizeof(blkdata); | |
43 | + b->flags = MM_OCCUPIED; | |
44 | + return ((void*)b) + sizeof(blkdata); | |
45 | + } | |
46 | + else /* wez caly blok */ | |
47 | + { | |
48 | + b->flags |= MM_OCCUPIED; | |
49 | + return ((void*)b) + sizeof(blkdata); | |
50 | + } | |
51 | + }; | |
52 | + if (b->flags & MM_LAST) | |
53 | + break; | |
54 | + b = (blkdata*)((void*)b + b->size); | |
63 | 55 | }; |
64 | - return NULL; | |
56 | + return NULL; | |
65 | 57 | } |
66 | 58 | |
67 | -void | |
68 | -myfree (void *ptr) | |
59 | +void myfree(void* ptr) | |
69 | 60 | { |
70 | - blkdata *b; | |
71 | - blkdata *nextb = NULL; | |
72 | - blkdata *prevb = NULL; | |
73 | - if (ptr == NULL) | |
74 | - return; | |
75 | - b = (blkdata *) (ptr - sizeof (blkdata)); | |
76 | - printf ("Request to free %lu bytes at the address %p\n", b->size - sizeof (blkdata), b); | |
77 | - if ((void *) b != begin) | |
78 | - { | |
79 | -/* znajdz poprzedni blok */ | |
80 | - prevb = (blkdata *) begin; | |
81 | - while (1) | |
82 | - { | |
83 | - blkdata *next; | |
84 | - assert (!(prevb->flags & MM_LAST)); | |
85 | - next = (blkdata *) ((void *) prevb + prevb->size); | |
86 | - if (next == b) | |
87 | - break; | |
88 | - prevb = next; | |
89 | - }; | |
61 | + blkdata* b; | |
62 | + blkdata* nextb = NULL; | |
63 | + blkdata* prevb = NULL; | |
64 | + if (ptr == NULL) | |
65 | + return; | |
66 | + b = (blkdata*)(ptr - sizeof(blkdata)); | |
67 | + printf("Request to free %lu bytes at the address %p\n", | |
68 | + b->size - sizeof(blkdata), b); | |
69 | + if ((void*)b != begin) { | |
70 | + /* znajdz poprzedni blok */ | |
71 | + prevb = (blkdata*)begin; | |
72 | + while (1) { | |
73 | + blkdata* next; | |
74 | + assert(!(prevb->flags & MM_LAST)); | |
75 | + next = (blkdata*)((void*)prevb + prevb->size); | |
76 | + if (next == b) | |
77 | + break; | |
78 | + prevb = next; | |
79 | + }; | |
90 | 80 | }; |
91 | -/* znajdz nastepny blok */ | |
92 | - if (!(b->flags & MM_LAST)) | |
93 | - nextb = (blkdata *) ((void *) b + b->size); | |
94 | -/* zaznacz blok jako wolny */ | |
95 | - b->flags &= ~MM_OCCUPIED; | |
96 | -/* skonsoliduj z nastepnym */ | |
97 | - if (nextb && !(nextb->flags & MM_OCCUPIED)) | |
98 | - { | |
99 | - if (nextb->flags & MM_LAST) | |
100 | - b->flags = MM_LAST; | |
101 | - b->size += nextb->size; | |
81 | + /* znajdz nastepny blok */ | |
82 | + if (!(b->flags & MM_LAST)) | |
83 | + nextb = (blkdata*)((void*)b + b->size); | |
84 | + /* zaznacz blok jako wolny */ | |
85 | + b->flags &= ~MM_OCCUPIED; | |
86 | + /* skonsoliduj z nastepnym */ | |
87 | + if (nextb && !(nextb->flags & MM_OCCUPIED)) { | |
88 | + if (nextb->flags & MM_LAST) | |
89 | + b->flags = MM_LAST; | |
90 | + b->size += nextb->size; | |
102 | 91 | } |
103 | -/* skonsoliduj z poprzednim */ | |
104 | - if (prevb && !(prevb->flags & MM_OCCUPIED)) | |
105 | - { | |
106 | - if (b->flags & MM_LAST) | |
107 | - prevb->flags |= MM_LAST; | |
108 | - prevb->size += b->size; | |
92 | + /* skonsoliduj z poprzednim */ | |
93 | + if (prevb && !(prevb->flags & MM_OCCUPIED)) { | |
94 | + if (b->flags & MM_LAST) | |
95 | + prevb->flags |= MM_LAST; | |
96 | + prevb->size += b->size; | |
109 | 97 | }; |
110 | 98 | } |
111 | 99 | |
112 | -static void * | |
113 | -copyrealloc (void *ptr, unsigned long size, unsigned long oldsize) | |
100 | +static void* copyrealloc(void* ptr, unsigned long size, unsigned long oldsize) | |
114 | 101 | { |
115 | - void *blk = mymalloc (size); | |
116 | - if (blk == NULL) | |
117 | - return NULL; | |
118 | - memcpy (blk, ptr, oldsize); | |
119 | - myfree (ptr); | |
120 | - return blk; | |
102 | + void* blk = mymalloc(size); | |
103 | + if (blk == NULL) | |
104 | + return NULL; | |
105 | + memcpy(blk, ptr, oldsize); | |
106 | + myfree(ptr); | |
107 | + return blk; | |
121 | 108 | } |
122 | 109 | |
123 | -void * | |
124 | -myrealloc (void *ptr, unsigned long size) | |
110 | +void* myrealloc(void* ptr, unsigned long size) | |
125 | 111 | { |
126 | - blkdata *b; | |
127 | - if (ptr == NULL) | |
128 | - return mymalloc (size); | |
129 | - b = (blkdata *) (ptr - sizeof (blkdata)); | |
130 | - printf ("Request to reallocate %lu bytes to %lu bytes, old address=%p\n", | |
131 | - b->size - sizeof (blkdata), size, b); | |
132 | - if (size == 0) | |
133 | - { | |
134 | - myfree (ptr); | |
135 | - return NULL; | |
112 | + blkdata* b; | |
113 | + if (ptr == NULL) | |
114 | + return mymalloc(size); | |
115 | + b = (blkdata*)(ptr - sizeof(blkdata)); | |
116 | + printf("Request to reallocate %lu bytes to %lu bytes, old address=%p\n", | |
117 | + b->size - sizeof(blkdata), size, b); | |
118 | + if (size == 0) { | |
119 | + myfree(ptr); | |
120 | + return NULL; | |
136 | 121 | }; |
137 | - if (size <= b->size - sizeof (blkdata)) /* zmniejszenie bloku */ | |
122 | + if (size <= b->size - sizeof(blkdata)) /* zmniejszenie bloku */ | |
138 | 123 | { |
139 | - unsigned long after = b->size - size - sizeof (blkdata); | |
140 | - blkdata *nextb = NULL; | |
141 | - if (!(b->flags & MM_LAST)) | |
142 | - nextb = (blkdata *) ((void *) b + b->size); | |
143 | - blkdata *na = ((void *) b) + size + sizeof (blkdata); | |
144 | - if (nextb && !(nextb->flags & MM_OCCUPIED)) | |
145 | - /* skonsoliduj z nastepnym */ | |
146 | - { | |
147 | - unsigned int flags = nextb->flags; | |
148 | - unsigned long size = after + nextb->size; | |
149 | - na->flags = flags; | |
150 | - na->size = size; | |
151 | - b->size = size + sizeof (blkdata); | |
152 | - } | |
153 | - else if (after > sizeof (blkdata)) | |
154 | - { | |
155 | - na->flags = 0; | |
156 | - if (b->flags & MM_LAST) | |
157 | - na->flags |= MM_LAST; | |
158 | - na->size = after; | |
159 | - b->size = size + sizeof (blkdata); | |
160 | - b->flags = MM_OCCUPIED; | |
161 | - } | |
162 | - return ptr; | |
124 | + unsigned long after = b->size - size - sizeof(blkdata); | |
125 | + blkdata* nextb = NULL; | |
126 | + if (!(b->flags & MM_LAST)) | |
127 | + nextb = (blkdata*)((void*)b + b->size); | |
128 | + blkdata* na = ((void*)b) + size + sizeof(blkdata); | |
129 | + if (nextb && !(nextb->flags & MM_OCCUPIED)) | |
130 | + /* skonsoliduj z nastepnym */ | |
131 | + { | |
132 | + unsigned int flags = nextb->flags; | |
133 | + unsigned long size = after + nextb->size; | |
134 | + na->flags = flags; | |
135 | + na->size = size; | |
136 | + b->size = size + sizeof(blkdata); | |
137 | + } | |
138 | + else if (after > sizeof(blkdata)) { | |
139 | + na->flags = 0; | |
140 | + if (b->flags & MM_LAST) | |
141 | + na->flags |= MM_LAST; | |
142 | + na->size = after; | |
143 | + b->size = size + sizeof(blkdata); | |
144 | + b->flags = MM_OCCUPIED; | |
145 | + } | |
146 | + return ptr; | |
163 | 147 | } |
164 | - else /* zwiekszenie bloku */ | |
148 | + else /* zwiekszenie bloku */ | |
165 | 149 | { |
166 | - blkdata *next = (blkdata *) ((void *) b + b->size); | |
167 | - if (!(b->flags & MM_LAST) && !(next->flags & MM_OCCUPIED)) | |
168 | - { | |
169 | - unsigned long totalsize = b->size + next->size; | |
170 | - unsigned long after = totalsize - size - sizeof (blkdata); | |
171 | - if (size + sizeof (blkdata) > totalsize) /* brak miejsca w nastepnym bloku */ | |
172 | - return copyrealloc (ptr, size, b->size - sizeof (blkdata)); | |
173 | - if (next->flags & MM_LAST) | |
174 | - b->flags |= MM_LAST; | |
175 | - if (after > sizeof (blkdata)) | |
176 | - { | |
177 | - blkdata *na = | |
178 | - (blkdata *) ((void *) b + size + sizeof (blkdata)); | |
179 | - na->flags = 0; | |
180 | - if (b->flags & MM_LAST) | |
181 | - na->flags |= MM_LAST; | |
182 | - na->size = after; | |
183 | - b->size = size + sizeof (blkdata); | |
184 | - b->flags = MM_OCCUPIED; | |
185 | - } | |
186 | - else | |
187 | - b->size += next->size; | |
188 | - return ptr; | |
189 | - } | |
190 | - else /* nastepny zajety albo biezacy ostatni */ | |
191 | - return copyrealloc (ptr, size, b->size - sizeof (blkdata)); | |
150 | + blkdata* next = (blkdata*)((void*)b + b->size); | |
151 | + if (!(b->flags & MM_LAST) && !(next->flags & MM_OCCUPIED)) { | |
152 | + unsigned long totalsize = b->size + next->size; | |
153 | + unsigned long after = totalsize - size - sizeof(blkdata); | |
154 | + if (size + sizeof(blkdata) > | |
155 | + totalsize) /* brak miejsca w nastepnym bloku */ | |
156 | + return copyrealloc(ptr, size, b->size - sizeof(blkdata)); | |
157 | + if (next->flags & MM_LAST) | |
158 | + b->flags |= MM_LAST; | |
159 | + if (after > sizeof(blkdata)) { | |
160 | + blkdata* na = (blkdata*)((void*)b + size + sizeof(blkdata)); | |
161 | + na->flags = 0; | |
162 | + if (b->flags & MM_LAST) | |
163 | + na->flags |= MM_LAST; | |
164 | + na->size = after; | |
165 | + b->size = size + sizeof(blkdata); | |
166 | + b->flags = MM_OCCUPIED; | |
167 | + } | |
168 | + else | |
169 | + b->size += next->size; | |
170 | + return ptr; | |
171 | + } | |
172 | + else /* nastepny zajety albo biezacy ostatni */ | |
173 | + return copyrealloc(ptr, size, b->size - sizeof(blkdata)); | |
192 | 174 | } |
193 | 175 | } |
194 | 176 | |
195 | -void | |
196 | -mymalloc_dump () | |
177 | +void mymalloc_dump() | |
197 | 178 | { |
198 | - blkdata *b = (blkdata *) begin; | |
199 | - unsigned long totalsize = 0; | |
200 | - printf ("Mymalloc block list dump\n"); | |
201 | - while (1) | |
202 | - { | |
203 | - printf ("Block at the address %p flags %c%c size %lu\n", b, | |
204 | - (b->flags & MM_OCCUPIED) ? 'O' : 'F', | |
205 | - (b->flags & MM_LAST) ? 'L' : ' ', b->size); | |
206 | - totalsize += b->size; | |
207 | - if (b->flags & MM_LAST) | |
208 | - break; | |
209 | - b = (blkdata *) ((void *) b + b->size); | |
179 | + blkdata* b = (blkdata*)begin; | |
180 | + unsigned long totalsize = 0; | |
181 | + printf("Mymalloc block list dump\n"); | |
182 | + while (1) { | |
183 | + printf("Block at the address %p flags %c%c size %lu\n", b, | |
184 | + (b->flags & MM_OCCUPIED) ? 'O' : 'F', | |
185 | + (b->flags & MM_LAST) ? 'L' : ' ', b->size); | |
186 | + totalsize += b->size; | |
187 | + if (b->flags & MM_LAST) | |
188 | + break; | |
189 | + b = (blkdata*)((void*)b + b->size); | |
210 | 190 | }; |
211 | - printf ("Total size:%lu\n", totalsize); | |
191 | + printf("Total size:%lu\n", totalsize); | |
212 | 192 | } | ... | ... |
examples01-pl/06-mymalloc/mymalloc.h
examples01-pl/07-badexample1/bad.c
examples01-pl/07-badexample1/good.c
examples01-pl/08-badexample2/bad1.c
1 | -#include <stdlib.h> | |
2 | 1 | #include <stdio.h> |
2 | +#include <stdlib.h> | |
3 | 3 | |
4 | 4 | char* itoa(int a) |
5 | 5 | { |
6 | - char buf[20]; | |
7 | - snprintf(buf,20,"%d", a); | |
8 | - return buf; | |
6 | + char buf[20]; | |
7 | + snprintf(buf, 20, "%d", a); | |
8 | + return buf; | |
9 | 9 | } |
10 | 10 | |
11 | 11 | int main() |
12 | 12 | { |
13 | - printf("%s %s\n",itoa(17), itoa(15)); | |
14 | - return 0; | |
13 | + printf("%s %s\n", itoa(17), itoa(15)); | |
14 | + return 0; | |
15 | 15 | } |
16 | - | ... | ... |
examples01-pl/08-badexample2/bad2.c
1 | -#include <stdlib.h> | |
2 | 1 | #include <stdio.h> |
2 | +#include <stdlib.h> | |
3 | 3 | |
4 | 4 | char* itoa(int a) |
5 | 5 | { |
6 | - static char buf[20]; | |
7 | - snprintf(buf,20,"%d", a); | |
8 | - return buf; | |
6 | + static char buf[20]; | |
7 | + snprintf(buf, 20, "%d", a); | |
8 | + return buf; | |
9 | 9 | } |
10 | 10 | |
11 | 11 | int main() |
12 | 12 | { |
13 | - printf("%s %s\n",itoa(17), itoa(15)); | |
14 | - return 0; | |
13 | + printf("%s %s\n", itoa(17), itoa(15)); | |
14 | + return 0; | |
15 | 15 | } |
16 | - | ... | ... |
examples01-pl/08-badexample2/good.c
1 | -#include <stdlib.h> | |
2 | 1 | #include <stdio.h> |
2 | +#include <stdlib.h> | |
3 | 3 | |
4 | 4 | char* itoa(int a) |
5 | 5 | { |
6 | - char * buf = (char*)malloc(20); | |
7 | - snprintf(buf,20,"%d", a); | |
8 | - return buf; | |
6 | + char* buf = (char*)malloc(20); | |
7 | + snprintf(buf, 20, "%d", a); | |
8 | + return buf; | |
9 | 9 | } |
10 | 10 | |
11 | 11 | int main() |
12 | 12 | { |
13 | - char *w1, *w2; | |
14 | - printf("%s %s\n",w1=itoa(17), w2=itoa(15)); | |
15 | - free(w1); | |
16 | - free(w2); | |
17 | - return 0; | |
13 | + char *w1, *w2; | |
14 | + printf("%s %s\n", w1 = itoa(17), w2 = itoa(15)); | |
15 | + free(w1); | |
16 | + free(w2); | |
17 | + return 0; | |
18 | 18 | } |
19 | - | ... | ... |
examples01-pl/09-valgrind/testvalgrind1.c
examples01-pl/09-valgrind/testvalgrind2.c
examples01-pl/10-firstcpp/hellocpp.cpp
examples01-pl/11-string/string.cpp
... | ... | @@ -4,15 +4,13 @@ using namespace std; |
4 | 4 | |
5 | 5 | string getword() |
6 | 6 | { |
7 | - string s; | |
8 | - cin >> s; | |
9 | - return s; | |
7 | + string s; | |
8 | + cin >> s; | |
9 | + return s; | |
10 | 10 | } |
11 | 11 | |
12 | - | |
13 | 12 | int main() |
14 | -{ | |
15 | - cout << "Podaj slowo" << endl; | |
16 | - cout << "Podane slowo to:" << getword() << endl; | |
13 | +{ | |
14 | + cout << "Podaj slowo" << endl; | |
15 | + cout << "Podane slowo to:" << getword() << endl; | |
17 | 16 | } |
18 | - | ... | ... |
examples01-pl/12-vector/vector.cpp
1 | 1 | #include <iostream> |
2 | -#include <vector> | |
3 | 2 | #include <string> |
3 | +#include <vector> | |
4 | 4 | using namespace std; |
5 | 5 | |
6 | 6 | int main() |
7 | 7 | { |
8 | - string word; | |
9 | - vector<string> v; | |
10 | - while(cin) | |
11 | - { | |
12 | - if(cin>>word) | |
13 | - v.push_back(word); | |
14 | - } | |
15 | - for(unsigned int i=0;i<v.size();i++) | |
16 | - cout << v[i]<<" "; | |
17 | - cout << endl; | |
8 | + string word; | |
9 | + vector<string> v; | |
10 | + while (cin) { | |
11 | + if (cin >> word) | |
12 | + v.push_back(word); | |
13 | + } | |
14 | + for (unsigned int i = 0; i < v.size(); i++) | |
15 | + cout << v[i] << " "; | |
16 | + cout << endl; | |
18 | 17 | } |
19 | - | ... | ... |
examples01-pl/13-qt-1/hello.cpp
100755 → 100644
examples01-pl/14-qt-2/hello.cpp
100755 → 100644
1 | 1 | #include <QApplication> |
2 | 2 | #include <QPushButton> |
3 | 3 | |
4 | -int main(int argc, char *argv[]) | |
4 | +int main(int argc, char* argv[]) | |
5 | 5 | { |
6 | 6 | QApplication app(argc, argv); |
7 | 7 | |
8 | 8 | QPushButton hello("Hello world!"); |
9 | 9 | hello.resize(100, 30); |
10 | 10 | hello.setFont(QFont("Arial", 18, QFont::Bold)); |
11 | - hello.setGeometry(400, 200 , 180, 40); | |
11 | + hello.setGeometry(400, 200, 180, 40); | |
12 | 12 | |
13 | 13 | hello.show(); |
14 | 14 | return app.exec(); | ... | ... |
examples01-pl/15-qt-3/hello.cpp
100755 → 100644
1 | 1 | #include <QApplication> |
2 | -#include <QPushButton> | |
3 | 2 | #include <QDial> |
3 | +#include <QPushButton> | |
4 | 4 | |
5 | -int main(int argc, char *argv[]) | |
5 | +int main(int argc, char* argv[]) | |
6 | 6 | { |
7 | 7 | QApplication app(argc, argv); |
8 | 8 | |
9 | 9 | QPushButton hello("Hello world!"); |
10 | 10 | hello.resize(100, 30); |
11 | 11 | hello.setFont(QFont("Arial", 18, QFont::Bold)); |
12 | - hello.setGeometry(400, 200 , 180, 40); | |
12 | + hello.setGeometry(400, 200, 180, 40); | |
13 | 13 | |
14 | 14 | QDial dial; |
15 | 15 | dial.show(); | ... | ... |
examples01-pl/16-stack1/stack.c
1 | -#include <assert.h> | |
2 | 1 | #include "stack.h" |
2 | +#include <assert.h> | |
3 | 3 | |
4 | 4 | #define STACKSIZE 20 |
5 | 5 | static int top; /* pierwsze wolne miejsce na stosie */ |
... | ... | @@ -7,27 +7,24 @@ static int dane[STACKSIZE]; |
7 | 7 | |
8 | 8 | void init() |
9 | 9 | { |
10 | - top=0; | |
10 | + top = 0; | |
11 | 11 | } |
12 | 12 | |
13 | -void finalize() | |
14 | -{ | |
15 | -} | |
13 | +void finalize() {} | |
16 | 14 | |
17 | 15 | void clear() |
18 | 16 | { |
19 | - top=0; | |
17 | + top = 0; | |
20 | 18 | } |
21 | 19 | |
22 | 20 | void push(int a) |
23 | 21 | { |
24 | - assert(top<STACKSIZE); | |
25 | - dane[top++]=a; | |
22 | + assert(top < STACKSIZE); | |
23 | + dane[top++] = a; | |
26 | 24 | } |
27 | 25 | |
28 | 26 | int pop() |
29 | 27 | { |
30 | - assert(top>0); | |
31 | - return dane[--top]; | |
28 | + assert(top > 0); | |
29 | + return dane[--top]; | |
32 | 30 | } |
33 | - | ... | ... |
examples01-pl/16-stack1/teststack.c
1 | -#include <stdio.h> | |
2 | 1 | #include "stack.h" |
2 | +#include <stdio.h> | |
3 | 3 | |
4 | 4 | int main() |
5 | 5 | { |
6 | - init(); | |
7 | - push(1); | |
8 | - push(2); | |
9 | - push(3); | |
10 | - printf("%d %d\n",pop(),pop()); | |
11 | - printf("%d\n",pop()); | |
12 | - finalize(); | |
13 | - return 0; | |
6 | + init(); | |
7 | + push(1); | |
8 | + push(2); | |
9 | + push(3); | |
10 | + printf("%d %d\n", pop(), pop()); | |
11 | + printf("%d\n", pop()); | |
12 | + finalize(); | |
13 | + return 0; | |
14 | 14 | } | ... | ... |
examples01-pl/17-stack2/stack.c
1 | +#include "stack.h" | |
1 | 2 | #include <assert.h> |
2 | -#include <stdlib.h> | |
3 | 3 | #include <stdio.h> |
4 | -#include "stack.h" | |
4 | +#include <stdlib.h> | |
5 | 5 | |
6 | 6 | static int top; /* pierwsze wolne miejsce na stosie */ |
7 | -static int *dane; | |
7 | +static int* dane; | |
8 | 8 | static int size; |
9 | 9 | |
10 | 10 | void init() |
11 | 11 | { |
12 | - top=0; | |
13 | - size=0; | |
14 | - dane=0; | |
12 | + top = 0; | |
13 | + size = 0; | |
14 | + dane = 0; | |
15 | 15 | } |
16 | 16 | |
17 | 17 | void finalize() |
18 | 18 | { |
19 | - free(dane); | |
19 | + free(dane); | |
20 | 20 | } |
21 | 21 | |
22 | 22 | void clear() |
23 | 23 | { |
24 | - top=0; | |
24 | + top = 0; | |
25 | 25 | } |
26 | 26 | |
27 | 27 | void push(int a) |
28 | 28 | { |
29 | - if(top>=size) | |
30 | - { | |
31 | - int newsize=(size+1)*2; | |
32 | - int* ndane=(int*)realloc(dane,newsize*sizeof(int)); | |
33 | - if(ndane) | |
34 | - dane=ndane; | |
35 | - else | |
36 | - { | |
37 | - free(dane); | |
38 | - abort(); | |
39 | - } | |
40 | - fprintf(stderr,"Rozmiar stosu %d -> %d\n",size,newsize); | |
41 | - size=newsize; | |
42 | - } | |
43 | - dane[top++]=a; | |
29 | + if (top >= size) { | |
30 | + int newsize = (size + 1) * 2; | |
31 | + int* ndane = (int*)realloc(dane, newsize * sizeof(int)); | |
32 | + if (ndane) | |
33 | + dane = ndane; | |
34 | + else { | |
35 | + free(dane); | |
36 | + abort(); | |
37 | + } | |
38 | + fprintf(stderr, "Rozmiar stosu %d -> %d\n", size, newsize); | |
39 | + size = newsize; | |
40 | + } | |
41 | + dane[top++] = a; | |
44 | 42 | } |
45 | 43 | |
46 | 44 | int pop() |
47 | 45 | { |
48 | - assert(top>0); | |
49 | - return dane[--top]; | |
46 | + assert(top > 0); | |
47 | + return dane[--top]; | |
50 | 48 | } |
51 | - | ... | ... |
examples01-pl/17-stack2/teststack.c
1 | -#include <stdio.h> | |
2 | 1 | #include "stack.h" |
2 | +#include <stdio.h> | |
3 | 3 | |
4 | 4 | int main() |
5 | 5 | { |
6 | - init(); | |
7 | - push(1); | |
8 | - push(2); | |
9 | - push(3); | |
10 | - printf("%d %d\n",pop(),pop()); | |
11 | - printf("%d\n",pop()); | |
12 | - finalize(); | |
13 | - return 0; | |
6 | + init(); | |
7 | + push(1); | |
8 | + push(2); | |
9 | + push(3); | |
10 | + printf("%d %d\n", pop(), pop()); | |
11 | + printf("%d\n", pop()); | |
12 | + finalize(); | |
13 | + return 0; | |
14 | 14 | } | ... | ... |
examples01-pl/18-stack3/stack.c
1 | +#include "stack.h" | |
1 | 2 | #include <assert.h> |
2 | -#include <stdlib.h> | |
3 | 3 | #include <stdio.h> |
4 | -#include "stack.h" | |
4 | +#include <stdlib.h> | |
5 | 5 | |
6 | 6 | #define STACKSIZE 20 |
7 | 7 | |
8 | -struct stack_handle | |
9 | -{ | |
10 | -int top; /* pierwsze wolne miejsce na stosie */ | |
11 | -int dane[STACKSIZE]; | |
8 | +struct stack_handle { | |
9 | + int top; /* pierwsze wolne miejsce na stosie */ | |
10 | + int dane[STACKSIZE]; | |
12 | 11 | } |
13 | 12 | |
14 | - | |
15 | -struct stack_handle* init() | |
13 | +struct stack_handle* | |
14 | +init() | |
16 | 15 | { |
17 | - struct stack_handle* s=(struct stack_handle*)malloc(sizeof(struct stack_handle)); | |
18 | - s->top=0; | |
19 | - return s; | |
16 | + struct stack_handle* s = | |
17 | + (struct stack_handle*)malloc(sizeof(struct stack_handle)); | |
18 | + s->top = 0; | |
19 | + return s; | |
20 | 20 | } |
21 | 21 | |
22 | 22 | void finalize(struct stack_handle* s) |
23 | 23 | { |
24 | - free(s); | |
24 | + free(s); | |
25 | 25 | } |
26 | 26 | |
27 | 27 | void clear(struct stack_handle* s) |
28 | 28 | { |
29 | - s->top=0; | |
29 | + s->top = 0; | |
30 | 30 | } |
31 | 31 | |
32 | -void push(struct stack_handle* s,int a) | |
32 | +void push(struct stack_handle* s, int a) | |
33 | 33 | { |
34 | - assert(s->top<STACKSIZE); | |
35 | - s->dane[s->top++]=a; | |
34 | + assert(s->top < STACKSIZE); | |
35 | + s->dane[s->top++] = a; | |
36 | 36 | } |
37 | 37 | |
38 | 38 | int pop(struct stack_handle* s) |
39 | 39 | { |
40 | - assert(s->top>0); | |
41 | - return s->dane[--s->top]; | |
40 | + assert(s->top > 0); | |
41 | + return s->dane[--s->top]; | |
42 | 42 | } |
43 | - | ... | ... |
examples01-pl/18-stack3/stack.h
examples01-pl/18-stack3/teststack.c
1 | -#include <stdio.h> | |
2 | 1 | #include "stack.h" |
2 | +#include <stdio.h> | |
3 | 3 | |
4 | 4 | int main() |
5 | 5 | { |
6 | - struct stack_handle * s1=init(); | |
7 | - struct stack_handle * s2=init(); | |
8 | - push(s1,1); | |
9 | - push(s1,2); | |
10 | - push(s1,3); | |
11 | - push(s2,5); | |
12 | - push(s2,6); | |
13 | - printf("%d %d\n",pop(s1),pop(s2)); | |
14 | - printf("%d\n",pop(s1)); | |
15 | - finalize(s1); | |
16 | - finalize(s2); | |
17 | - return 0; | |
6 | + struct stack_handle* s1 = init(); | |
7 | + struct stack_handle* s2 = init(); | |
8 | + push(s1, 1); | |
9 | + push(s1, 2); | |
10 | + push(s1, 3); | |
11 | + push(s2, 5); | |
12 | + push(s2, 6); | |
13 | + printf("%d %d\n", pop(s1), pop(s2)); | |
14 | + printf("%d\n", pop(s1)); | |
15 | + finalize(s1); | |
16 | + finalize(s2); | |
17 | + return 0; | |
18 | 18 | } | ... | ... |
examples01-pl/19-stack4/stack.c
1 | +#include "stack.h" | |
1 | 2 | #include <assert.h> |
2 | -#include <stdlib.h> | |
3 | 3 | #include <stdio.h> |
4 | -#include "stack.h" | |
4 | +#include <stdlib.h> | |
5 | 5 | |
6 | 6 | void init(struct stack_handle* s) |
7 | 7 | { |
8 | - s->top=0; | |
8 | + s->top = 0; | |
9 | 9 | } |
10 | 10 | |
11 | -void finalize(struct stack_handle* s) | |
12 | -{ | |
13 | -} | |
11 | +void finalize(struct stack_handle* s) {} | |
14 | 12 | |
15 | 13 | void clear(struct stack_handle* s) |
16 | 14 | { |
17 | - s->top=0; | |
15 | + s->top = 0; | |
18 | 16 | } |
19 | 17 | |
20 | -void push(struct stack_handle* s,int a) | |
18 | +void push(struct stack_handle* s, int a) | |
21 | 19 | { |
22 | - assert(s->top<STACKSIZE); | |
23 | - s->dane[s->top++]=a; | |
20 | + assert(s->top < STACKSIZE); | |
21 | + s->dane[s->top++] = a; | |
24 | 22 | } |
25 | 23 | |
26 | 24 | int pop(struct stack_handle* s) |
27 | 25 | { |
28 | - assert(s->top>0); | |
29 | - return s->dane[--s->top]; | |
26 | + assert(s->top > 0); | |
27 | + return s->dane[--s->top]; | |
30 | 28 | } |
31 | - | ... | ... |
examples01-pl/19-stack4/stack.h
1 | 1 | #define STACKSIZE 20 |
2 | 2 | |
3 | -struct stack_handle | |
4 | -{ | |
5 | -int top; /* pierwsze wolne miejsce na stosie */ | |
6 | -int dane[STACKSIZE]; | |
3 | +struct stack_handle { | |
4 | + int top; /* pierwsze wolne miejsce na stosie */ | |
5 | + int dane[STACKSIZE]; | |
7 | 6 | }; |
8 | 7 | |
9 | -void push(struct stack_handle* s,int a); | |
8 | +void push(struct stack_handle* s, int a); | |
10 | 9 | int pop(struct stack_handle* s); |
11 | 10 | void clear(struct stack_handle* s); |
12 | 11 | void init(struct stack_handle* s); |
13 | 12 | void finalize(struct stack_handle* s); |
14 | - | ... | ... |
examples01-pl/19-stack4/teststack.c
1 | -#include <stdio.h> | |
2 | 1 | #include "stack.h" |
2 | +#include <stdio.h> | |
3 | 3 | |
4 | 4 | int main() |
5 | 5 | { |
6 | - struct stack_handle s1; | |
7 | - struct stack_handle s2; | |
8 | - init(&s1); | |
9 | - init(&s2); | |
10 | - push(&s1,1); | |
11 | - push(&s1,2); | |
12 | - push(&s1,3); | |
13 | - push(&s2,5); | |
14 | - push(&s2,6); | |
15 | - printf("%d %d\n",pop(&s1),pop(&s2)); | |
16 | - printf("%d\n",pop(&s1)); | |
17 | - finalize(&s1); | |
18 | - finalize(&s2); | |
19 | - return 0; | |
6 | + struct stack_handle s1; | |
7 | + struct stack_handle s2; | |
8 | + init(&s1); | |
9 | + init(&s2); | |
10 | + push(&s1, 1); | |
11 | + push(&s1, 2); | |
12 | + push(&s1, 3); | |
13 | + push(&s2, 5); | |
14 | + push(&s2, 6); | |
15 | + printf("%d %d\n", pop(&s1), pop(&s2)); | |
16 | + printf("%d\n", pop(&s1)); | |
17 | + finalize(&s1); | |
18 | + finalize(&s2); | |
19 | + return 0; | |
20 | 20 | } | ... | ... |
examples01-pl/20-stack5/stack.cpp
1 | +#include "stack.h" | |
1 | 2 | #include <assert.h> |
2 | -#include <stdlib.h> | |
3 | 3 | #include <stdio.h> |
4 | -#include "stack.h" | |
4 | +#include <stdlib.h> | |
5 | 5 | |
6 | 6 | stack::stack() |
7 | 7 | { |
8 | - this->top=0; | |
8 | + this->top = 0; | |
9 | 9 | } |
10 | 10 | |
11 | -stack::~stack() | |
12 | -{ | |
13 | -} | |
11 | +stack::~stack() {} | |
14 | 12 | |
15 | 13 | void stack::clear() |
16 | 14 | { |
17 | - this->top=0; | |
15 | + this->top = 0; | |
18 | 16 | } |
19 | 17 | |
20 | 18 | void stack::push(int a) |
21 | 19 | { |
22 | - assert(this->top<STACKSIZE); | |
23 | - this->dane[this->top++]=a; | |
20 | + assert(this->top < STACKSIZE); | |
21 | + this->dane[this->top++] = a; | |
24 | 22 | } |
25 | 23 | |
26 | 24 | int stack::pop() |
27 | 25 | { |
28 | - assert(this->top>0); | |
29 | - return this->dane[--this->top]; | |
26 | + assert(this->top > 0); | |
27 | + return this->dane[--this->top]; | |
30 | 28 | } |
31 | - | ... | ... |
examples01-pl/20-stack5/stack.h
1 | 1 | #define STACKSIZE 20 |
2 | 2 | |
3 | -class stack | |
4 | -{ | |
5 | -public: | |
6 | -void push(int a); | |
7 | -int pop(); | |
8 | -void clear(); | |
9 | -stack(); | |
10 | -~stack(); | |
11 | -private: | |
12 | -int top; | |
13 | -int dane[STACKSIZE]; | |
14 | -}; | |
3 | +class stack { | |
4 | + public: | |
5 | + void push(int a); | |
6 | + int pop(); | |
7 | + void clear(); | |
8 | + stack(); | |
9 | + ~stack(); | |
15 | 10 | |
11 | + private: | |
12 | + int top; | |
13 | + int dane[STACKSIZE]; | |
14 | +}; | ... | ... |
examples01-pl/20-stack5/teststack.cpp
1 | -#include <stdio.h> | |
2 | 1 | #include "stack.h" |
2 | +#include <stdio.h> | |
3 | 3 | |
4 | 4 | int main() |
5 | 5 | { |
6 | - stack s1; | |
7 | - stack s2; | |
8 | - s1.push(1); | |
9 | - s1.push(2); | |
10 | - s1.push(3); | |
11 | - s2.push(5); | |
12 | - s2.push(6); | |
13 | - printf("%d %d\n",s1.pop(),s2.pop()); | |
14 | - printf("%d\n",s1.pop()); | |
15 | - return 0; | |
6 | + stack s1; | |
7 | + stack s2; | |
8 | + s1.push(1); | |
9 | + s1.push(2); | |
10 | + s1.push(3); | |
11 | + s2.push(5); | |
12 | + s2.push(6); | |
13 | + printf("%d %d\n", s1.pop(), s2.pop()); | |
14 | + printf("%d\n", s1.pop()); | |
15 | + return 0; | |
16 | 16 | } | ... | ... |
examples02/01-date/DateType.cpp
1 | 1 | #include "DateType.h" |
2 | 2 | |
3 | 3 | /** Constructors **/ |
4 | -DateType::DateType() { | |
5 | - Day = 1; | |
6 | - Month = 1; | |
7 | - Year = 1; | |
4 | +DateType::DateType() | |
5 | +{ | |
6 | + Day = 1; | |
7 | + Month = 1; | |
8 | + Year = 1; | |
8 | 9 | } |
9 | -DateType::DateType(int newMonth, int newDay, int newYear) { | |
10 | - Day = newDay; | |
11 | - Month = newMonth; | |
12 | - Year = newYear; | |
10 | +DateType::DateType(int newMonth, int newDay, int newYear) | |
11 | +{ | |
12 | + Day = newDay; | |
13 | + Month = newMonth; | |
14 | + Year = newYear; | |
13 | 15 | } |
14 | 16 | // returns Year |
15 | -int DateType::GetYear() const { return Year; } | |
17 | +int DateType::GetYear() const | |
18 | +{ | |
19 | + return Year; | |
20 | +} | |
16 | 21 | // returns Month |
17 | -int DateType::GetMonth() const { return Month; } | |
22 | +int DateType::GetMonth() const | |
23 | +{ | |
24 | + return Month; | |
25 | +} | |
18 | 26 | // returns Day |
19 | -int DateType::GetDay() const { return Day; } | |
27 | +int DateType::GetDay() const | |
28 | +{ | |
29 | + return Day; | |
30 | +} | |
20 | 31 | |
21 | -RelationType DateType::ComparedTo(DateType otherDate) { | |
22 | - if (Year < otherDate.Year) | |
23 | - return Precedes; | |
24 | - if (Year > otherDate.Year) | |
25 | - return Follows; | |
26 | - if (Month < otherDate.Month) | |
27 | - return Precedes; | |
28 | - if (Month > otherDate.Month) | |
29 | - return Follows; | |
30 | - if (Day < otherDate.Day) | |
31 | - return Precedes; | |
32 | - if (Day > otherDate.Day) | |
33 | - return Follows; | |
34 | - return Same; | |
32 | +RelationType DateType::ComparedTo(DateType otherDate) | |
33 | +{ | |
34 | + if (Year < otherDate.Year) | |
35 | + return Precedes; | |
36 | + if (Year > otherDate.Year) | |
37 | + return Follows; | |
38 | + if (Month < otherDate.Month) | |
39 | + return Precedes; | |
40 | + if (Month > otherDate.Month) | |
41 | + return Follows; | |
42 | + if (Day < otherDate.Day) | |
43 | + return Precedes; | |
44 | + if (Day > otherDate.Day) | |
45 | + return Follows; | |
46 | + return Same; | |
35 | 47 | } | ... | ... |
examples02/01-date/DateType.h
1 | 1 | enum RelationType { Precedes, Same, Follows }; |
2 | 2 | |
3 | 3 | class DateType { |
4 | -public: | |
5 | - // constructor | |
6 | - DateType(); | |
7 | - DateType(int newMonth, int newDay, int newYear); | |
8 | - // accessor methods (get methods) | |
9 | - int GetYear() const; // returns Year | |
10 | - int GetMonth() const; // returns Month | |
11 | - int GetDay() const; // returns Day | |
12 | - RelationType ComparedTo(DateType dateA); | |
4 | + public: | |
5 | + // constructor | |
6 | + DateType(); | |
7 | + DateType(int newMonth, int newDay, int newYear); | |
8 | + // accessor methods (get methods) | |
9 | + int GetYear() const; // returns Year | |
10 | + int GetMonth() const; // returns Month | |
11 | + int GetDay() const; // returns Day | |
12 | + RelationType ComparedTo(DateType dateA); | |
13 | 13 | |
14 | -private: | |
15 | - int Year; | |
16 | - int Month; | |
17 | - int Day; | |
14 | + private: | |
15 | + int Year; | |
16 | + int Month; | |
17 | + int Day; | |
18 | 18 | }; |
19 | 19 | \ No newline at end of file | ... | ... |
examples02/01-date/TestDateType.cpp
... | ... | @@ -3,78 +3,82 @@ |
3 | 3 | #include <iostream> |
4 | 4 | using namespace std; |
5 | 5 | |
6 | -void PrintMonth(int Month, ostream &Out) { | |
7 | - switch (Month) { | |
8 | - case 1: | |
9 | - Out << "January"; | |
10 | - return; | |
11 | - case 2: | |
12 | - Out << "February"; | |
13 | - return; | |
14 | - case 3: | |
15 | - Out << "March"; | |
16 | - return; | |
17 | - case 4: | |
18 | - Out << "April"; | |
19 | - return; | |
20 | - case 5: | |
21 | - Out << "May"; | |
22 | - return; | |
23 | - case 6: | |
24 | - Out << "June"; | |
25 | - return; | |
26 | - case 7: | |
27 | - Out << "July"; | |
28 | - return; | |
29 | - case 8: | |
30 | - Out << "August"; | |
31 | - return; | |
32 | - case 9: | |
33 | - Out << "September"; | |
34 | - return; | |
35 | - case 10: | |
36 | - Out << "October"; | |
37 | - return; | |
38 | - case 11: | |
39 | - Out << "November"; | |
40 | - return; | |
41 | - case 12: | |
42 | - Out << "December"; | |
43 | - return; | |
44 | - default: | |
45 | - Out << "Juvember"; | |
46 | - } | |
6 | +void PrintMonth(int Month, ostream& Out) | |
7 | +{ | |
8 | + switch (Month) { | |
9 | + case 1: | |
10 | + Out << "January"; | |
11 | + return; | |
12 | + case 2: | |
13 | + Out << "February"; | |
14 | + return; | |
15 | + case 3: | |
16 | + Out << "March"; | |
17 | + return; | |
18 | + case 4: | |
19 | + Out << "April"; | |
20 | + return; | |
21 | + case 5: | |
22 | + Out << "May"; | |
23 | + return; | |
24 | + case 6: | |
25 | + Out << "June"; | |
26 | + return; | |
27 | + case 7: | |
28 | + Out << "July"; | |
29 | + return; | |
30 | + case 8: | |
31 | + Out << "August"; | |
32 | + return; | |
33 | + case 9: | |
34 | + Out << "September"; | |
35 | + return; | |
36 | + case 10: | |
37 | + Out << "October"; | |
38 | + return; | |
39 | + case 11: | |
40 | + Out << "November"; | |
41 | + return; | |
42 | + case 12: | |
43 | + Out << "December"; | |
44 | + return; | |
45 | + default: | |
46 | + Out << "Juvember"; | |
47 | + } | |
47 | 48 | } |
48 | 49 | |
49 | -void PrintDate(DateType aDate, ostream &Out) { | |
50 | - PrintMonth(aDate.GetMonth(), Out); | |
51 | - Out << ' ' << aDate.GetDay() << ", " << setw(4) << aDate.GetYear() << endl; | |
50 | +void PrintDate(DateType aDate, ostream& Out) | |
51 | +{ | |
52 | + PrintMonth(aDate.GetMonth(), Out); | |
53 | + Out << ' ' << aDate.GetDay() << ", " << setw(4) << aDate.GetYear() << endl; | |
52 | 54 | } |
53 | 55 | |
54 | -RelationType ComparedTo(DateType dateA, DateType dateB) { | |
55 | - if (dateA.GetYear() < dateB.GetYear()) | |
56 | - return Precedes; | |
57 | - if (dateA.GetYear() > dateB.GetYear()) | |
58 | - return Follows; | |
59 | - if (dateA.GetMonth() < dateB.GetMonth()) | |
60 | - return Precedes; | |
61 | - if (dateA.GetMonth() > dateB.GetMonth()) | |
62 | - return Follows; | |
63 | - if (dateA.GetDay() < dateB.GetDay()) | |
64 | - return Precedes; | |
65 | - if (dateA.GetDay() > dateB.GetDay()) | |
66 | - return Follows; | |
67 | - return Same; | |
56 | +RelationType ComparedTo(DateType dateA, DateType dateB) | |
57 | +{ | |
58 | + if (dateA.GetYear() < dateB.GetYear()) | |
59 | + return Precedes; | |
60 | + if (dateA.GetYear() > dateB.GetYear()) | |
61 | + return Follows; | |
62 | + if (dateA.GetMonth() < dateB.GetMonth()) | |
63 | + return Precedes; | |
64 | + if (dateA.GetMonth() > dateB.GetMonth()) | |
65 | + return Follows; | |
66 | + if (dateA.GetDay() < dateB.GetDay()) | |
67 | + return Precedes; | |
68 | + if (dateA.GetDay() > dateB.GetDay()) | |
69 | + return Follows; | |
70 | + return Same; | |
68 | 71 | } |
69 | 72 | |
70 | -int main() { | |
71 | - DateType Tomorrow(1, 18, 2002), AnotherDay(10, 12, 1885); | |
72 | - if (ComparedTo(Tomorrow, AnotherDay) == Same) { | |
73 | - cout << "what do you think?" << endl; | |
74 | - } | |
73 | +int main() | |
74 | +{ | |
75 | + DateType Tomorrow(1, 18, 2002), AnotherDay(10, 12, 1885); | |
76 | + if (ComparedTo(Tomorrow, AnotherDay) == Same) { | |
77 | + cout << "what do you think?" << endl; | |
78 | + } | |
75 | 79 | |
76 | - if (Tomorrow.ComparedTo(AnotherDay) == Same) | |
77 | - cout << "Think about it, Scarlett!" << endl; | |
80 | + if (Tomorrow.ComparedTo(AnotherDay) == Same) | |
81 | + cout << "Think about it, Scarlett!" << endl; | |
78 | 82 | |
79 | - PrintDate(Tomorrow, cout); | |
83 | + PrintDate(Tomorrow, cout); | |
80 | 84 | } | ... | ... |
examples03/00-funptr/funptr.c
1 | 1 | #include <stdio.h> |
2 | 2 | |
3 | -int * | |
4 | -f1 (int *a, const int *b) | |
3 | +int* f1(int* a, const int* b) | |
5 | 4 | { |
6 | - *a += *b; | |
7 | - return a; | |
5 | + *a += *b; | |
6 | + return a; | |
8 | 7 | } |
9 | 8 | |
10 | -int * | |
11 | -f2 (int *a, const int *b) | |
9 | +int* f2(int* a, const int* b) | |
12 | 10 | { |
13 | - *a -= *b; | |
14 | - return a; | |
11 | + *a -= *b; | |
12 | + return a; | |
15 | 13 | } |
16 | 14 | |
17 | -int *(*fun (int s)) (int *, const int *) | |
15 | +int* (*fun(int s))(int*, const int*) | |
18 | 16 | { |
19 | - if (s == 1) | |
20 | - return f1; | |
21 | - else | |
22 | - return f2; | |
17 | + if (s == 1) | |
18 | + return f1; | |
19 | + else | |
20 | + return f2; | |
23 | 21 | } |
24 | 22 | |
25 | -int | |
26 | -main () | |
23 | +int main() | |
27 | 24 | { |
28 | - int *(*(*fp2) (int)) (int *, const int *) = fun; | |
25 | + int* (*(*fp2)(int))(int*, const int*) = fun; | |
29 | 26 | |
30 | - int a = 15; | |
31 | - int b = 32; | |
32 | - fp2 (1) (&a, &b); | |
33 | - fp2 (2) (&b, &a); | |
34 | - printf ("%d %d\n", a, b); | |
35 | - return 0; | |
27 | + int a = 15; | |
28 | + int b = 32; | |
29 | + fp2(1)(&a, &b); | |
30 | + fp2(2)(&b, &a); | |
31 | + printf("%d %d\n", a, b); | |
32 | + return 0; | |
36 | 33 | } | ... | ... |
examples03/01-list/list.cpp
... | ... | @@ -4,47 +4,46 @@ using namespace std; |
4 | 4 | |
5 | 5 | list::list() |
6 | 6 | { |
7 | - head = NULL; | |
8 | - current = NULL; | |
7 | + head = NULL; | |
8 | + current = NULL; | |
9 | 9 | } |
10 | 10 | |
11 | 11 | list::~list() |
12 | 12 | { |
13 | - while(head) | |
14 | - { | |
15 | - node* t=head->next; | |
16 | - delete head; | |
17 | - head=t; | |
18 | - }; | |
13 | + while (head) { | |
14 | + node* t = head->next; | |
15 | + delete head; | |
16 | + head = t; | |
17 | + }; | |
19 | 18 | } |
20 | 19 | |
21 | 20 | void list::insert(int a) |
22 | 21 | { |
23 | - node* t=new node; | |
24 | - t->next=head; | |
25 | - head = t; | |
26 | - head->val = a; | |
22 | + node* t = new node; | |
23 | + t->next = head; | |
24 | + head = t; | |
25 | + head->val = a; | |
27 | 26 | } |
28 | 27 | |
29 | 28 | void list::goToHead() |
30 | 29 | { |
31 | - current=head; | |
30 | + current = head; | |
32 | 31 | } |
33 | 32 | |
34 | 33 | int list::getCurrentData() |
35 | 34 | { |
36 | - return current->val; | |
35 | + return current->val; | |
37 | 36 | } |
38 | 37 | |
39 | 38 | void list::advance() |
40 | 39 | { |
41 | - current=current->next; | |
40 | + current = current->next; | |
42 | 41 | } |
43 | 42 | |
44 | 43 | bool list::moreData() |
45 | 44 | { |
46 | - if(current) | |
47 | - return true; | |
48 | - else | |
49 | - return false; | |
45 | + if (current) | |
46 | + return true; | |
47 | + else | |
48 | + return false; | |
50 | 49 | } | ... | ... |
examples03/01-list/list.h
1 | -class list | |
2 | -{ | |
3 | -private: | |
4 | - struct node | |
5 | - { | |
6 | - node *next; | |
7 | - int val; | |
8 | - }; | |
9 | - node * head; | |
10 | - node *current; | |
11 | -public: | |
12 | - list (); | |
13 | - ~list (); | |
14 | - void insert (int a); | |
15 | - void goToHead (); | |
16 | - int getCurrentData (); | |
17 | - void advance (); | |
18 | - bool moreData (); | |
1 | +class list { | |
2 | + private: | |
3 | + struct node { | |
4 | + node* next; | |
5 | + int val; | |
6 | + }; | |
7 | + node* head; | |
8 | + node* current; | |
9 | + | |
10 | + public: | |
11 | + list(); | |
12 | + ~list(); | |
13 | + void insert(int a); | |
14 | + void goToHead(); | |
15 | + int getCurrentData(); | |
16 | + void advance(); | |
17 | + bool moreData(); | |
19 | 18 | }; | ... | ... |
examples03/01-list/testlist.cpp
... | ... | @@ -4,17 +4,16 @@ using namespace std; |
4 | 4 | |
5 | 5 | int main() |
6 | 6 | { |
7 | - list l; | |
8 | - l.insert(1); | |
9 | - l.insert(2); | |
10 | - l.insert(3); | |
11 | - l.goToHead(); | |
12 | - while(l.moreData()) | |
13 | - { | |
14 | - int val; | |
15 | - val=l.getCurrentData(); | |
16 | - cout << val << " "; | |
17 | - l.advance(); | |
18 | - } | |
19 | - cout << endl; | |
7 | + list l; | |
8 | + l.insert(1); | |
9 | + l.insert(2); | |
10 | + l.insert(3); | |
11 | + l.goToHead(); | |
12 | + while (l.moreData()) { | |
13 | + int val; | |
14 | + val = l.getCurrentData(); | |
15 | + cout << val << " "; | |
16 | + l.advance(); | |
17 | + } | |
18 | + cout << endl; | |
20 | 19 | } | ... | ... |
examples03/02-list/list.cpp
... | ... | @@ -4,47 +4,46 @@ using namespace std; |
4 | 4 | |
5 | 5 | list::list() |
6 | 6 | { |
7 | - head = NULL; | |
8 | - current = NULL; | |
7 | + head = NULL; | |
8 | + current = NULL; | |
9 | 9 | } |
10 | 10 | |
11 | 11 | list::~list() |
12 | 12 | { |
13 | - while(head) | |
14 | - { | |
15 | - node* t=head->next; | |
16 | - delete head; | |
17 | - head=t; | |
18 | - }; | |
13 | + while (head) { | |
14 | + node* t = head->next; | |
15 | + delete head; | |
16 | + head = t; | |
17 | + }; | |
19 | 18 | } |
20 | 19 | |
21 | 20 | void list::insert(int a) |
22 | 21 | { |
23 | - node* t=new node; | |
24 | - t->next=head; | |
25 | - head = t; | |
26 | - head->val = a; | |
22 | + node* t = new node; | |
23 | + t->next = head; | |
24 | + head = t; | |
25 | + head->val = a; | |
27 | 26 | } |
28 | 27 | |
29 | 28 | void list::goToHead() |
30 | 29 | { |
31 | - current=head; | |
30 | + current = head; | |
32 | 31 | } |
33 | 32 | |
34 | 33 | int list::getCurrentData() |
35 | 34 | { |
36 | - return current->val; | |
35 | + return current->val; | |
37 | 36 | } |
38 | 37 | |
39 | 38 | void list::advance() |
40 | 39 | { |
41 | - current=current->next; | |
40 | + current = current->next; | |
42 | 41 | } |
43 | 42 | |
44 | 43 | bool list::moreData() |
45 | 44 | { |
46 | - if(current) | |
47 | - return true; | |
48 | - else | |
49 | - return false; | |
45 | + if (current) | |
46 | + return true; | |
47 | + else | |
48 | + return false; | |
50 | 49 | } | ... | ... |
examples03/02-list/list.h
1 | -class list | |
2 | -{ | |
3 | -private: | |
4 | - struct node | |
5 | - { | |
6 | - node *next; | |
7 | - int val; | |
8 | - }; | |
9 | - node * head; | |
10 | - node *current; | |
11 | -public: | |
12 | - list (); | |
13 | - ~list (); | |
14 | - void insert (int a); | |
15 | - void goToHead (); | |
16 | - int getCurrentData (); | |
17 | - void advance (); | |
18 | - bool moreData (); | |
1 | +class list { | |
2 | + private: | |
3 | + struct node { | |
4 | + node* next; | |
5 | + int val; | |
6 | + }; | |
7 | + node* head; | |
8 | + node* current; | |
9 | + | |
10 | + public: | |
11 | + list(); | |
12 | + ~list(); | |
13 | + void insert(int a); | |
14 | + void goToHead(); | |
15 | + int getCurrentData(); | |
16 | + void advance(); | |
17 | + bool moreData(); | |
19 | 18 | }; | ... | ... |
examples03/02-list/testlist.cpp
... | ... | @@ -2,33 +2,28 @@ |
2 | 2 | using namespace std; |
3 | 3 | #include "list.h" |
4 | 4 | |
5 | - | |
6 | -void | |
7 | -PrintList (list & toPrint, ostream & Out) | |
5 | +void PrintList(list& toPrint, ostream& Out) | |
8 | 6 | { |
9 | - int nextValue; | |
10 | - Out << "Printing list contents: " << endl; | |
11 | - toPrint.goToHead (); | |
12 | - if (!toPrint.moreData ()) | |
13 | - { | |
14 | - Out << "List is empty" << endl; | |
15 | - return; | |
7 | + int nextValue; | |
8 | + Out << "Printing list contents: " << endl; | |
9 | + toPrint.goToHead(); | |
10 | + if (!toPrint.moreData()) { | |
11 | + Out << "List is empty" << endl; | |
12 | + return; | |
16 | 13 | } |
17 | - while (toPrint.moreData ()) | |
18 | - { | |
19 | - nextValue = toPrint.getCurrentData (); | |
20 | - Out << nextValue << " "; | |
21 | - toPrint.advance (); | |
14 | + while (toPrint.moreData()) { | |
15 | + nextValue = toPrint.getCurrentData(); | |
16 | + Out << nextValue << " "; | |
17 | + toPrint.advance(); | |
22 | 18 | } |
23 | - Out << endl; | |
19 | + Out << endl; | |
24 | 20 | } |
25 | 21 | |
26 | -int | |
27 | -main () | |
22 | +int main() | |
28 | 23 | { |
29 | - list l; | |
30 | - l.insert (1); | |
31 | - l.insert (2); | |
32 | - l.insert (3); | |
33 | - PrintList (l, cout); | |
24 | + list l; | |
25 | + l.insert(1); | |
26 | + l.insert(2); | |
27 | + l.insert(3); | |
28 | + PrintList(l, cout); | |
34 | 29 | } | ... | ... |
examples03/03-list/list.cpp
... | ... | @@ -4,47 +4,46 @@ using namespace std; |
4 | 4 | |
5 | 5 | list::list() |
6 | 6 | { |
7 | - head = NULL; | |
8 | - current = NULL; | |
7 | + head = NULL; | |
8 | + current = NULL; | |
9 | 9 | } |
10 | 10 | |
11 | 11 | list::~list() |
12 | 12 | { |
13 | - while(head) | |
14 | - { | |
15 | - node* t=head->next; | |
16 | - delete head; | |
17 | - head=t; | |
18 | - }; | |
13 | + while (head) { | |
14 | + node* t = head->next; | |
15 | + delete head; | |
16 | + head = t; | |
17 | + }; | |
19 | 18 | } |
20 | 19 | |
21 | 20 | void list::insert(int a) |
22 | 21 | { |
23 | - node* t=new node; | |
24 | - t->next=head; | |
25 | - head = t; | |
26 | - head->val = a; | |
22 | + node* t = new node; | |
23 | + t->next = head; | |
24 | + head = t; | |
25 | + head->val = a; | |
27 | 26 | } |
28 | 27 | |
29 | 28 | void list::goToHead() |
30 | 29 | { |
31 | - current=head; | |
30 | + current = head; | |
32 | 31 | } |
33 | 32 | |
34 | 33 | int list::getCurrentData() |
35 | 34 | { |
36 | - return current->val; | |
35 | + return current->val; | |
37 | 36 | } |
38 | 37 | |
39 | 38 | void list::advance() |
40 | 39 | { |
41 | - current=current->next; | |
40 | + current = current->next; | |
42 | 41 | } |
43 | 42 | |
44 | 43 | bool list::moreData() |
45 | 44 | { |
46 | - if(current) | |
47 | - return true; | |
48 | - else | |
49 | - return false; | |
45 | + if (current) | |
46 | + return true; | |
47 | + else | |
48 | + return false; | |
50 | 49 | } | ... | ... |
examples03/03-list/list.h
1 | -class list | |
2 | -{ | |
3 | -private: | |
4 | - struct node | |
5 | - { | |
6 | - node *next; | |
7 | - int val; | |
8 | - }; | |
9 | - node * head; | |
10 | - node *current; | |
11 | -public: | |
12 | - list (); | |
13 | - ~list (); | |
14 | - void insert (int a); | |
15 | - void goToHead (); | |
16 | - int getCurrentData (); | |
17 | - void advance (); | |
18 | - bool moreData (); | |
1 | +class list { | |
2 | + private: | |
3 | + struct node { | |
4 | + node* next; | |
5 | + int val; | |
6 | + }; | |
7 | + node* head; | |
8 | + node* current; | |
9 | + | |
10 | + public: | |
11 | + list(); | |
12 | + ~list(); | |
13 | + void insert(int a); | |
14 | + void goToHead(); | |
15 | + int getCurrentData(); | |
16 | + void advance(); | |
17 | + bool moreData(); | |
19 | 18 | }; | ... | ... |
examples03/03-list/testlist.cpp
... | ... | @@ -2,34 +2,29 @@ |
2 | 2 | using namespace std; |
3 | 3 | #include "list.h" |
4 | 4 | |
5 | - | |
6 | -void | |
7 | -PrintList (list toPrint, ostream & Out) | |
5 | +void PrintList(list toPrint, ostream& Out) | |
8 | 6 | { |
9 | - int nextValue; | |
10 | - Out << "Printing list contents: " << endl; | |
11 | - toPrint.goToHead (); | |
12 | - if (!toPrint.moreData ()) | |
13 | - { | |
14 | - Out << "List is empty" << endl; | |
15 | - return; | |
7 | + int nextValue; | |
8 | + Out << "Printing list contents: " << endl; | |
9 | + toPrint.goToHead(); | |
10 | + if (!toPrint.moreData()) { | |
11 | + Out << "List is empty" << endl; | |
12 | + return; | |
16 | 13 | } |
17 | - while (toPrint.moreData ()) | |
18 | - { | |
19 | - nextValue = toPrint.getCurrentData (); | |
20 | - Out << nextValue << " "; | |
21 | - toPrint.advance (); | |
14 | + while (toPrint.moreData()) { | |
15 | + nextValue = toPrint.getCurrentData(); | |
16 | + Out << nextValue << " "; | |
17 | + toPrint.advance(); | |
22 | 18 | } |
23 | - Out << endl; | |
19 | + Out << endl; | |
24 | 20 | } |
25 | 21 | |
26 | -int | |
27 | -main () | |
22 | +int main() | |
28 | 23 | { |
29 | - list l; | |
30 | - l.insert (1); | |
31 | - l.insert (2); | |
32 | - l.insert (3); | |
33 | - PrintList (l, cout); | |
34 | - cout << endl; | |
24 | + list l; | |
25 | + l.insert(1); | |
26 | + l.insert(2); | |
27 | + l.insert(3); | |
28 | + PrintList(l, cout); | |
29 | + cout << endl; | |
35 | 30 | } | ... | ... |
examples03/04-list/list.cpp
... | ... | @@ -2,101 +2,92 @@ |
2 | 2 | using namespace std; |
3 | 3 | #include "list.h" |
4 | 4 | |
5 | -list::list () | |
5 | +list::list() | |
6 | 6 | { |
7 | - head = NULL; | |
8 | - current = NULL; | |
7 | + head = NULL; | |
8 | + current = NULL; | |
9 | 9 | } |
10 | 10 | |
11 | -list::~list () | |
11 | +list::~list() | |
12 | 12 | { |
13 | - while (head) | |
14 | - { | |
15 | - node *t = head->next; | |
16 | - delete head; | |
17 | - head = t; | |
13 | + while (head) { | |
14 | + node* t = head->next; | |
15 | + delete head; | |
16 | + head = t; | |
18 | 17 | }; |
19 | 18 | } |
20 | 19 | |
21 | -void | |
22 | -list::insert (int a) | |
20 | +void list::insert(int a) | |
23 | 21 | { |
24 | - node *t = new node; | |
25 | - t->next = head; | |
26 | - head = t; | |
27 | - head->val = a; | |
22 | + node* t = new node; | |
23 | + t->next = head; | |
24 | + head = t; | |
25 | + head->val = a; | |
28 | 26 | } |
29 | 27 | |
30 | -void | |
31 | -list::goToHead () | |
28 | +void list::goToHead() | |
32 | 29 | { |
33 | - current = head; | |
30 | + current = head; | |
34 | 31 | } |
35 | 32 | |
36 | -int | |
37 | -list::getCurrentData () | |
33 | +int list::getCurrentData() | |
38 | 34 | { |
39 | - return current->val; | |
35 | + return current->val; | |
40 | 36 | } |
41 | 37 | |
42 | -void | |
43 | -list::advance () | |
38 | +void list::advance() | |
44 | 39 | { |
45 | - current = current->next; | |
40 | + current = current->next; | |
46 | 41 | } |
47 | 42 | |
48 | -bool | |
49 | -list::moreData () | |
43 | +bool list::moreData() | |
50 | 44 | { |
51 | - if (current) | |
52 | - return true; | |
53 | - else | |
54 | - return false; | |
45 | + if (current) | |
46 | + return true; | |
47 | + else | |
48 | + return false; | |
55 | 49 | } |
56 | 50 | |
57 | -list::list (const list & l) | |
51 | +list::list(const list& l) | |
58 | 52 | { |
59 | - current=NULL; | |
60 | - node *src, **dst; | |
61 | - head = NULL; | |
62 | - src = l.head; | |
63 | - dst = &head; | |
64 | - while (src) | |
65 | - { | |
66 | - *dst = new node; | |
67 | - (*dst)->val = src->val; | |
68 | - (*dst)->next = NULL; | |
69 | - if(src==l.current) | |
70 | - current=*dst; | |
71 | - src = src->next; | |
72 | - dst = &((*dst)->next); | |
53 | + current = NULL; | |
54 | + node *src, **dst; | |
55 | + head = NULL; | |
56 | + src = l.head; | |
57 | + dst = &head; | |
58 | + while (src) { | |
59 | + *dst = new node; | |
60 | + (*dst)->val = src->val; | |
61 | + (*dst)->next = NULL; | |
62 | + if (src == l.current) | |
63 | + current = *dst; | |
64 | + src = src->next; | |
65 | + dst = &((*dst)->next); | |
73 | 66 | } |
74 | 67 | } |
75 | 68 | |
76 | -list & list::operator= (const list & l) | |
69 | +list& list::operator=(const list& l) | |
77 | 70 | { |
78 | - if (&l == this) | |
79 | - return *this; | |
80 | - current=NULL; | |
81 | - while (head) | |
82 | - { | |
83 | - node *t = head->next; | |
84 | - delete head; | |
85 | - head = t; | |
71 | + if (&l == this) | |
72 | + return *this; | |
73 | + current = NULL; | |
74 | + while (head) { | |
75 | + node* t = head->next; | |
76 | + delete head; | |
77 | + head = t; | |
86 | 78 | }; |
87 | - node *src, **dst; | |
88 | - head = NULL; | |
89 | - src = l.head; | |
90 | - dst = &head; | |
91 | - while (src) | |
92 | - { | |
93 | - *dst = new node; | |
94 | - (*dst)->val = src->val; | |
95 | - (*dst)->next = NULL; | |
96 | - if(src==l.current) | |
97 | - current=*dst; | |
98 | - src = src->next; | |
99 | - dst = &((*dst)->next); | |
79 | + node *src, **dst; | |
80 | + head = NULL; | |
81 | + src = l.head; | |
82 | + dst = &head; | |
83 | + while (src) { | |
84 | + *dst = new node; | |
85 | + (*dst)->val = src->val; | |
86 | + (*dst)->next = NULL; | |
87 | + if (src == l.current) | |
88 | + current = *dst; | |
89 | + src = src->next; | |
90 | + dst = &((*dst)->next); | |
100 | 91 | } |
101 | - return *this; | |
92 | + return *this; | |
102 | 93 | } | ... | ... |
examples03/04-list/list.h
1 | -class list | |
2 | -{ | |
3 | -private: | |
4 | - struct node | |
5 | - { | |
6 | - node *next; | |
7 | - int val; | |
8 | - }; | |
9 | - node * head; | |
10 | - node *current; | |
11 | -public: | |
12 | - list (); | |
13 | - list (const list& l); | |
14 | - list& operator=(const list& l); | |
15 | - ~list (); | |
16 | - void insert (int a); | |
17 | - void goToHead (); | |
18 | - int getCurrentData (); | |
19 | - void advance (); | |
20 | - bool moreData (); | |
1 | +class list { | |
2 | + private: | |
3 | + struct node { | |
4 | + node* next; | |
5 | + int val; | |
6 | + }; | |
7 | + node* head; | |
8 | + node* current; | |
9 | + | |
10 | + public: | |
11 | + list(); | |
12 | + list(const list& l); | |
13 | + list& operator=(const list& l); | |
14 | + ~list(); | |
15 | + void insert(int a); | |
16 | + void goToHead(); | |
17 | + int getCurrentData(); | |
18 | + void advance(); | |
19 | + bool moreData(); | |
21 | 20 | }; | ... | ... |
examples03/04-list/testlist.cpp
... | ... | @@ -2,36 +2,31 @@ |
2 | 2 | using namespace std; |
3 | 3 | #include "list.h" |
4 | 4 | |
5 | - | |
6 | -void | |
7 | -PrintList (list toPrint, ostream & Out) | |
5 | +void PrintList(list toPrint, ostream& Out) | |
8 | 6 | { |
9 | - int nextValue; | |
10 | - Out << "Printing list contents: " << endl; | |
11 | - toPrint.goToHead (); | |
12 | - if (!toPrint.moreData ()) | |
13 | - { | |
14 | - Out << "List is empty" << endl; | |
15 | - return; | |
7 | + int nextValue; | |
8 | + Out << "Printing list contents: " << endl; | |
9 | + toPrint.goToHead(); | |
10 | + if (!toPrint.moreData()) { | |
11 | + Out << "List is empty" << endl; | |
12 | + return; | |
16 | 13 | } |
17 | - while (toPrint.moreData ()) | |
18 | - { | |
19 | - nextValue = toPrint.getCurrentData (); | |
20 | - Out << nextValue << " "; | |
21 | - toPrint.advance (); | |
14 | + while (toPrint.moreData()) { | |
15 | + nextValue = toPrint.getCurrentData(); | |
16 | + Out << nextValue << " "; | |
17 | + toPrint.advance(); | |
22 | 18 | } |
23 | - Out << endl; | |
19 | + Out << endl; | |
24 | 20 | } |
25 | 21 | |
26 | -int | |
27 | -main () | |
22 | +int main() | |
28 | 23 | { |
29 | - list l; | |
30 | - l.insert (1); | |
31 | - l.insert (2); | |
32 | - l.insert (3); | |
33 | - PrintList (l, cout); | |
34 | - list l2; | |
35 | - l2=l; | |
36 | - PrintList (l2,cout); | |
24 | + list l; | |
25 | + l.insert(1); | |
26 | + l.insert(2); | |
27 | + l.insert(3); | |
28 | + PrintList(l, cout); | |
29 | + list l2; | |
30 | + l2 = l; | |
31 | + PrintList(l2, cout); | |
37 | 32 | } | ... | ... |
examples03/05-funptr/funptr.cpp
1 | 1 | #include <iostream> |
2 | 2 | |
3 | -int | |
4 | -addition (int a, int b) | |
3 | +int addition(int a, int b) | |
5 | 4 | { |
6 | - return (a + b); | |
5 | + return (a + b); | |
7 | 6 | } |
8 | 7 | |
9 | -int | |
10 | -subtraction (int a, int b) | |
8 | +int subtraction(int a, int b) | |
11 | 9 | { |
12 | - return (a - b); | |
10 | + return (a - b); | |
13 | 11 | } |
14 | 12 | |
15 | -int (*minus) (int, int) = subtraction; | |
16 | -int | |
17 | -operation (int x, int y, int (*functocall) (int, int)) | |
13 | +int (*minus)(int, int) = subtraction; | |
14 | +int operation(int x, int y, int (*functocall)(int, int)) | |
18 | 15 | { |
19 | - int g; | |
20 | - g = (*functocall) (x, y); | |
21 | - return (g); | |
16 | + int g; | |
17 | + g = (*functocall)(x, y); | |
18 | + return (g); | |
22 | 19 | } |
23 | 20 | |
24 | -int | |
25 | -main () | |
21 | +int main() | |
26 | 22 | { |
27 | - int m, n; | |
28 | - m = operation (7, 5, addition); | |
29 | - n = operation (20, m, minus); | |
30 | - std::cout << n << std::endl; | |
31 | - return 0; | |
23 | + int m, n; | |
24 | + m = operation(7, 5, addition); | |
25 | + n = operation(20, m, minus); | |
26 | + std::cout << n << std::endl; | |
27 | + return 0; | |
32 | 28 | } | ... | ... |
examples03/06-complex/complex.h
... | ... | @@ -5,75 +5,71 @@ |
5 | 5 | |
6 | 6 | using namespace std; |
7 | 7 | |
8 | -class Complex | |
9 | -{ | |
10 | -private: | |
11 | - double Real, Imag; | |
12 | -public: | |
13 | - Complex ():Real (0), Imag (0) | |
14 | - { | |
15 | - }; | |
8 | +class Complex { | |
9 | + private: | |
10 | + double Real, Imag; | |
16 | 11 | |
17 | - Complex (double co) | |
18 | - { | |
19 | - Real = co; | |
20 | - Imag = 0; | |
21 | - }; | |
12 | + public: | |
13 | + Complex() : Real(0), Imag(0){}; | |
22 | 14 | |
23 | - Complex (double Real, double Imag) | |
24 | - { | |
25 | - this->Real = Real; | |
26 | - this->Imag = Imag; | |
27 | - }; | |
15 | + Complex(double co) | |
16 | + { | |
17 | + Real = co; | |
18 | + Imag = 0; | |
19 | + }; | |
28 | 20 | |
29 | - Complex & operator= (const Complex & s) | |
30 | - { | |
31 | - Real = s.Real; | |
32 | - Imag = s.Imag; | |
33 | - return *this; | |
34 | - }; | |
21 | + Complex(double Real, double Imag) | |
22 | + { | |
23 | + this->Real = Real; | |
24 | + this->Imag = Imag; | |
25 | + }; | |
35 | 26 | |
36 | - Complex operator- () const | |
37 | - { | |
38 | - return Complex(-Real,-Imag); | |
39 | - }; | |
27 | + Complex& operator=(const Complex& s) | |
28 | + { | |
29 | + Real = s.Real; | |
30 | + Imag = s.Imag; | |
31 | + return *this; | |
32 | + }; | |
40 | 33 | |
41 | - Complex & operator= (double co) | |
42 | - { | |
43 | - Real = co; | |
44 | - Imag = 0; | |
45 | - return *this; | |
46 | - }; | |
34 | + Complex operator-() const | |
35 | + { | |
36 | + return Complex(-Real, -Imag); | |
37 | + }; | |
47 | 38 | |
48 | - Complex operator+ (const Complex& co) const | |
49 | - { | |
50 | - Complex n; | |
51 | - n.Real = this->Real + co.Real; | |
52 | - n.Imag = this->Imag + co.Imag; | |
53 | - return n; | |
54 | - }; | |
39 | + Complex& operator=(double co) | |
40 | + { | |
41 | + Real = co; | |
42 | + Imag = 0; | |
43 | + return *this; | |
44 | + }; | |
55 | 45 | |
46 | + Complex operator+(const Complex& co) const | |
47 | + { | |
48 | + Complex n; | |
49 | + n.Real = this->Real + co.Real; | |
50 | + n.Imag = this->Imag + co.Imag; | |
51 | + return n; | |
52 | + }; | |
56 | 53 | |
57 | - Complex & operator-= (Complex co) | |
58 | - { | |
59 | - Real -= co.Real; | |
60 | - Imag -= co.Imag; | |
61 | - return *this; | |
62 | - }; | |
54 | + Complex& operator-=(Complex co) | |
55 | + { | |
56 | + Real -= co.Real; | |
57 | + Imag -= co.Imag; | |
58 | + return *this; | |
59 | + }; | |
63 | 60 | |
64 | - friend Complex operator- (Complex, Complex); | |
65 | - friend ostream & operator << (ostream & s, const Complex & c) | |
66 | - { | |
67 | - s << "(" << c.Real << "," << c.Imag << ")"; | |
68 | - return s; | |
69 | - }; | |
61 | + friend Complex operator-(Complex, Complex); | |
62 | + friend ostream& operator<<(ostream& s, const Complex& c) | |
63 | + { | |
64 | + s << "(" << c.Real << "," << c.Imag << ")"; | |
65 | + return s; | |
66 | + }; | |
70 | 67 | }; |
71 | 68 | |
72 | -inline Complex | |
73 | -operator - (Complex s1, Complex s2) | |
69 | +inline Complex operator-(Complex s1, Complex s2) | |
74 | 70 | { |
75 | - Complex n (s1); | |
76 | - return n -= s2; | |
71 | + Complex n(s1); | |
72 | + return n -= s2; | |
77 | 73 | } |
78 | 74 | |
79 | 75 | #endif /* __Complex_H__ */ | ... | ... |
examples03/06-complex/testcplx.cpp
... | ... | @@ -2,18 +2,17 @@ |
2 | 2 | using namespace std; |
3 | 3 | #include "complex.h" |
4 | 4 | |
5 | - | |
6 | 5 | int main() |
7 | 6 | { |
8 | - Complex a(0.0,15),b(0,13),c; | |
9 | - c = 10; | |
10 | - cout << c <<endl; | |
11 | - c = -a; | |
12 | - cout << c <<endl; | |
13 | - c = a + b; | |
14 | - c = c - Complex(10); | |
15 | - cout << c <<endl; | |
16 | - c = 10 - a; | |
17 | - (c -=b) -=10; | |
18 | - cout << c <<endl; | |
7 | + Complex a(0.0, 15), b(0, 13), c; | |
8 | + c = 10; | |
9 | + cout << c << endl; | |
10 | + c = -a; | |
11 | + cout << c << endl; | |
12 | + c = a + b; | |
13 | + c = c - Complex(10); | |
14 | + cout << c << endl; | |
15 | + c = 10 - a; | |
16 | + (c -= b) -= 10; | |
17 | + cout << c << endl; | |
19 | 18 | } | ... | ... |
examples03/07-vector/testvector.cpp
... | ... | @@ -2,21 +2,18 @@ |
2 | 2 | using namespace std; |
3 | 3 | #include "vector.h" |
4 | 4 | |
5 | -void | |
6 | -printvector (vector v) | |
5 | +void printvector(vector v) | |
7 | 6 | { |
8 | - cout << v << endl; | |
7 | + cout << v << endl; | |
9 | 8 | } |
10 | 9 | |
11 | -int | |
12 | -main () | |
10 | +int main() | |
13 | 11 | { |
14 | - vector a (10); | |
15 | - cout << a << endl; | |
16 | - a[0] = 15; | |
17 | - a[5] = 32; | |
18 | - vector b(10); | |
19 | - b=a; | |
20 | - printvector (b); | |
12 | + vector a(10); | |
13 | + cout << a << endl; | |
14 | + a[0] = 15; | |
15 | + a[5] = 32; | |
16 | + vector b(10); | |
17 | + b = a; | |
18 | + printvector(b); | |
21 | 19 | } |
22 | - | ... | ... |
examples03/07-vector/vector.h
1 | 1 | #ifndef __VECTOR_H__ |
2 | 2 | #define __VECTOR_H__ |
3 | 3 | |
4 | -class vector | |
5 | -{ | |
6 | - int *dane; | |
7 | - unsigned int size; | |
8 | -public: | |
9 | - vector (int s) | |
10 | - { | |
11 | - dane = new int[s]; | |
12 | - size = s; | |
13 | - for (unsigned i = 0; i < size; i++) | |
14 | - dane[i] = 0; | |
15 | - } | |
16 | - ~vector () | |
17 | - { | |
18 | - delete [] dane; | |
19 | - } | |
20 | - int& operator[] (unsigned int pos) | |
21 | - { | |
22 | - if (pos >= size) | |
23 | - abort (); | |
24 | - return dane[pos]; | |
25 | - } | |
26 | - int operator[] (unsigned int pos) const | |
27 | - { | |
28 | - if (pos >= size) | |
29 | - abort (); | |
30 | - return dane[pos]; | |
31 | - } | |
4 | +class vector { | |
5 | + int* dane; | |
6 | + unsigned int size; | |
32 | 7 | |
33 | - vector (const vector & s) | |
34 | - { | |
35 | - dane = new int[s.size]; | |
36 | - size = s.size; | |
37 | - for (unsigned i = 0; i < size; i++) | |
38 | - dane[i] = s.dane[i]; | |
39 | - } | |
40 | - vector & operator= (const vector & s) | |
41 | - { | |
42 | - if (this == &s) | |
43 | - return *this; | |
44 | - delete [] dane; | |
45 | - dane = new int[s.size]; | |
46 | - size = s.size; | |
47 | - for (unsigned i = 0; i < size; i++) | |
48 | - dane[i] = s.dane[i]; | |
49 | - return *this; | |
50 | - } | |
51 | - friend ostream & operator<< (ostream & o, const vector & v) | |
52 | - { | |
53 | - o << '['; | |
54 | - for (unsigned i = 0; i < v.size;i++) | |
55 | - { | |
56 | - o << v[i]; | |
57 | - if (i != v.size - 1) | |
58 | - o << ','; | |
59 | - }; | |
60 | - o << ']'; | |
61 | - return o; | |
62 | - } | |
8 | + public: | |
9 | + vector(int s) | |
10 | + { | |
11 | + dane = new int[s]; | |
12 | + size = s; | |
13 | + for (unsigned i = 0; i < size; i++) | |
14 | + dane[i] = 0; | |
15 | + } | |
16 | + ~vector() | |
17 | + { | |
18 | + delete[] dane; | |
19 | + } | |
20 | + int& operator[](unsigned int pos) | |
21 | + { | |
22 | + if (pos >= size) | |
23 | + abort(); | |
24 | + return dane[pos]; | |
25 | + } | |
26 | + int operator[](unsigned int pos) const | |
27 | + { | |
28 | + if (pos >= size) | |
29 | + abort(); | |
30 | + return dane[pos]; | |
31 | + } | |
32 | + | |
33 | + vector(const vector& s) | |
34 | + { | |
35 | + dane = new int[s.size]; | |
36 | + size = s.size; | |
37 | + for (unsigned i = 0; i < size; i++) | |
38 | + dane[i] = s.dane[i]; | |
39 | + } | |
40 | + vector& operator=(const vector& s) | |
41 | + { | |
42 | + if (this == &s) | |
43 | + return *this; | |
44 | + delete[] dane; | |
45 | + dane = new int[s.size]; | |
46 | + size = s.size; | |
47 | + for (unsigned i = 0; i < size; i++) | |
48 | + dane[i] = s.dane[i]; | |
49 | + return *this; | |
50 | + } | |
51 | + friend ostream& operator<<(ostream& o, const vector& v) | |
52 | + { | |
53 | + o << '['; | |
54 | + for (unsigned i = 0; i < v.size; i++) { | |
55 | + o << v[i]; | |
56 | + if (i != v.size - 1) | |
57 | + o << ','; | |
58 | + }; | |
59 | + o << ']'; | |
60 | + return o; | |
61 | + } | |
63 | 62 | }; |
64 | 63 | #endif /* __VECTOR_H__ */ | ... | ... |
examples04/00-string/mystring.h
1 | 1 | #ifndef __MYSTRING_H__ |
2 | 2 | #define __MYSTRING_H__ |
3 | 3 | |
4 | -class mystring | |
5 | -{ | |
6 | - char *dane; | |
7 | -public: | |
8 | - mystring ():dane (0) | |
9 | - { | |
10 | - }; | |
11 | - ~mystring () | |
12 | - { | |
13 | - delete[]dane; | |
14 | - }; | |
15 | - mystring (const char *s) | |
16 | - { | |
17 | - if (s) | |
18 | - { | |
19 | - dane = new char[strlen (s) + 1]; | |
20 | - strcpy (dane, s); | |
21 | - } | |
22 | - else | |
23 | - dane = 0; | |
24 | - }; | |
25 | - | |
26 | - unsigned int length () const | |
27 | - { | |
28 | - if (!dane) | |
29 | - return 0; | |
30 | - else | |
31 | - return strlen (dane); | |
32 | - } | |
33 | - | |
34 | - mystring (const mystring & src) | |
35 | - { | |
36 | - if (src.dane) | |
37 | - { | |
38 | - dane = new char[strlen (src.dane) + 1]; | |
39 | - strcpy (dane, src.dane); | |
40 | - } | |
41 | - else | |
42 | - dane = 0; | |
43 | - }; | |
44 | - mystring & operator= (const mystring & src) | |
45 | - { | |
46 | - if (this != &src) | |
47 | - { | |
48 | - delete[]dane; | |
49 | - if (src.dane) | |
50 | - { | |
51 | - dane = new char[strlen (src.dane) + 1]; | |
52 | - strcpy (dane, src.dane); | |
53 | - } | |
54 | - else | |
55 | - dane = 0; | |
56 | - }; | |
57 | - return *this; | |
58 | - } | |
4 | +class mystring { | |
5 | + char* dane; | |
59 | 6 | |
60 | - mystring & operator+= (const mystring & src) | |
61 | - { | |
62 | - char *newstr = new char[length () + src.length () + 1]; | |
63 | - if (length ()) | |
64 | - strcpy (newstr, dane); | |
65 | - else | |
66 | - newstr[0] = '\0'; | |
67 | - if (src.length ()) | |
68 | - strcat (newstr, src.dane); | |
69 | - delete[]dane; | |
70 | - dane = newstr; | |
71 | - return *this; | |
72 | - } | |
7 | + public: | |
8 | + mystring() : dane(0){}; | |
9 | + ~mystring() | |
10 | + { | |
11 | + delete[] dane; | |
12 | + }; | |
13 | + mystring(const char* s) | |
14 | + { | |
15 | + if (s) { | |
16 | + dane = new char[strlen(s) + 1]; | |
17 | + strcpy(dane, s); | |
18 | + } | |
19 | + else | |
20 | + dane = 0; | |
21 | + }; | |
73 | 22 | |
23 | + unsigned int length() const | |
24 | + { | |
25 | + if (!dane) | |
26 | + return 0; | |
27 | + else | |
28 | + return strlen(dane); | |
29 | + } | |
74 | 30 | |
75 | - char operator[] (unsigned int i) const | |
76 | - { | |
77 | - if (!dane) | |
78 | - abort (); | |
79 | - if (i >= strlen (dane)) | |
80 | - abort (); | |
81 | - return dane[i]; | |
82 | - } | |
83 | - char &operator[] (unsigned int i) | |
84 | - { | |
85 | - if (!dane) | |
86 | - abort (); | |
87 | - if (i >= strlen (dane)) | |
88 | - abort (); | |
89 | - return dane[i]; | |
90 | - } | |
31 | + mystring(const mystring& src) | |
32 | + { | |
33 | + if (src.dane) { | |
34 | + dane = new char[strlen(src.dane) + 1]; | |
35 | + strcpy(dane, src.dane); | |
36 | + } | |
37 | + else | |
38 | + dane = 0; | |
39 | + }; | |
40 | + mystring& operator=(const mystring& src) | |
41 | + { | |
42 | + if (this != &src) { | |
43 | + delete[] dane; | |
44 | + if (src.dane) { | |
45 | + dane = new char[strlen(src.dane) + 1]; | |
46 | + strcpy(dane, src.dane); | |
47 | + } | |
48 | + else | |
49 | + dane = 0; | |
50 | + }; | |
51 | + return *this; | |
52 | + } | |
91 | 53 | |
92 | - friend ostream & operator<< (ostream & o, const mystring & s) | |
93 | - { | |
94 | - if (s.dane) | |
95 | - o << s.dane; | |
96 | - return o; | |
97 | - } | |
54 | + mystring& operator+=(const mystring& src) | |
55 | + { | |
56 | + char* newstr = new char[length() + src.length() + 1]; | |
57 | + if (length()) | |
58 | + strcpy(newstr, dane); | |
59 | + else | |
60 | + newstr[0] = '\0'; | |
61 | + if (src.length()) | |
62 | + strcat(newstr, src.dane); | |
63 | + delete[] dane; | |
64 | + dane = newstr; | |
65 | + return *this; | |
66 | + } | |
98 | 67 | |
68 | + char operator[](unsigned int i) const | |
69 | + { | |
70 | + if (!dane) | |
71 | + abort(); | |
72 | + if (i >= strlen(dane)) | |
73 | + abort(); | |
74 | + return dane[i]; | |
75 | + } | |
76 | + char& operator[](unsigned int i) | |
77 | + { | |
78 | + if (!dane) | |
79 | + abort(); | |
80 | + if (i >= strlen(dane)) | |
81 | + abort(); | |
82 | + return dane[i]; | |
83 | + } | |
99 | 84 | |
85 | + friend ostream& operator<<(ostream& o, const mystring& s) | |
86 | + { | |
87 | + if (s.dane) | |
88 | + o << s.dane; | |
89 | + return o; | |
90 | + } | |
100 | 91 | }; |
101 | 92 | |
102 | - inline mystring operator+ (const mystring & s1, const mystring & s2) | |
103 | - { | |
104 | - mystring s (s1); | |
93 | +inline mystring operator+(const mystring& s1, const mystring& s2) | |
94 | +{ | |
95 | + mystring s(s1); | |
105 | 96 | return s += s2; |
106 | - } | |
107 | - | |
97 | +} | |
108 | 98 | |
109 | 99 | #endif /* __MYSTRING_H__ */ | ... | ... |
examples04/00-string/teststring.cpp
1 | -#include <string.h> | |
2 | 1 | #include <iostream> |
2 | +#include <string.h> | |
3 | 3 | using namespace std; |
4 | 4 | #include "mystring.h" |
5 | 5 | |
6 | 6 | int main() |
7 | 7 | { |
8 | - mystring a("ala"); | |
9 | - mystring b=a; | |
10 | - b[0]='c'; | |
11 | - cout << b << endl; | |
12 | - mystring c=a+b; | |
13 | - c+="ola"; | |
14 | - cout << c+"ula"<<endl; | |
8 | + mystring a("ala"); | |
9 | + mystring b = a; | |
10 | + b[0] = 'c'; | |
11 | + cout << b << endl; | |
12 | + mystring c = a + b; | |
13 | + c += "ola"; | |
14 | + cout << c + "ula" << endl; | |
15 | 15 | } | ... | ... |
examples04/01-stringopchar/mystring.h
1 | 1 | #ifndef __MYSTRING_H__ |
2 | 2 | #define __MYSTRING_H__ |
3 | 3 | |
4 | -class mystring | |
5 | -{ | |
6 | - char *dane; | |
7 | -public: | |
8 | - mystring ():dane (0) | |
9 | - { | |
10 | - }; | |
11 | - ~mystring () | |
12 | - { | |
13 | - delete[]dane; | |
14 | - }; | |
15 | - mystring (const char *s) | |
16 | - { | |
17 | - if (s) | |
18 | - { | |
19 | - dane = new char[strlen (s) + 1]; | |
20 | - strcpy (dane, s); | |
21 | - } | |
22 | - else | |
23 | - dane = 0; | |
24 | - }; | |
4 | +class mystring { | |
5 | + char* dane; | |
25 | 6 | |
26 | - unsigned int length () const | |
27 | - { | |
28 | - if (!dane) | |
29 | - return 0; | |
30 | - else | |
31 | - return strlen (dane); | |
32 | - } | |
7 | + public: | |
8 | + mystring() : dane(0){}; | |
9 | + ~mystring() | |
10 | + { | |
11 | + delete[] dane; | |
12 | + }; | |
13 | + mystring(const char* s) | |
14 | + { | |
15 | + if (s) { | |
16 | + dane = new char[strlen(s) + 1]; | |
17 | + strcpy(dane, s); | |
18 | + } | |
19 | + else | |
20 | + dane = 0; | |
21 | + }; | |
33 | 22 | |
34 | - mystring (const mystring & src) | |
35 | - { | |
36 | - if (src.dane) | |
37 | - { | |
38 | - dane = new char[strlen (src.dane) + 1]; | |
39 | - strcpy (dane, src.dane); | |
40 | - } | |
41 | - else | |
42 | - dane = 0; | |
43 | - }; | |
44 | - mystring & operator= (const mystring & src) | |
45 | - { | |
46 | - if (this != &src) | |
47 | - { | |
48 | - delete[]dane; | |
49 | - if (src.dane) | |
50 | - { | |
51 | - dane = new char[strlen (src.dane) + 1]; | |
52 | - strcpy (dane, src.dane); | |
53 | - } | |
54 | - else | |
55 | - dane = 0; | |
56 | - }; | |
57 | - return *this; | |
58 | - } | |
23 | + unsigned int length() const | |
24 | + { | |
25 | + if (!dane) | |
26 | + return 0; | |
27 | + else | |
28 | + return strlen(dane); | |
29 | + } | |
59 | 30 | |
60 | - mystring & operator+= (const mystring & src) | |
61 | - { | |
62 | - char *newstr = new char[length () + src.length () + 1]; | |
63 | - if (length ()) | |
64 | - strcpy (newstr, dane); | |
65 | - else | |
66 | - newstr[0] = '\0'; | |
67 | - if (src.length ()) | |
68 | - strcat (newstr, src.dane); | |
69 | - delete[]dane; | |
70 | - dane = newstr; | |
71 | - return *this; | |
72 | - } | |
31 | + mystring(const mystring& src) | |
32 | + { | |
33 | + if (src.dane) { | |
34 | + dane = new char[strlen(src.dane) + 1]; | |
35 | + strcpy(dane, src.dane); | |
36 | + } | |
37 | + else | |
38 | + dane = 0; | |
39 | + }; | |
40 | + mystring& operator=(const mystring& src) | |
41 | + { | |
42 | + if (this != &src) { | |
43 | + delete[] dane; | |
44 | + if (src.dane) { | |
45 | + dane = new char[strlen(src.dane) + 1]; | |
46 | + strcpy(dane, src.dane); | |
47 | + } | |
48 | + else | |
49 | + dane = 0; | |
50 | + }; | |
51 | + return *this; | |
52 | + } | |
73 | 53 | |
74 | - operator char*() | |
75 | - { | |
76 | - if(!dane) | |
54 | + mystring& operator+=(const mystring& src) | |
77 | 55 | { |
78 | - dane=new char[1]; | |
79 | - dane[0]='\0'; | |
56 | + char* newstr = new char[length() + src.length() + 1]; | |
57 | + if (length()) | |
58 | + strcpy(newstr, dane); | |
59 | + else | |
60 | + newstr[0] = '\0'; | |
61 | + if (src.length()) | |
62 | + strcat(newstr, src.dane); | |
63 | + delete[] dane; | |
64 | + dane = newstr; | |
65 | + return *this; | |
80 | 66 | } |
81 | - return dane; | |
82 | - }; | |
83 | 67 | |
84 | - friend ostream & operator<< (ostream & o, const mystring & s) | |
85 | - { | |
86 | - if (s.dane) | |
87 | - o << s.dane; | |
88 | - return o; | |
89 | - } | |
68 | + operator char*() | |
69 | + { | |
70 | + if (!dane) { | |
71 | + dane = new char[1]; | |
72 | + dane[0] = '\0'; | |
73 | + } | |
74 | + return dane; | |
75 | + }; | |
76 | + | |
77 | + friend ostream& operator<<(ostream& o, const mystring& s) | |
78 | + { | |
79 | + if (s.dane) | |
80 | + o << s.dane; | |
81 | + return o; | |
82 | + } | |
90 | 83 | }; |
91 | 84 | |
92 | - inline mystring operator+ (const mystring & s1, const mystring & s2) | |
93 | - { | |
94 | - mystring s (s1); | |
85 | +inline mystring operator+(const mystring& s1, const mystring& s2) | |
86 | +{ | |
87 | + mystring s(s1); | |
95 | 88 | return s += s2; |
96 | - } | |
97 | - | |
89 | +} | |
98 | 90 | |
99 | 91 | #endif /* __MYSTRING_H__ */ | ... | ... |
examples04/01-stringopchar/teststring.cpp
1 | -#include <string.h> | |
2 | 1 | #include <iostream> |
2 | +#include <string.h> | |
3 | 3 | using namespace std; |
4 | 4 | #include "mystring.h" |
5 | 5 | |
6 | 6 | int main() |
7 | 7 | { |
8 | - mystring a("ala"); | |
9 | - mystring b=a; | |
10 | - b[0]='c'; | |
11 | - cout << b << endl; | |
12 | - mystring c=a+b; | |
13 | - c+="ola"; | |
14 | - cout << c+"ula"<<endl; | |
15 | - mystring d; | |
16 | - cout << strlen(d)<<endl; | |
8 | + mystring a("ala"); | |
9 | + mystring b = a; | |
10 | + b[0] = 'c'; | |
11 | + cout << b << endl; | |
12 | + mystring c = a + b; | |
13 | + c += "ola"; | |
14 | + cout << c + "ula" << endl; | |
15 | + mystring d; | |
16 | + cout << strlen(d) << endl; | |
17 | 17 | } | ... | ... |
examples04/02-exception/exception1.cpp
1 | 1 | #include <iostream> |
2 | 2 | using namespace std; |
3 | 3 | |
4 | -class myexception{}; | |
4 | +class myexception {}; | |
5 | 5 | |
6 | -class tester | |
7 | -{ | |
8 | - string name; | |
9 | -public: | |
10 | - tester(const string& n): name(n) | |
11 | - { | |
12 | - cout<<name<<"()"<<endl; | |
13 | - }; | |
14 | - ~tester() | |
15 | - { | |
16 | - cout<<"~"<<name<<"()"<<endl; | |
17 | - }; | |
6 | +class tester { | |
7 | + string name; | |
8 | + | |
9 | + public: | |
10 | + tester(const string& n) : name(n) | |
11 | + { | |
12 | + cout << name << "()" << endl; | |
13 | + }; | |
14 | + ~tester() | |
15 | + { | |
16 | + cout << "~" << name << "()" << endl; | |
17 | + }; | |
18 | 18 | }; |
19 | 19 | |
20 | 20 | void f1() |
21 | 21 | { |
22 | - tester f1("f1"); | |
23 | - throw myexception(); | |
24 | - cout << "Exiting f1"<<endl; | |
22 | + tester f1("f1"); | |
23 | + throw myexception(); | |
24 | + cout << "Exiting f1" << endl; | |
25 | 25 | } |
26 | 26 | |
27 | 27 | void f2() |
28 | 28 | { |
29 | - tester f2("f2"); | |
30 | - f1(); | |
31 | - cout << "Exiting f2"<<endl; | |
29 | + tester f2("f2"); | |
30 | + f1(); | |
31 | + cout << "Exiting f2" << endl; | |
32 | 32 | } |
33 | - | |
33 | + | |
34 | 34 | int main() |
35 | 35 | { |
36 | - tester main("main"); | |
37 | - try { | |
38 | - f2(); | |
39 | - } catch(myexception&) | |
40 | - { | |
41 | - cout << "myxception caught"<<endl; | |
42 | - } | |
43 | - return 0; | |
36 | + tester main("main"); | |
37 | + try { | |
38 | + f2(); | |
39 | + } | |
40 | + catch (myexception&) { | |
41 | + cout << "myxception caught" << endl; | |
42 | + } | |
43 | + return 0; | |
44 | 44 | } | ... | ... |
examples04/02-exception/exception2.cpp
1 | 1 | #include <iostream> |
2 | 2 | using namespace std; |
3 | 3 | |
4 | -class myexception{}; | |
4 | +class myexception {}; | |
5 | 5 | |
6 | -class tester | |
7 | -{ | |
8 | - string name; | |
9 | -public: | |
10 | - tester(const string& n): name(n) | |
11 | - { | |
12 | - cout<<name<<"()"<<endl; | |
13 | - }; | |
14 | - ~tester() | |
15 | - { | |
16 | - cout<<"~"<<name<<"()"<<endl; | |
17 | - }; | |
6 | +class tester { | |
7 | + string name; | |
8 | + | |
9 | + public: | |
10 | + tester(const string& n) : name(n) | |
11 | + { | |
12 | + cout << name << "()" << endl; | |
13 | + }; | |
14 | + ~tester() | |
15 | + { | |
16 | + cout << "~" << name << "()" << endl; | |
17 | + }; | |
18 | 18 | }; |
19 | 19 | |
20 | 20 | void f1() |
21 | 21 | { |
22 | - tester f1("f1"); | |
23 | - throw myexception(); | |
24 | - cout << "Exiting f1"<<endl; | |
22 | + tester f1("f1"); | |
23 | + throw myexception(); | |
24 | + cout << "Exiting f1" << endl; | |
25 | 25 | } |
26 | 26 | |
27 | 27 | void f2() |
28 | 28 | { |
29 | - tester f2("f2"); | |
30 | - f1(); | |
31 | - cout << "Exiting f2"<<endl; | |
29 | + tester f2("f2"); | |
30 | + f1(); | |
31 | + cout << "Exiting f2" << endl; | |
32 | 32 | } |
33 | - | |
33 | + | |
34 | 34 | int main() |
35 | 35 | { |
36 | - tester main("main"); | |
37 | - f2(); | |
38 | - return 0; | |
36 | + tester main("main"); | |
37 | + f2(); | |
38 | + return 0; | |
39 | 39 | } | ... | ... |
examples04/02-exception/exception3.cpp
... | ... | @@ -2,25 +2,24 @@ |
2 | 2 | #include <memory> |
3 | 3 | using namespace std; |
4 | 4 | |
5 | - | |
6 | 5 | void f1() |
7 | 6 | { |
8 | - int *a = new int[500000000]; | |
9 | - delete [] a; | |
7 | + int* a = new int[500000000]; | |
8 | + delete[] a; | |
10 | 9 | } |
11 | 10 | |
12 | 11 | void f2() |
13 | 12 | { |
14 | - f1(); | |
13 | + f1(); | |
15 | 14 | } |
16 | - | |
15 | + | |
17 | 16 | int main() |
18 | 17 | { |
19 | -try { | |
20 | - f2(); | |
21 | -} | |
22 | -catch(bad_alloc&) { | |
23 | - cout << "bad_alloc"<<endl; | |
24 | -} | |
25 | - return 0; | |
18 | + try { | |
19 | + f2(); | |
20 | + } | |
21 | + catch (bad_alloc&) { | |
22 | + cout << "bad_alloc" << endl; | |
23 | + } | |
24 | + return 0; | |
26 | 25 | } | ... | ... |
examples04/03-excstring/mystring.h
1 | 1 | #ifndef __MYSTRING_H__ |
2 | 2 | #define __MYSTRING_H__ |
3 | 3 | |
4 | -class mystring | |
5 | -{ | |
6 | - char *dane; | |
7 | -public: | |
8 | - class index_out_of_range{}; | |
9 | - mystring ():dane (0) | |
10 | - { | |
11 | - }; | |
12 | - ~mystring () | |
13 | - { | |
14 | - delete[]dane; | |
15 | - }; | |
16 | - mystring (const char *s) | |
17 | - { | |
18 | - if (s) | |
19 | - { | |
20 | - dane = new char[strlen (s) + 1]; | |
21 | - strcpy (dane, s); | |
22 | - } | |
23 | - else | |
24 | - dane = 0; | |
25 | - }; | |
26 | - | |
27 | - unsigned int length () const | |
28 | - { | |
29 | - if (!dane) | |
30 | - return 0; | |
31 | - else | |
32 | - return strlen (dane); | |
33 | - } | |
34 | - | |
35 | - mystring (const mystring & src) | |
36 | - { | |
37 | - if (src.dane) | |
38 | - { | |
39 | - dane = new char[strlen (src.dane) + 1]; | |
40 | - strcpy (dane, src.dane); | |
41 | - } | |
42 | - else | |
43 | - dane = 0; | |
44 | - }; | |
45 | - mystring & operator= (const mystring & src) | |
46 | - { | |
47 | - if (this != &src) | |
48 | - { | |
49 | - char* nowedane; | |
50 | - if (src.dane) | |
51 | - { | |
52 | - nowedane = new char[strlen (src.dane) + 1]; | |
53 | - strcpy (nowedane, src.dane); | |
54 | - } | |
55 | - else | |
56 | - nowedane = 0; | |
57 | - delete [] dane; | |
58 | - dane=nowedane; | |
59 | - }; | |
60 | - return *this; | |
61 | - } | |
4 | +class mystring { | |
5 | + char* dane; | |
62 | 6 | |
63 | - mystring & operator+= (const mystring & src) | |
64 | - { | |
65 | - char *newstr = new char[length () + src.length () + 1]; | |
66 | - if (length ()) | |
67 | - strcpy (newstr, dane); | |
68 | - else | |
69 | - newstr[0] = '\0'; | |
70 | - if (src.length ()) | |
71 | - strcat (newstr, src.dane); | |
72 | - delete[]dane; | |
73 | - dane = newstr; | |
74 | - return *this; | |
75 | - } | |
7 | + public: | |
8 | + class index_out_of_range {}; | |
9 | + mystring() : dane(0){}; | |
10 | + ~mystring() | |
11 | + { | |
12 | + delete[] dane; | |
13 | + }; | |
14 | + mystring(const char* s) | |
15 | + { | |
16 | + if (s) { | |
17 | + dane = new char[strlen(s) + 1]; | |
18 | + strcpy(dane, s); | |
19 | + } | |
20 | + else | |
21 | + dane = 0; | |
22 | + }; | |
76 | 23 | |
24 | + unsigned int length() const | |
25 | + { | |
26 | + if (!dane) | |
27 | + return 0; | |
28 | + else | |
29 | + return strlen(dane); | |
30 | + } | |
77 | 31 | |
78 | - char operator[] (unsigned int i) const | |
79 | - { | |
80 | - if (!dane) | |
81 | - throw index_out_of_range(); | |
82 | - if (i >= strlen (dane)) | |
83 | - throw index_out_of_range(); | |
84 | - return dane[i]; | |
85 | - } | |
86 | - char &operator[] (unsigned int i) | |
87 | - { | |
88 | - if (!dane) | |
89 | - throw index_out_of_range(); | |
90 | - if (i >= strlen (dane)) | |
91 | - throw index_out_of_range(); | |
92 | - return dane[i]; | |
93 | - } | |
32 | + mystring(const mystring& src) | |
33 | + { | |
34 | + if (src.dane) { | |
35 | + dane = new char[strlen(src.dane) + 1]; | |
36 | + strcpy(dane, src.dane); | |
37 | + } | |
38 | + else | |
39 | + dane = 0; | |
40 | + }; | |
41 | + mystring& operator=(const mystring& src) | |
42 | + { | |
43 | + if (this != &src) { | |
44 | + char* nowedane; | |
45 | + if (src.dane) { | |
46 | + nowedane = new char[strlen(src.dane) + 1]; | |
47 | + strcpy(nowedane, src.dane); | |
48 | + } | |
49 | + else | |
50 | + nowedane = 0; | |
51 | + delete[] dane; | |
52 | + dane = nowedane; | |
53 | + }; | |
54 | + return *this; | |
55 | + } | |
94 | 56 | |
95 | - friend ostream & operator<< (ostream & o, const mystring & s) | |
96 | - { | |
97 | - if (s.dane) | |
98 | - o << s.dane; | |
99 | - return o; | |
100 | - } | |
57 | + mystring& operator+=(const mystring& src) | |
58 | + { | |
59 | + char* newstr = new char[length() + src.length() + 1]; | |
60 | + if (length()) | |
61 | + strcpy(newstr, dane); | |
62 | + else | |
63 | + newstr[0] = '\0'; | |
64 | + if (src.length()) | |
65 | + strcat(newstr, src.dane); | |
66 | + delete[] dane; | |
67 | + dane = newstr; | |
68 | + return *this; | |
69 | + } | |
101 | 70 | |
71 | + char operator[](unsigned int i) const | |
72 | + { | |
73 | + if (!dane) | |
74 | + throw index_out_of_range(); | |
75 | + if (i >= strlen(dane)) | |
76 | + throw index_out_of_range(); | |
77 | + return dane[i]; | |
78 | + } | |
79 | + char& operator[](unsigned int i) | |
80 | + { | |
81 | + if (!dane) | |
82 | + throw index_out_of_range(); | |
83 | + if (i >= strlen(dane)) | |
84 | + throw index_out_of_range(); | |
85 | + return dane[i]; | |
86 | + } | |
102 | 87 | |
88 | + friend ostream& operator<<(ostream& o, const mystring& s) | |
89 | + { | |
90 | + if (s.dane) | |
91 | + o << s.dane; | |
92 | + return o; | |
93 | + } | |
103 | 94 | }; |
104 | 95 | |
105 | - inline mystring operator+ (const mystring & s1, const mystring & s2) | |
106 | - { | |
107 | - mystring s (s1); | |
96 | +inline mystring operator+(const mystring& s1, const mystring& s2) | |
97 | +{ | |
98 | + mystring s(s1); | |
108 | 99 | return s += s2; |
109 | - } | |
110 | - | |
100 | +} | |
111 | 101 | |
112 | 102 | #endif /* __MYSTRING_H__ */ | ... | ... |
examples04/03-excstring/teststring.cpp
1 | -#include <string.h> | |
2 | 1 | #include <iostream> |
2 | +#include <string.h> | |
3 | 3 | using namespace std; |
4 | 4 | #include "mystring.h" |
5 | 5 | |
6 | 6 | int main() |
7 | 7 | { |
8 | - mystring a("ala"); | |
9 | - mystring b=a; | |
10 | - b[0]='c'; | |
11 | - cout << b << endl; | |
12 | - mystring c=a+b; | |
13 | - c+="ola"; | |
14 | - cout << c+"ula"<<endl; | |
15 | - try { | |
16 | - c[40]='a'; | |
17 | - } catch (mystring::index_out_of_range&) | |
18 | - { | |
19 | - cout << "Index out of range" << endl; | |
20 | - }; | |
8 | + mystring a("ala"); | |
9 | + mystring b = a; | |
10 | + b[0] = 'c'; | |
11 | + cout << b << endl; | |
12 | + mystring c = a + b; | |
13 | + c += "ola"; | |
14 | + cout << c + "ula" << endl; | |
15 | + try { | |
16 | + c[40] = 'a'; | |
17 | + } | |
18 | + catch (mystring::index_out_of_range&) { | |
19 | + cout << "Index out of range" << endl; | |
20 | + }; | |
21 | 21 | } | ... | ... |
examples04/04-rcstring/rcstring.cpp
... | ... | @@ -2,24 +2,24 @@ |
2 | 2 | |
3 | 3 | int main() |
4 | 4 | { |
5 | -rcstring a,b,c; | |
6 | -a="10"; | |
7 | -b="ala ma kota"; | |
8 | -cout << a << " " << b << endl; // 10 ala ma ma kota | |
9 | -c=a+b; | |
10 | -cout << c<<endl; // 10ala ma kota | |
11 | -c=a+rcstring(" ")+b; | |
12 | -cout << c << endl; //10 ala ma kota | |
13 | -rcstring d("a"); | |
14 | -cout << d <<endl; //a | |
15 | -d+="ula"; | |
16 | -cout << d << endl; //aula | |
17 | -d+="15"; | |
18 | -cout << d << endl; //aula15 | |
19 | -cout << d[3]<<endl; //a | |
20 | -d[3]='b'; | |
21 | -cout << d << endl; //aulb15 | |
22 | -d[2]=d[1]=d[0]; | |
23 | -cout << d << endl; //aaab15 | |
24 | -return 0; | |
5 | + rcstring a, b, c; | |
6 | + a = "10"; | |
7 | + b = "ala ma kota"; | |
8 | + cout << a << " " << b << endl; // 10 ala ma ma kota | |
9 | + c = a + b; | |
10 | + cout << c << endl; // 10ala ma kota | |
11 | + c = a + rcstring(" ") + b; | |
12 | + cout << c << endl; // 10 ala ma kota | |
13 | + rcstring d("a"); | |
14 | + cout << d << endl; // a | |
15 | + d += "ula"; | |
16 | + cout << d << endl; // aula | |
17 | + d += "15"; | |
18 | + cout << d << endl; // aula15 | |
19 | + cout << d[3] << endl; // a | |
20 | + d[3] = 'b'; | |
21 | + cout << d << endl; // aulb15 | |
22 | + d[2] = d[1] = d[0]; | |
23 | + cout << d << endl; // aaab15 | |
24 | + return 0; | |
25 | 25 | } | ... | ... |
examples04/04-rcstring/rcstring.h
1 | 1 | #ifndef __RCSTRING_H__ |
2 | 2 | #define __RCSTRING_H__ |
3 | -#include <string.h> | |
4 | -#include <stdio.h> | |
5 | -#include <malloc.h> | |
6 | 3 | #include <iostream> |
4 | +#include <malloc.h> | |
5 | +#include <stdio.h> | |
6 | +#include <string.h> | |
7 | 7 | using namespace std; |
8 | 8 | |
9 | -class rcstring{ | |
10 | - struct rctext; | |
11 | - rctext* data; | |
12 | -public: | |
13 | -class Range{}; | |
14 | -rcstring(); | |
15 | -rcstring(const char*); | |
16 | -rcstring(const rcstring&); | |
17 | -~rcstring(); | |
18 | -rcstring& operator=(const rcstring&); | |
19 | -rcstring& operator+=(const rcstring &); | |
20 | -rcstring operator+(const rcstring &) const; | |
21 | -friend ostream& operator<<(ostream&, const rcstring&); | |
22 | -void check (unsigned int i) const; | |
23 | -char read(unsigned int i) const; | |
24 | -void write(unsigned int i, char c); | |
25 | - | |
26 | -char operator[](unsigned int i) const; | |
27 | -char& operator[](unsigned int i); | |
9 | +class rcstring { | |
10 | + struct rctext; | |
11 | + rctext* data; | |
12 | + | |
13 | + public: | |
14 | + class Range {}; | |
15 | + rcstring(); | |
16 | + rcstring(const char*); | |
17 | + rcstring(const rcstring&); | |
18 | + ~rcstring(); | |
19 | + rcstring& operator=(const rcstring&); | |
20 | + rcstring& operator+=(const rcstring&); | |
21 | + rcstring operator+(const rcstring&) const; | |
22 | + friend ostream& operator<<(ostream&, const rcstring&); | |
23 | + void check(unsigned int i) const; | |
24 | + char read(unsigned int i) const; | |
25 | + void write(unsigned int i, char c); | |
26 | + | |
27 | + char operator[](unsigned int i) const; | |
28 | + char& operator[](unsigned int i); | |
28 | 29 | }; |
29 | 30 | |
30 | -struct rcstring::rctext | |
31 | -{ | |
32 | - char* s; | |
33 | - unsigned int size; | |
34 | - unsigned int n; | |
35 | - | |
36 | - rctext(unsigned int nsize, const char* p) | |
37 | - { | |
38 | - n=1; | |
39 | - size=nsize; | |
40 | - s=new char[size+1]; | |
41 | - strncpy(s,p,size); | |
42 | - s[size]='\0'; | |
43 | - }; | |
44 | - ~rctext() | |
45 | - { | |
46 | - delete [] s; | |
47 | - }; | |
48 | - rctext* detach() | |
49 | - { | |
50 | - if(n==1) | |
51 | - return this; | |
52 | - rctext* t=new rctext(size, s); | |
53 | - n--; | |
54 | - return t; | |
55 | - }; | |
56 | -private: | |
57 | - rctext(const rctext&); | |
58 | - rctext& operator=(const rctext&); | |
31 | +struct rcstring::rctext { | |
32 | + char* s; | |
33 | + unsigned int size; | |
34 | + unsigned int n; | |
35 | + | |
36 | + rctext(unsigned int nsize, const char* p) | |
37 | + { | |
38 | + n = 1; | |
39 | + size = nsize; | |
40 | + s = new char[size + 1]; | |
41 | + strncpy(s, p, size); | |
42 | + s[size] = '\0'; | |
43 | + }; | |
44 | + ~rctext() | |
45 | + { | |
46 | + delete[] s; | |
47 | + }; | |
48 | + rctext* detach() | |
49 | + { | |
50 | + if (n == 1) | |
51 | + return this; | |
52 | + rctext* t = new rctext(size, s); | |
53 | + n--; | |
54 | + return t; | |
55 | + }; | |
56 | + | |
57 | + private: | |
58 | + rctext(const rctext&); | |
59 | + rctext& operator=(const rctext&); | |
59 | 60 | }; |
60 | 61 | |
61 | 62 | inline rcstring::rcstring() |
62 | - { | |
63 | - data = new rctext(0,""); | |
64 | - } | |
63 | +{ | |
64 | + data = new rctext(0, ""); | |
65 | +} | |
65 | 66 | |
66 | 67 | inline rcstring::rcstring(const rcstring& x) |
67 | - { | |
68 | +{ | |
68 | 69 | x.data->n++; |
69 | - data=x.data; | |
70 | - } | |
70 | + data = x.data; | |
71 | +} | |
71 | 72 | inline rcstring::~rcstring() |
72 | 73 | { |
73 | - if(--data->n==0) | |
74 | - delete data; | |
74 | + if (--data->n == 0) | |
75 | + delete data; | |
75 | 76 | } |
76 | 77 | |
77 | -rcstring& rcstring::operator=(const rcstring & x) | |
78 | +rcstring& rcstring::operator=(const rcstring& x) | |
78 | 79 | { |
79 | - x.data->n++; | |
80 | - if(--data->n == 0) | |
81 | - delete data; | |
82 | - data=x.data; | |
83 | - return *this; | |
80 | + x.data->n++; | |
81 | + if (--data->n == 0) | |
82 | + delete data; | |
83 | + data = x.data; | |
84 | + return *this; | |
84 | 85 | } |
85 | 86 | |
86 | 87 | rcstring::rcstring(const char* s) |
87 | 88 | { |
88 | - data=new rctext(strlen(s),s); | |
89 | + data = new rctext(strlen(s), s); | |
89 | 90 | } |
90 | 91 | |
91 | -ostream& operator << (ostream& o, const rcstring& s) | |
92 | +ostream& operator<<(ostream& o, const rcstring& s) | |
92 | 93 | { |
93 | - return o<<s.data->s; | |
94 | + return o << s.data->s; | |
94 | 95 | } |
95 | 96 | |
96 | -rcstring& rcstring::operator+=(const rcstring & s) | |
97 | +rcstring& rcstring::operator+=(const rcstring& s) | |
97 | 98 | { |
98 | -unsigned int newsize=data->size+s.data->size; | |
99 | -rctext *newdata=new rctext(newsize,data->s); | |
100 | -strcat(newdata->s,s.data->s); | |
101 | -if(--data->n==0) | |
102 | - delete data; | |
103 | -data = newdata; | |
104 | -return *this; | |
99 | + unsigned int newsize = data->size + s.data->size; | |
100 | + rctext* newdata = new rctext(newsize, data->s); | |
101 | + strcat(newdata->s, s.data->s); | |
102 | + if (--data->n == 0) | |
103 | + delete data; | |
104 | + data = newdata; | |
105 | + return *this; | |
105 | 106 | } |
106 | 107 | |
107 | -rcstring rcstring::operator+(const rcstring & s) const | |
108 | +rcstring rcstring::operator+(const rcstring& s) const | |
108 | 109 | { |
109 | - return rcstring(*this)+=s; | |
110 | + return rcstring(*this) += s; | |
110 | 111 | } |
111 | 112 | |
112 | -inline void rcstring::check (unsigned int i) const | |
113 | +inline void rcstring::check(unsigned int i) const | |
113 | 114 | { |
114 | -if(data->size<=i) | |
115 | - throw Range(); | |
115 | + if (data->size <= i) | |
116 | + throw Range(); | |
116 | 117 | } |
117 | 118 | |
118 | 119 | inline char rcstring::read(unsigned int i) const |
119 | 120 | { |
120 | - return data->s[i]; | |
121 | + return data->s[i]; | |
121 | 122 | } |
122 | 123 | |
123 | 124 | inline void rcstring::write(unsigned int i, char c) |
124 | 125 | { |
125 | - data = data->detach(); | |
126 | - data->s[i] = c; | |
126 | + data = data->detach(); | |
127 | + data->s[i] = c; | |
127 | 128 | } |
128 | 129 | |
129 | 130 | char rcstring::operator[](unsigned int i) const |
130 | 131 | { |
131 | - cout << "char rcstring::operator[](unsigned int i) const"<<endl; | |
132 | - check(i); | |
133 | - return data->s[i]; | |
132 | + cout << "char rcstring::operator[](unsigned int i) const" << endl; | |
133 | + check(i); | |
134 | + return data->s[i]; | |
134 | 135 | } |
135 | 136 | |
136 | 137 | char& rcstring::operator[](unsigned int i) |
137 | 138 | { |
138 | - cout << "char& rcstring::operator[](unsigned int i)"<<endl; | |
139 | - check(i); | |
140 | - data = data->detach(); | |
141 | - return data->s[i]; | |
139 | + cout << "char& rcstring::operator[](unsigned int i)" << endl; | |
140 | + check(i); | |
141 | + data = data->detach(); | |
142 | + return data->s[i]; | |
142 | 143 | } |
143 | 144 | |
144 | 145 | #endif /* __RCSTRING_H__ */ | ... | ... |
examples04/05-rcstring/rcstring.cpp
... | ... | @@ -2,24 +2,24 @@ |
2 | 2 | |
3 | 3 | int main() |
4 | 4 | { |
5 | -rcstring a,b,c; | |
6 | -a="10"; | |
7 | -b="ala ma kota"; | |
8 | -cout << a << " " << b << endl; // 10 ala ma ma kota | |
9 | -c=a+b; | |
10 | -cout << c<<endl; // 10ala ma kota | |
11 | -c=a+rcstring(" ")+b; | |
12 | -cout << c << endl; //10 ala ma kota | |
13 | -rcstring d("a"); | |
14 | -cout << d <<endl; //a | |
15 | -d+="ula"; | |
16 | -cout << d << endl; //aula | |
17 | -d+="15"; | |
18 | -cout << d << endl; //aula15 | |
19 | -cout << d[3]<<endl; //a | |
20 | -d[3]='b'; | |
21 | -cout << d << endl; //aulb15 | |
22 | -d[2]=d[1]=d[0]; | |
23 | -cout << d << endl; //aaab15 | |
24 | -return 0; | |
5 | + rcstring a, b, c; | |
6 | + a = "10"; | |
7 | + b = "ala ma kota"; | |
8 | + cout << a << " " << b << endl; // 10 ala ma ma kota | |
9 | + c = a + b; | |
10 | + cout << c << endl; // 10ala ma kota | |
11 | + c = a + rcstring(" ") + b; | |
12 | + cout << c << endl; // 10 ala ma kota | |
13 | + rcstring d("a"); | |
14 | + cout << d << endl; // a | |
15 | + d += "ula"; | |
16 | + cout << d << endl; // aula | |
17 | + d += "15"; | |
18 | + cout << d << endl; // aula15 | |
19 | + cout << d[3] << endl; // a | |
20 | + d[3] = 'b'; | |
21 | + cout << d << endl; // aulb15 | |
22 | + d[2] = d[1] = d[0]; | |
23 | + cout << d << endl; // aaab15 | |
24 | + return 0; | |
25 | 25 | } | ... | ... |
examples04/05-rcstring/rcstring.h
1 | 1 | #ifndef __RCSTRING_H__ |
2 | 2 | #define __RCSTRING_H__ |
3 | -#include <string.h> | |
4 | -#include <stdio.h> | |
5 | -#include <malloc.h> | |
6 | 3 | #include <iostream> |
4 | +#include <malloc.h> | |
5 | +#include <stdio.h> | |
6 | +#include <string.h> | |
7 | 7 | using namespace std; |
8 | 8 | |
9 | -class rcstring{ | |
10 | - struct rctext; | |
11 | - rctext* data; | |
12 | -public: | |
13 | -class Range{}; | |
14 | -class Cref; | |
15 | -rcstring(); | |
16 | -rcstring(const char*); | |
17 | -rcstring(const rcstring&); | |
18 | -~rcstring(); | |
19 | -rcstring& operator=(const rcstring&); | |
20 | -rcstring& operator+=(const rcstring &); | |
21 | -rcstring operator+(const rcstring &) const; | |
22 | -friend ostream& operator<<(ostream&, const rcstring&); | |
23 | -void check (unsigned int i) const; | |
24 | -char read(unsigned int i) const; | |
25 | -void write(unsigned int i, char c); | |
26 | -char operator[](unsigned int i) const; | |
27 | -Cref operator[](unsigned int i); | |
9 | +class rcstring { | |
10 | + struct rctext; | |
11 | + rctext* data; | |
12 | + | |
13 | + public: | |
14 | + class Range {}; | |
15 | + class Cref; | |
16 | + rcstring(); | |
17 | + rcstring(const char*); | |
18 | + rcstring(const rcstring&); | |
19 | + ~rcstring(); | |
20 | + rcstring& operator=(const rcstring&); | |
21 | + rcstring& operator+=(const rcstring&); | |
22 | + rcstring operator+(const rcstring&) const; | |
23 | + friend ostream& operator<<(ostream&, const rcstring&); | |
24 | + void check(unsigned int i) const; | |
25 | + char read(unsigned int i) const; | |
26 | + void write(unsigned int i, char c); | |
27 | + char operator[](unsigned int i) const; | |
28 | + Cref operator[](unsigned int i); | |
28 | 29 | }; |
29 | 30 | |
30 | -struct rcstring::rctext | |
31 | -{ | |
32 | - char* s; | |
33 | - unsigned int size; | |
34 | - unsigned int n; | |
35 | - | |
36 | - rctext(unsigned int nsize, const char* p) | |
37 | - { | |
38 | - n=1; | |
39 | - size=nsize; | |
40 | - s=new char[size+1]; | |
41 | - strncpy(s,p,size); | |
42 | - s[size]='\0'; | |
43 | - }; | |
44 | - ~rctext() | |
45 | - { | |
46 | - delete [] s; | |
47 | - }; | |
48 | - rctext* detach() | |
49 | - { | |
50 | - if(n==1) | |
51 | - return this; | |
52 | - rctext* t=new rctext(size, s); | |
53 | - n--; | |
54 | - return t; | |
55 | - }; | |
56 | -private: | |
57 | - rctext(const rctext&); | |
58 | - rctext& operator=(const rctext&); | |
31 | +struct rcstring::rctext { | |
32 | + char* s; | |
33 | + unsigned int size; | |
34 | + unsigned int n; | |
35 | + | |
36 | + rctext(unsigned int nsize, const char* p) | |
37 | + { | |
38 | + n = 1; | |
39 | + size = nsize; | |
40 | + s = new char[size + 1]; | |
41 | + strncpy(s, p, size); | |
42 | + s[size] = '\0'; | |
43 | + }; | |
44 | + ~rctext() | |
45 | + { | |
46 | + delete[] s; | |
47 | + }; | |
48 | + rctext* detach() | |
49 | + { | |
50 | + if (n == 1) | |
51 | + return this; | |
52 | + rctext* t = new rctext(size, s); | |
53 | + n--; | |
54 | + return t; | |
55 | + }; | |
56 | + | |
57 | + private: | |
58 | + rctext(const rctext&); | |
59 | + rctext& operator=(const rctext&); | |
59 | 60 | }; |
60 | 61 | |
61 | -class rcstring::Cref | |
62 | -{ | |
63 | - friend class rcstring; | |
64 | - rcstring& s; | |
65 | - int i; | |
66 | - Cref (rcstring& ss, unsigned int ii): s(ss), i(ii) {}; | |
67 | -public: | |
68 | - operator char() const | |
69 | - { | |
70 | - cout << "operator char() const"<<endl; | |
71 | - return s.read(i); | |
72 | - } | |
73 | - rcstring::Cref& operator = (char c) | |
74 | - { | |
75 | - cout << "void operator = (char c)"<<endl; | |
76 | - s.write(i,c); | |
77 | - return *this; | |
78 | - } | |
79 | - rcstring::Cref& operator = (const Cref& ref) | |
80 | - { | |
81 | - return operator= ((char)ref); | |
82 | - } | |
62 | +class rcstring::Cref { | |
63 | + friend class rcstring; | |
64 | + rcstring& s; | |
65 | + int i; | |
66 | + Cref(rcstring& ss, unsigned int ii) : s(ss), i(ii){}; | |
67 | + | |
68 | + public: | |
69 | + operator char() const | |
70 | + { | |
71 | + cout << "operator char() const" << endl; | |
72 | + return s.read(i); | |
73 | + } | |
74 | + rcstring::Cref& operator=(char c) | |
75 | + { | |
76 | + cout << "void operator = (char c)" << endl; | |
77 | + s.write(i, c); | |
78 | + return *this; | |
79 | + } | |
80 | + rcstring::Cref& operator=(const Cref& ref) | |
81 | + { | |
82 | + return operator=((char)ref); | |
83 | + } | |
83 | 84 | }; |
84 | 85 | inline rcstring::rcstring() |
85 | - { | |
86 | - data = new rctext(0,""); | |
87 | - } | |
86 | +{ | |
87 | + data = new rctext(0, ""); | |
88 | +} | |
88 | 89 | |
89 | 90 | inline rcstring::rcstring(const rcstring& x) |
90 | - { | |
91 | +{ | |
91 | 92 | x.data->n++; |
92 | - data=x.data; | |
93 | - } | |
93 | + data = x.data; | |
94 | +} | |
94 | 95 | inline rcstring::~rcstring() |
95 | 96 | { |
96 | - if(--data->n==0) | |
97 | - delete data; | |
97 | + if (--data->n == 0) | |
98 | + delete data; | |
98 | 99 | } |
99 | 100 | |
100 | -rcstring& rcstring::operator=(const rcstring & x) | |
101 | +rcstring& rcstring::operator=(const rcstring& x) | |
101 | 102 | { |
102 | - x.data->n++; | |
103 | - if(--data->n == 0) | |
104 | - delete data; | |
105 | - data=x.data; | |
106 | - return *this; | |
103 | + x.data->n++; | |
104 | + if (--data->n == 0) | |
105 | + delete data; | |
106 | + data = x.data; | |
107 | + return *this; | |
107 | 108 | } |
108 | 109 | |
109 | 110 | rcstring::rcstring(const char* s) |
110 | 111 | { |
111 | - data=new rctext(strlen(s),s); | |
112 | + data = new rctext(strlen(s), s); | |
112 | 113 | } |
113 | 114 | |
114 | -ostream& operator << (ostream& o, const rcstring& s) | |
115 | +ostream& operator<<(ostream& o, const rcstring& s) | |
115 | 116 | { |
116 | - return o<<s.data->s; | |
117 | + return o << s.data->s; | |
117 | 118 | } |
118 | 119 | |
119 | -rcstring& rcstring::operator+=(const rcstring & s) | |
120 | +rcstring& rcstring::operator+=(const rcstring& s) | |
120 | 121 | { |
121 | -unsigned int newsize=data->size+s.data->size; | |
122 | -rctext *newdata=new rctext(newsize,data->s); | |
123 | -strcat(newdata->s,s.data->s); | |
124 | -if(--data->n==0) | |
125 | - delete data; | |
126 | -data = newdata; | |
127 | -return *this; | |
122 | + unsigned int newsize = data->size + s.data->size; | |
123 | + rctext* newdata = new rctext(newsize, data->s); | |
124 | + strcat(newdata->s, s.data->s); | |
125 | + if (--data->n == 0) | |
126 | + delete data; | |
127 | + data = newdata; | |
128 | + return *this; | |
128 | 129 | } |
129 | 130 | |
130 | -rcstring rcstring::operator+(const rcstring & s) const | |
131 | +rcstring rcstring::operator+(const rcstring& s) const | |
131 | 132 | { |
132 | - return rcstring(*this)+=s; | |
133 | + return rcstring(*this) += s; | |
133 | 134 | } |
134 | 135 | |
135 | -inline void rcstring::check (unsigned int i) const | |
136 | +inline void rcstring::check(unsigned int i) const | |
136 | 137 | { |
137 | -if(data->size<=i) | |
138 | - throw Range(); | |
138 | + if (data->size <= i) | |
139 | + throw Range(); | |
139 | 140 | } |
140 | 141 | inline char rcstring::read(unsigned int i) const |
141 | 142 | { |
142 | - return data->s[i]; | |
143 | + return data->s[i]; | |
143 | 144 | } |
144 | 145 | inline void rcstring::write(unsigned int i, char c) |
145 | 146 | { |
146 | - data = data->detach(); | |
147 | - data->s[i] = c; | |
147 | + data = data->detach(); | |
148 | + data->s[i] = c; | |
148 | 149 | } |
149 | 150 | |
150 | 151 | char rcstring::operator[](unsigned int i) const |
151 | 152 | { |
152 | - cout << "char rcstring::operator[](unsigned int i) const"<<endl; | |
153 | - check(i); | |
154 | - return data->s[i]; | |
153 | + cout << "char rcstring::operator[](unsigned int i) const" << endl; | |
154 | + check(i); | |
155 | + return data->s[i]; | |
155 | 156 | } |
156 | 157 | |
157 | 158 | rcstring::Cref rcstring::operator[](unsigned int i) |
158 | 159 | { |
159 | - cout << "Cref rcstring::operator[](unsigned int i)"<<endl; | |
160 | - check(i); | |
161 | - return Cref(*this,i); | |
160 | + cout << "Cref rcstring::operator[](unsigned int i)" << endl; | |
161 | + check(i); | |
162 | + return Cref(*this, i); | |
162 | 163 | } |
163 | 164 | |
164 | - | |
165 | 165 | #endif /* __RCSTRING_H__ */ | ... | ... |
examples04/06-threads/rcstring.h
1 | 1 | #ifndef __RCSTRING_H__ |
2 | 2 | #define __RCSTRING_H__ |
3 | -#include <string.h> | |
4 | -#include <stdio.h> | |
5 | -#include <malloc.h> | |
6 | 3 | #include <iostream> |
4 | +#include <malloc.h> | |
5 | +#include <stdio.h> | |
6 | +#include <string.h> | |
7 | 7 | using namespace std; |
8 | 8 | |
9 | -class rcstring{ | |
10 | - struct rctext; | |
11 | - rctext* data; | |
12 | -public: | |
13 | -class Range{}; | |
14 | -class Cref; | |
15 | -rcstring(); | |
16 | -rcstring(const char*); | |
17 | -rcstring(const rcstring&); | |
18 | -~rcstring(); | |
19 | -rcstring& operator=(const rcstring&); | |
20 | -rcstring& operator+=(const rcstring &); | |
21 | -rcstring operator+(const rcstring &) const; | |
22 | -friend ostream& operator<<(ostream&, const rcstring&); | |
23 | -void check (unsigned int i) const; | |
24 | -char read(unsigned int i) const; | |
25 | -void write(unsigned int i, char c); | |
26 | -char operator[](unsigned int i) const; | |
27 | -Cref operator[](unsigned int i); | |
28 | -unsigned int getRefCount(); | |
9 | +class rcstring { | |
10 | + struct rctext; | |
11 | + rctext* data; | |
12 | + | |
13 | + public: | |
14 | + class Range {}; | |
15 | + class Cref; | |
16 | + rcstring(); | |
17 | + rcstring(const char*); | |
18 | + rcstring(const rcstring&); | |
19 | + ~rcstring(); | |
20 | + rcstring& operator=(const rcstring&); | |
21 | + rcstring& operator+=(const rcstring&); | |
22 | + rcstring operator+(const rcstring&) const; | |
23 | + friend ostream& operator<<(ostream&, const rcstring&); | |
24 | + void check(unsigned int i) const; | |
25 | + char read(unsigned int i) const; | |
26 | + void write(unsigned int i, char c); | |
27 | + char operator[](unsigned int i) const; | |
28 | + Cref operator[](unsigned int i); | |
29 | + unsigned int getRefCount(); | |
29 | 30 | }; |
30 | 31 | |
31 | -struct rcstring::rctext | |
32 | -{ | |
33 | - char* s; | |
34 | - unsigned int size; | |
35 | - unsigned int n; | |
36 | - | |
37 | - rctext(unsigned int nsize, const char* p) | |
38 | - { | |
39 | - n=1; | |
40 | - size=nsize; | |
41 | - s=new char[size+1]; | |
42 | - strncpy(s,p,size); | |
43 | - s[size]='\0'; | |
44 | - }; | |
45 | - ~rctext() | |
46 | - { | |
47 | - delete [] s; | |
48 | - }; | |
49 | - rctext* detach() | |
50 | - { | |
51 | - if(n==1) | |
52 | - return this; | |
53 | - rctext* t=new rctext(size, s); | |
54 | - n--; | |
55 | - return t; | |
56 | - }; | |
57 | -private: | |
58 | - rctext(const rctext&); | |
59 | - rctext& operator=(const rctext&); | |
32 | +struct rcstring::rctext { | |
33 | + char* s; | |
34 | + unsigned int size; | |
35 | + unsigned int n; | |
36 | + | |
37 | + rctext(unsigned int nsize, const char* p) | |
38 | + { | |
39 | + n = 1; | |
40 | + size = nsize; | |
41 | + s = new char[size + 1]; | |
42 | + strncpy(s, p, size); | |
43 | + s[size] = '\0'; | |
44 | + }; | |
45 | + ~rctext() | |
46 | + { | |
47 | + delete[] s; | |
48 | + }; | |
49 | + rctext* detach() | |
50 | + { | |
51 | + if (n == 1) | |
52 | + return this; | |
53 | + rctext* t = new rctext(size, s); | |
54 | + n--; | |
55 | + return t; | |
56 | + }; | |
57 | + | |
58 | + private: | |
59 | + rctext(const rctext&); | |
60 | + rctext& operator=(const rctext&); | |
60 | 61 | }; |
61 | 62 | |
62 | -class rcstring::Cref | |
63 | -{ | |
64 | - friend class rcstring; | |
65 | - rcstring& s; | |
66 | - int i; | |
67 | - Cref (rcstring& ss, unsigned int ii): s(ss), i(ii) {}; | |
68 | -public: | |
69 | - operator char() const | |
70 | - { | |
71 | - cout << "operator char() const"<<endl; | |
72 | - return s.read(i); | |
73 | - } | |
74 | - rcstring::Cref& operator = (char c) | |
75 | - { | |
76 | - cout << "void operator = (char c)"<<endl; | |
77 | - s.write(i,c); | |
78 | - return *this; | |
79 | - }; | |
80 | - rcstring::Cref& operator = (const Cref& ref) | |
81 | - { | |
82 | - return operator= ((char)ref); | |
83 | - }; | |
63 | +class rcstring::Cref { | |
64 | + friend class rcstring; | |
65 | + rcstring& s; | |
66 | + int i; | |
67 | + Cref(rcstring& ss, unsigned int ii) : s(ss), i(ii){}; | |
68 | + | |
69 | + public: | |
70 | + operator char() const | |
71 | + { | |
72 | + cout << "operator char() const" << endl; | |
73 | + return s.read(i); | |
74 | + } | |
75 | + rcstring::Cref& operator=(char c) | |
76 | + { | |
77 | + cout << "void operator = (char c)" << endl; | |
78 | + s.write(i, c); | |
79 | + return *this; | |
80 | + }; | |
81 | + rcstring::Cref& operator=(const Cref& ref) | |
82 | + { | |
83 | + return operator=((char)ref); | |
84 | + }; | |
84 | 85 | }; |
85 | 86 | |
86 | 87 | inline rcstring::rcstring() |
87 | - { | |
88 | - data = new rctext(0,""); | |
89 | - } | |
88 | +{ | |
89 | + data = new rctext(0, ""); | |
90 | +} | |
90 | 91 | |
91 | 92 | inline rcstring::rcstring(const rcstring& x) |
92 | - { | |
93 | +{ | |
93 | 94 | x.data->n++; |
94 | - data=x.data; | |
95 | - } | |
95 | + data = x.data; | |
96 | +} | |
96 | 97 | inline rcstring::~rcstring() |
97 | 98 | { |
98 | - if(--data->n==0) | |
99 | - delete data; | |
99 | + if (--data->n == 0) | |
100 | + delete data; | |
100 | 101 | } |
101 | 102 | |
102 | -rcstring& rcstring::operator=(const rcstring & x) | |
103 | +rcstring& rcstring::operator=(const rcstring& x) | |
103 | 104 | { |
104 | - x.data->n++; | |
105 | - if(--data->n == 0) | |
106 | - delete data; | |
107 | - data=x.data; | |
108 | - return *this; | |
105 | + x.data->n++; | |
106 | + if (--data->n == 0) | |
107 | + delete data; | |
108 | + data = x.data; | |
109 | + return *this; | |
109 | 110 | } |
110 | 111 | |
111 | 112 | rcstring::rcstring(const char* s) |
112 | 113 | { |
113 | - data=new rctext(strlen(s),s); | |
114 | + data = new rctext(strlen(s), s); | |
114 | 115 | } |
115 | 116 | |
116 | -ostream& operator << (ostream& o, const rcstring& s) | |
117 | +ostream& operator<<(ostream& o, const rcstring& s) | |
117 | 118 | { |
118 | - return o<<s.data->s; | |
119 | + return o << s.data->s; | |
119 | 120 | } |
120 | 121 | |
121 | -rcstring& rcstring::operator+=(const rcstring & s) | |
122 | +rcstring& rcstring::operator+=(const rcstring& s) | |
122 | 123 | { |
123 | -int newsize=data->size+s.data->size; | |
124 | -rctext *newdata=new rctext(newsize,data->s); | |
125 | -strcat(newdata->s,s.data->s); | |
126 | -if(--data->n==0) | |
127 | - delete data; | |
128 | -data = newdata; | |
129 | -return *this; | |
124 | + int newsize = data->size + s.data->size; | |
125 | + rctext* newdata = new rctext(newsize, data->s); | |
126 | + strcat(newdata->s, s.data->s); | |
127 | + if (--data->n == 0) | |
128 | + delete data; | |
129 | + data = newdata; | |
130 | + return *this; | |
130 | 131 | } |
131 | 132 | |
132 | -rcstring rcstring::operator+(const rcstring & s) const | |
133 | +rcstring rcstring::operator+(const rcstring& s) const | |
133 | 134 | { |
134 | - return rcstring(*this)+=s; | |
135 | + return rcstring(*this) += s; | |
135 | 136 | } |
136 | 137 | |
137 | -inline void rcstring::check (unsigned int i) const | |
138 | +inline void rcstring::check(unsigned int i) const | |
138 | 139 | { |
139 | -if(data->size<=i) | |
140 | - throw Range(); | |
140 | + if (data->size <= i) | |
141 | + throw Range(); | |
141 | 142 | } |
142 | 143 | inline char rcstring::read(unsigned int i) const |
143 | 144 | { |
144 | - return data->s[i]; | |
145 | + return data->s[i]; | |
145 | 146 | } |
146 | 147 | inline void rcstring::write(unsigned int i, char c) |
147 | 148 | { |
148 | - data = data->detach(); | |
149 | - data->s[i] = c; | |
149 | + data = data->detach(); | |
150 | + data->s[i] = c; | |
150 | 151 | } |
151 | 152 | |
152 | 153 | char rcstring::operator[](unsigned int i) const |
153 | 154 | { |
154 | - cout << "char rcstring::operator[](unsigned int i) const"<<endl; | |
155 | - check(i); | |
156 | - return data->s[i]; | |
155 | + cout << "char rcstring::operator[](unsigned int i) const" << endl; | |
156 | + check(i); | |
157 | + return data->s[i]; | |
157 | 158 | } |
158 | 159 | |
159 | 160 | rcstring::Cref rcstring::operator[](unsigned int i) |
160 | 161 | { |
161 | - cout << "Cref rcstring::operator[](unsigned int i)"<<endl; | |
162 | - check(i); | |
163 | - return Cref(*this,i); | |
162 | + cout << "Cref rcstring::operator[](unsigned int i)" << endl; | |
163 | + check(i); | |
164 | + return Cref(*this, i); | |
164 | 165 | } |
165 | 166 | |
166 | - | |
167 | 167 | unsigned int rcstring::getRefCount() |
168 | 168 | { |
169 | - return data->n; | |
169 | + return data->n; | |
170 | 170 | } |
171 | 171 | |
172 | - | |
173 | 172 | #endif /* __RCSTRING_H__ */ | ... | ... |
examples04/06-threads/threads1.cpp
1 | -#include <stdio.h> | |
2 | 1 | #include <pthread.h> |
2 | +#include <stdio.h> | |
3 | 3 | |
4 | - | |
5 | -void * | |
6 | -thread1 (void *p) | |
4 | +void* thread1(void* p) | |
7 | 5 | { |
8 | - int *pp = (int *) p; | |
9 | - printf ("Parameter of thread1: %d\n", *pp); | |
10 | - *pp = 1; | |
11 | - for (unsigned int i = 0; i < 100000; i++) | |
12 | - printf ("Hello from thread 1\n"); | |
13 | - pthread_exit (p); | |
6 | + int* pp = (int*)p; | |
7 | + printf("Parameter of thread1: %d\n", *pp); | |
8 | + *pp = 1; | |
9 | + for (unsigned int i = 0; i < 100000; i++) | |
10 | + printf("Hello from thread 1\n"); | |
11 | + pthread_exit(p); | |
14 | 12 | } |
15 | 13 | |
16 | -void * | |
17 | -thread2 (void *p) | |
14 | +void* thread2(void* p) | |
18 | 15 | { |
19 | - int *pp = (int *) p; | |
20 | - printf ("Parameter of thread2: %d\n", *pp); | |
21 | - *pp = 2; | |
22 | - for (unsigned int i = 0; i < 100000; i++) | |
23 | - printf ("Hello from thread 2\n"); | |
24 | - pthread_exit (p); | |
16 | + int* pp = (int*)p; | |
17 | + printf("Parameter of thread2: %d\n", *pp); | |
18 | + *pp = 2; | |
19 | + for (unsigned int i = 0; i < 100000; i++) | |
20 | + printf("Hello from thread 2\n"); | |
21 | + pthread_exit(p); | |
25 | 22 | } |
26 | 23 | |
27 | - | |
28 | -int | |
29 | -main () | |
24 | +int main() | |
30 | 25 | { |
31 | - pthread_t t1; | |
32 | - pthread_t t2; | |
33 | - int *retval1; | |
34 | - int *retval2; | |
35 | - int r1 = 10, r2 = 11; | |
36 | - | |
37 | - | |
38 | - pthread_create (&t1, NULL, thread1, &r1); | |
39 | - pthread_create (&t2, NULL, thread2, &r2); | |
26 | + pthread_t t1; | |
27 | + pthread_t t2; | |
28 | + int* retval1; | |
29 | + int* retval2; | |
30 | + int r1 = 10, r2 = 11; | |
40 | 31 | |
41 | - pthread_join (t1, (void **) &retval1); | |
42 | - pthread_join (t2, (void **) &retval2); | |
32 | + pthread_create(&t1, NULL, thread1, &r1); | |
33 | + pthread_create(&t2, NULL, thread2, &r2); | |
43 | 34 | |
44 | - printf ("%d\n", *retval1); | |
45 | - printf ("%d\n", *retval2); | |
35 | + pthread_join(t1, (void**)&retval1); | |
36 | + pthread_join(t2, (void**)&retval2); | |
46 | 37 | |
38 | + printf("%d\n", *retval1); | |
39 | + printf("%d\n", *retval2); | |
47 | 40 | } | ... | ... |