Số lượng thành viên tham gia: 20
Link slide buổi học
Link record
Link bài tập lớp buổi 3 CPP
Link btvn buổi 3 CPP
Xử lý số học:
- Cách ép kiểu:
(<tên kiểu dữ liệu>) <tên biến> Ví dụ: double x=9.75; cout<<(int)x; //lúc này x sau khi ép kiểu thì x sẽ bằng 9;
- Một số hàm làm tròn cần nhớ:
ceil() - tự động làm tròn lên round() - làm tròn theo mốc 0.5 floor() - làm tròn xuống
String (xâu):
- Định nghĩa: là chuỗi ký tự (string) là tập hợp các ký tự được đặt trong dấu ngoặc kép.
- Khai báo:
string <tên xâu>;
Cách nhập xuất:
- In xâu:
cout<< <tên xâu>;
- Nhập xâu (các kí tự liền nhau và không có dấu cách):
cin>> <tên xâu>;
- Nhập xâu gồm các ký tự trong 1 dòng:
getline(cin, <tên xâu >);
- Nhập xâu gồm các ký tự trong nhiều dòng:
getline(cin, <tên xâu>, <ký tự kết thúc>);
- Các toán tử, method trong String:
- Cú pháp gán xâu S1 bằng xâu S2:
S1=S2;
- Cú pháp ghép xâu S2 và cuối xâu S1:
S1+=S2; hoặc S1=S1+S2;
- Cú pháp ghép xâu S2 vào đầu xâu S1:
S1=S2+S1;
- So sánh 2 xâu s1 và s2:
bool kt = (s1==s2); //kt == true nếu s1 = s2 (tất cả các kí tự s1 bằng tất cả các kí tự s2), ngược lại thì kt == false bool kt = (s1>s2); //kt==true nếu s1 > s2 ngược lại thì kt == false bool kt = (s1<=s2); //kt==true nếu s1<=s2 ngược lại thì kt == false
- Cú pháp gán xâu S1 bằng xâu S2:
Một số hàm cần nhớ:
- Trả về số lượng phần tử trong xâu: strlen(
) hoặc .length() - Đảo ngược xâu từ vị trí i đến vị trí j: reverse(
.begin()+i , .end() + j); - Chuyển kí tự hoa thành thường: tolower(
); - Chuyển kí tự thường thành hoa: toupper(
);
Function:
Định nghĩa: là một hàm con thực hiện một nhiệm vụ nào đó và có thể tái sử dụng nhiều lần.
Ưu điểm:
- Dễ bảo trì: Để thay đổi thuật toán, chỉ cần thay đổi hàm (so với thay đổi code trên toàn chương trình).
- Có thể sử dụng lại: Cho phép người khác sử dụng lại hàm bạn đã viết.
- Dễ đọc: sqrt (5) rõ ràng và dễ hiểu hơn việc viết một thuật toán để tính căn bậc hai.
Code bài tập trên lớp:
Ghép xâu
Cho 3 xâu s1,s2 và s3. Cho dãy số gồm 3 số 1 ,2 và 3. Bạn hãy ghép 3 xâu theo thứ tự dãy số đã cho sau đó đảo ngược chúng và in ra.
Input Format:
3 dòng đầu tiên là 3 xâu s1, s2 và s3. Dòng thứ 4 là dãy số gồm 3 số.
Constraints
Các xâu không quá 100 kí tự
Output Format
In kết quả theo yêu cầu đề bài.
Sample Input 0:
xau_s1
xau_s2
xau_s3
2 3 1
Sample Output 0:
1s_uax3s_uax2s_uax
Explanation 0:
Xâu s1 là "xau_s1", xâu s2 là "xau_s2", xâu s3 là "xau_s3". Thứ tự dãy là 2 3 1, thì t ghép 3 xâu trên theo thứ tự trên được "xau_s2xau_s3xau_s1". Sau đó đảo ngược lại thành "1s_uax3s_uax2s_uax". Đây là kết quả của bài.
Solution
// from kh280174
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
/* Enter your code here. Read input from STDIN. Print output to STDOUT */
string s[4];
int x;
cin >> s[1]>>s[2]>>s[3] ;
for(int i = 1; i<4 ;i++){
cin >> x;
s[0] += s[x] ;
}
reverse(s[0].begin(), s[0].end());
cout << s[0];
return 0;
}
Số chia hết cho 4
Cho n test . Mỗi test là một số x (0 < x < 10^100). Kiểm tra xem x có phải là số chia hết cho 4 không?
Input Format:
Dòng đầu tiên là số n. n dòng tiếp theo, mỗi dòng là một số x.
Constraints
0 < n < 100. 0 < x < 10^100
Output Format
In ra n dòng. Mỗi dòng in ra “true” nếu số x chia hết cho 4, ngược lại in ra “false”.
Sample Input 0
10
153535031
635171885
278445144
644698753
786800418
455212671
983977229
38479823
980297149
876644498
Sample Output 0:
false
false
true
false
false
false
false
false
false
false
Solution
// from danghien719
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
void ChiaHetChoBon (string st) {
char cNumber[3];
cNumber[0] = st[st.size() - 2];
cNumber[1] = st[st.size() - 1];
int nNumber = atoi(cNumber);
if (nNumber % 4 == 0) cout << "true\n";
else cout << "false\n";
}
int main() {
/* Enter your code here. Read input from STDIN. Print output to STDOUT */
int N;
cin >> N;
string st[N];
for (int i=0; i<N; i++) cin >> st[i];
//
for (int i=0; i<N; i++) ChiaHetChoBon(st[i]);
return 0;
}
Christmas tree
Cho tên 1 người gồm: Họ, tên đệm và tên. Họ , tên đệm và tên đầu vào luôn là 3 từ riêng biệt ngăn cách bởi dấu cách. Hãy chuẩn hóa tên: Chỉ có chữ đầu tiên trong từ viết hoa, còn lại viết thường. Các từ ngăn cách nhau bởi 1 dấu cách. Đổi vị trí họ, tên đệm và tên thành họ, tên và tên đệm.
Input Format:
1 dòng duy nhất gồm 3 sâu lần lượt là: họ, tên đệm và tên.
Constraints
tổng số lượng kí tự trong 3 xâu không quá 100
Output Format
In ra theo thứ tự họ, tên và tên đệm đã được chuẩn hóa.
Sample Input 0
HO TEN_DEM Te.N.
Sample Output 0:
Ho Ten Tendem
Solution
// from thanhv31u
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
void xoaKiTu(string &a){
int len = a.length();
string temp = "";
for(int i =0; i < len; i++){
if ((a[i] >= 'a' && a[i] <= 'z') || (a[i] >= 'A' && a[i] <= 'Z')) {
temp = temp + a[i];
}
}
a = temp;}
void vietHoa(string &b){
int len = b.length();
b[0] = toupper(b[0]) ;
}
int main() {
string ten[4];
for(int i =0; i <3; i++){
string tmp;
cin>>tmp;
xoaKiTu(tmp);
transform(tmp.begin(), tmp.end(), tmp.begin(), ::tolower);
ten[i] = tmp;
}
for(int i=0; i<3; i++){
vietHoa(ten[i]);
}
cout<<ten[0]<<" "<<ten[2]<<" "<<ten[1];
}
Đường Link hữu ích:
https://www.cplusplus.com/reference/string/string/
https://github.com/arduino/ArduinoCore-API/blob/master/api/String.cpp
https://itmobrain.github.io/function-cpp
https://www.javatpoint.com/cpp-strings