Tổng kết buổi 2

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;
}

Массивы в C++
A Simple Guide to For, While, and Do While Loops in C++
Stop Using i++ in Your Loops