Skip to content

Commit 0f1e4aa

Browse files
Add files via upload
1 parent d4531d9 commit 0f1e4aa

File tree

4 files changed

+188
-0
lines changed

4 files changed

+188
-0
lines changed

bt09/A1.cpp

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
#include <iostream>
2+
#include <cstring>
3+
using namespace std;
4+
5+
char* concat(const char* a, const char* b)
6+
{
7+
int n = sizeof(a) + sizeof(b);
8+
char* resu = new char[n];
9+
strcpy(resu, a);
10+
strcat(resu, b);
11+
return resu;
12+
}
13+
int main()
14+
{
15+
char a[]="Hello";
16+
char b[]="World";
17+
cout << sizeof(a) << sizeof(b) << endl;
18+
cout<<concat(a,b);
19+
}

bt09/A2.cpp

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
#include <iostream>
2+
#include <cstring>
3+
using namespace std;
4+
5+
int main()
6+
{
7+
int* p = new int;
8+
int* p2 = p;
9+
*p = 10;
10+
delete p;
11+
*p2 = 100;
12+
cout << *p2;
13+
delete p2;
14+
return 0;
15+
}
16+
//lỗi do delete p quá sớm
17+
//vùng nhớ p bị xóa nên khi dùng p2 không còn vùng nhớ
18+
//giải phóng vùng nhớ đã giải phóng

bt09/A3.cpp

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
#include <iostream>
2+
#include <cstring>
3+
using namespace std;
4+
5+
int main()
6+
{
7+
char* a = new char[10];
8+
char* c = a + 3;
9+
for (int i = 0; i < 9; i++) a[i] = 'a';
10+
a[9] = '\0';
11+
cerr <<"a: " << "-" << a << "-" << endl;
12+
cerr <<"c: " << "-" << c << "-" << endl;
13+
delete c;
14+
cerr << "a after deleting c:" << "-" << a << "-" << endl;
15+
}
16+
//delete phải giải phóng vùng nhớ đã được khai báo
17+
//vùng nhớ của c chưa được khai báo nên không xác định được

bt09/C1.cpp

+134
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
#include <iostream>
2+
3+
using namespace std;
4+
5+
6+
int length(const char a[])
7+
{
8+
int count = 0;
9+
for (int i = 0; *(a + i) != '\0'; i++)
10+
{
11+
count++;
12+
}
13+
return count;
14+
}
15+
16+
17+
18+
string rev(const char a[])
19+
{
20+
string b;
21+
for (int i = length(a) - 1; i >= 0 ; i--)
22+
{
23+
b += a[i];
24+
}
25+
return b;
26+
}
27+
28+
29+
string delete_char(const char a[], char c)
30+
{
31+
string b;
32+
for (int i = 0; i < length(a); i++)
33+
{
34+
if (a[i] != c)
35+
b += a[i];
36+
}
37+
return b;
38+
}
39+
40+
41+
string pad_right(const char a[], int n)
42+
{
43+
if (length(a) >= n)
44+
return a;
45+
else
46+
{
47+
int x = n - length(a);
48+
string b = a;
49+
for (int i = 0; i < x; i++)
50+
{
51+
b = b + ' ';
52+
}
53+
return b;
54+
}
55+
}
56+
57+
58+
string pad_left(const char a[], int n)
59+
{
60+
if (length(a) >= n)
61+
return a;
62+
else
63+
{
64+
int x = n - length(a);
65+
string b = a;
66+
for (int i = 0; i < x; i++)
67+
{
68+
b = ' ' + b;
69+
}
70+
return b;
71+
}
72+
}
73+
74+
75+
string truncate(const char a[], int n)
76+
{
77+
string b = a;
78+
if (length(a) >= n)
79+
{
80+
for (int i = n; i < length(a); i++)
81+
{
82+
b[i] = '\0';
83+
}
84+
return b;
85+
}
86+
else
87+
return b;
88+
}
89+
90+
91+
string trim_left(const char a[])
92+
{
93+
string b = a;
94+
for (int i = 0; i < length(a); i++)
95+
{
96+
if (b[i] == ' ')
97+
{
98+
b[i] = '\0';
99+
}
100+
if (b[i + 1] != '\0')
101+
break;
102+
}
103+
return b;
104+
}
105+
106+
107+
string trim_right(const char a[])
108+
{
109+
string b = a;
110+
for (int i = length(a) - 1; i >= 0; i--)
111+
{
112+
if (b[i] == ' ')
113+
{
114+
b[i] = '\0';
115+
}
116+
if (b[i - 1] != '\0')
117+
break;
118+
}
119+
return b;
120+
}
121+
int main()
122+
{
123+
char a[100];
124+
cin >> a;
125+
cout << length(a);
126+
cout << rev(a) << endl;
127+
cout << delete_char(a, 'b') << endl;
128+
cout << pad_right(a, 20) << "|" << endl;
129+
cout << pad_left(a, 20) << endl;
130+
cout << truncate(a, 4) << endl;
131+
cout << trim_left(a) << endl;
132+
cout << trim_right(a) << endl;
133+
return 0;
134+
}

0 commit comments

Comments
 (0)