Số lượng thành viên tham gia: 26
Link slide buổi học
Link record
Link bài tập lớp buổi 2 CPP
Link btvn buổi 2 CPP
Nội dung chia sẻ:
- Giới thiệu về mảng
- Giới thiệu về các vòng lặp:
- Vòng lặp for.
- Vòng lặp while do.
- Vòng lặp do while.
- Một số lệnh thường dùng trong vòng lặp:
- break
- continue
Mảng
- Định nghĩa: Mảng là tập hợp các phần tử cùng kiểu được lưu trữ tuần tự trong bộ nhớ.
- Cách khai báo: Type arrayName[dimension]; - Ví dụ: int a[5]; char a[26];
- Truy cập vào phần tử thứ i của mảng: arrayName[i]
- Lưu ý:
- Chỉ số mảng bắt đầu từ 0, 1, 2, 3, 4, … , n-1
- Nếu gọi phần tử không nằm trong mảng thì sẽ nhận về giá trị bất kì(Buffer overflow).
- Mảng hai chiều: type arrayName[dimesion][dimesion];
Vòng lặp For
Cấu trúc:
for(initialization; condition; incrementation)
{
Statement 1;
Statement 2;
}
Ví dụ:
for(int i=1;i<=n;i++)
{
res+=1;
cout<<res<<” “;
}
Giải thích ví dụ:
Đầu tiên t khai báo biến điểm và gán giá trị: int i = 1;
Điều kiện để vòng for chạy là i<=5; tức là i còn nhỏ hơn hoặc bằng 5 thì còn chạy.
Tăng i sau mỗi lần thực hiện các câu lệnh ở trong {}.
Vòng lặp while do
Cấu trúc:
while (condition)
{
Statement(s);
Updation;
}
Ví dụ:
cin>>x; sl=0;
while (x>0)
{
x/=10;
sl++;
}
Giải thích ví dụ:
Đầu tiên nhập x và gán sl=0;
Vòng while sẽ xét điều kiện trước rồi mới thực hiện các câu lệnh trong {},
tức là x > 0 tức là x còn lớn hơn 0 thì còn thực hiện các câu lệnh trong ngoặc.
Vòng lặp do while
Cấu trúc:
do
{
} while (condition)
Ví dụ:
n=-5;
do
{
n++;
}while(n>0)
Giải thích ví dụ:
Đầu tiên gán n=-5
Vòng do while sẽ thực hiện các câu lệnh trong {} trước rồi mới xét điều kiện
Lệnh thường dùng:
- Break; - thoái khỏi vòng lặp.
- Continue; bỏ qua các câu lệnh phía dưới trong vòng lặp và nhảy tới lần lặp tiếp theo.
Bảng xếp hạng Hackerrank:
Code bài tập trên lớp:
Số nguyên tố
Định nghĩa: số nguyên tố là số lớn hơn 1 và chỉ chia hết cho 1 và chính nó. Hãy viết một chương trình kiểm tra xem một số nhập từ bàn phím có phải số nguyên tố không.
Input Format:
một số tự nhiên N
Constraints
Subtask 1 (80% testcases): N < 100000000
Subtask 2 (20% testcases): N < 10000000000000000
Output Format
In ra YES nếu đầu vào là số nguyên tố, NO nếu đầu vào không phải là số nguyên tố.
Sample Input 0:
11
Sample Output 0:
YES
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 */
long N, b=0;
cin >> N;
if(N==2){cout<<"YES"; return 0;};
if(N<2){cout<<"NO"; return 0;};
if(N>2){
for( int i=2; i<=sqrt(N); i++){
if(N%i==0){b=1;};
}};
if(b==1){cout<<"NO";}
else cout<<"YES";
return 0;
return 0;
}
Vẽ hình chữ nhật
Vẽ một hình chữ nhật nằm thẳng đứng (độ cao sẽ là chiều dài của hình chữ nhật), từ hai số N, M đại diện cho kích thước của hình đấy.
Input Format:
N, M
Constraints
1 < N, M < 1000
Output Format
hình chữ nhật vẽ bằng ký tự “*“
Sample Input 0
5 7
Sample Output 0:
*****
*****
*****
*****
*****
*****
*****
Solution
// from tranduybthv
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int a,b;
cin >>a>>b;
if(a>b){
int temp = a;
a=b;
b=temp;
}
for(int i =0; i<b;i++ ){
for(int j =0; j<a;j++ ){
cout <<"*";
}
cout <<endl;
}
return 0;
}
Christmas tree
Vẽ một cây thông noel, có độ cao của phần lá là N, và phần gốc có độ cao cùng với độ rộng là số lẻ gần với N/4 nhất (nếu tồn tại hai số lẻ cùng khoảng cách đến N/4 thì chọn số lớn hơn);
Input Format:
Một số nguyên N là độ cao của phần lá.
Constraints
1 < N < 1000
Output Format
Một cây thông được vẽ bằng những dấu *
Sample Input 0
12
Sample Output 0:
*
***
*****
*******
*********
***********
*************
***************
*****************
*******************
*********************
***********************
***
***
***
Sample Input 0
17
Sample Output 0:
*
***
*****
*******
*********
***********
*************
***************
*****************
*******************
*********************
***********************
*************************
***************************
*****************************
*******************************
*********************************
*****
*****
*****
*****
*****
Solution
// from nguyenkhanhly111
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int n;
cin>>n;
for(int i=0; i<n; i++)
{
for(int j=1; j<n-i; j++) {cout<<" ";}
for(int j=0; j<i*2+1; j++) {cout<<"*";}
for(int j=1; j<n-i; j++) {cout<<" ";}
cout<<"\n";
}
int than_cay = int(n/4) + int(int(n/4)%2 == 0);
for(int i=0; i<than_cay; i++)
{
for(int j=0; j<n-int(than_cay/2)-1; j++) {cout<<" ";}
for(int j=0; j<than_cay; j++) {cout<<"*";}
cout<<"\n";
}
return 0;
}
Đường Link hữu ích:
Массивы в C++
A Simple Guide to For, While, and Do While Loops in C++
Stop Using i++ in Your Loops