Tuesday, September 19, 2017

Một số đề tài thuyết trình THDC 20171 sáng thứ 3

Bài 1. Máy tính lượng tử
  • Khác gì so với máy tính nhị phân
  • công nghệ nghiên cứu tới hiện tại
  • phạm vi áp dụng
  • hướng phát triển

Bài 2. Công nghệ in 3D
  • Khái niệm
  • Các công nghệ in hiện có
  • áp dụng 
  • những vẫn đề giới hạn về công nghệ
  • hướng phát triển

Bài 3. Ô tô tự lái
  • Công nghệ hiện tại, các hãng nào đang áp dụng
  • Phạm vi áp dụng
  • Các hạn chế 
  • Tương lai phát triển

Bài 4. Hệ thống ngôi nhà thông minh
  • Công nghệ hiện tại
  • Mô hình áp dụng
  • Hướng phát triển

Tuesday, March 14, 2017

Bài tập CTDLGT cho SIE 20162

Bài tập cho SIE CTDLGT 20162

Đầu vào:
1 tập văn bản tiếng việt (có thể lấy từ các đoạn chat hoặc nhắn tin cá nhân)
1 từ điển tiếng việt ngắn

Yêu cầu
Lọc và thống kê các 1-gram, 2-gram từ tập văn bản tiếng Việt
(1 gram là 1 âm tiết, 2 gram là 2 âm tiết)

VD câu "BK Hà Nội"
thì 1-gram là BK, Hà, Nội
2-gram là BK Hà, Hà Nội

  • Loại các gram có tần số xuất hiện <=3 mà không chứa toàn chữ cái viết hoa
  • Thống kê các gram đó và sắp xếp theo thứ tự giảm đần về tần số
Xây dựng gợi ý theo cấp độ từ
  •  Khi người dùng gõ vào xong 1 từ (nhập từ + dấu cách trống) thì sẽ duyệt các 1 giảm và 2 Gram có, và cả các từ trong từ điển. Trường hợp mà từ đó chưa có trong từ điển hoặc danh sách thì gợi ý các từ có thể tạo ra được hoặc từ chính xác (vì có thể người đó gõ sai).
VD. Người dùng gõ vào Bn thì đưa ra gợi ý là: BK, BK Hà

Xây dựng gợi ý theo cấp độ chữ cái
  • Khi người dùng nhập vào >=2 chữ cái thì gợi ý tiếp các chữ cái và từ còn lại.
VD. Người dùng nhập vào Hà thì gợi ý là Hà Nội

Thursday, March 9, 2017

Bài tập CTDLGT Giữa kỳ cho DH 20162 (học chiều thứ 5)

Bài 1. Cho 1 dãy gồm n số dương, hay xây dựng hàm chia day số này thành 2 nửa sao cho chênh lệch tổng giá trị các phần tử của 2 nửa là nhỏ nhất trong 2 trường hợp
a. Không được thay đổi vị trí các phần tử
b. Được thay đổi vị trí các phần tử

Bài 2. Cho 1 mảng có các phần tử bị trùng. Hãy xây dựng thuật toán sắp xếp mảng sao cho các phần tử bị trùng được đẩy về cuối dãy.

VD. 1,3,2,4,3,2,1,6 ==> 1,2,3,4,6,1,3,2

Bài 3. Cho 1 mảng gồm n số nguyên. Hãy tìm và in ra các bộ 3 có tổng bằng 0, hoặc thông báo không tồn tại bộ nào như vậy.

VD. 1,3,-2,4,-6,5,-4,2,-1
{1,3,-4}, {5,-4,1}

Thời gian thực hiện cần < O(n^3)

Bài 4. Viết hàm xóa các phần tử bị lặp trong DSLK đơn (không có thứ tự) với thời gian thực hiện O(n) mà không cần dùng thêm bộ nhớ phụ.
Không được sắp xếp danh sách !

Được khai báo thêm con trỏ và biến tạm

Bài 5. Cho danh sách liên kết đơn nối vòng, hay viết hàm trả về phần tử giữa danh sách chỉ với 1 lần duyệt

Bài 6. Viết hàm xóa phần tử hiện tại của DSLK đơn khi mà có biết 1 con trỏ tới phần tử cần xóa (không được duyệt để tìm phần tử ngay trước nó)

Bài 7. Đọc vào 1 file XML/HTML. Viết chương trình kiểm tra các thẻ Tag có hợp lệ hay không. Nếu không thì in ra vị trí thẻ bị lỗi đầu tiên.
Tag mở cần có 1 tag đóng tương ứng (bỏ qua tag <p> hoặc <br> nếu cần)

Bài 8. Xây dựng tiện ích Undo và reDo cho text editor với tính năng quay lui lại sửa đổi gần nhất dùng Stack. Nếu dùng trên console thì có thể chọn hot key Ctr-U và Ctrl-I và dùng hàm để bắt các hotkey này để xử lý.

Bài 9. Cho tập gồm n điểm trong không gian 2 chiều. Hãy xây dựng chương trình dựa trên chia để trị để tìm và trả về 2 cập điểm gần nhau nhất với thời gian <O(n^2)

Bài 10. Cho bảng gồm các ký tự và dấu cách trống được mã hóa
a : 1
b : 2
..
z : 26
' ' : 27

abc --> 123

Và 1 từ điển

Hãy xây dựng chương trình mã hóa và giải mã các từ trong 1 đoạn văn (các từ này phải có trong từ điển)

123 >> abc, aw, lc

Bài 11. Cho 1 tập các khoảng thời gian còn trống của máy
[-1,9],[1,10],[0,3],[9,10],[3,14],[2,9],[10,16]

và 1 khoảng thời gian cần sản xuất VD [2,15]

Hãy xây dựng chương trình tìm  cách bố trí số lượng máy ít nhất để có thể sản xuất, hoặc thông báo là không thể bố trí được máy

[2,15] = [-1,9], [9,10],[10,16] hoặc [1,10],[10,16]

Ở đây cách 2 dùng 2 máy sẽ được chọn

Bài 12. Cho ma trận nxn với m chướng ngại vật

0 0 0 0 0 0
0 1 0 0 1 0
0 1 1 0 0 0
1 0 0 0 0 0
0 0 1 0 0 0

Chướng ngại vật biểu diễn bằng số 1
1 robot do đường có thể đi theo các hướng
1: lên trên
2: sang phải
3: xuống dưới
4: sang trái
Nếu vào chướng ngại vật thì robot sẽ không di chuyển được

Robot bắt đầu từ ô đầu tiên bên trái (màu đỏ) và gửi về hành trình của mình là chuỗi di chuyển 2 2 2 3 2 3 2
Hãy tìm và trả về vị trí cuối cùng của robot
Như trong vd thì robot sẽ ở ô  bôi vàng


Monday, November 7, 2016

Một số câu hỏi tìm hiểu môn THDC cho các lớp SIE kỳ 20161

Yêu cầu:
  • Mỗi câu trả lời khoảng 3-5 trang
  • Yêu cầu trình bày lại ý hiểu, không copy và paste
  • Phải bảo vệ mới được công nhận
  • Mỗi câu chỉ được 1 điểm
  • Không làm nhóm
Chú ý:
  • Nếu làm slide trình bày trên lớp sẽ được cộng 5 điểm
  • Mỗi câu chỉ được tối đa 2 người trình bày, vì vậy hay đăng ký sớm nhất có thể!
  1. IoT là gì ? hãy nêu một số mô hình về IoT trên thực tế?
  2. In 3D là gì? Hiện tại đang có những công nghệ in 3D nào, nêu một số thành tựu của in 3D đã có trong 
    1. Sinh học
    2. Công nghệ
    3. Y học
    4. Vật liệu mới
  3. Xe ô tô tự lái dùng những loại cảm biến nào? Tác dụng của những cảm biến ấy làm gì?
    Hiện có những hãng nào đang làm ô tô tự lái, và đã có ứng dụng nào trong thực tế chưa?
  4. Hiện tại công nghệ chế tạo bán dẫn đạt tới kích thước nhỏ nhất là bao nhiêu nm.
    Đã có những công nghệ của hãng nào được ứng dụng vào sản xuất các chip trong thực tế?
  5. Công nghệ chip Kabi Lake của intel đang đạt tới kích thước bao nhiêu nm?
    so với thế hệ chip sky lake, thì công nghệ này có những ưu việt gì?
  6. Big Data là công nghệ về lưu trữ và xử lý dữ liệu lớn.
    Vậy dữ liệu lớn là gì?
    Hiện tại Google, Facebook, Microsoft đang sử dụng những công nghệ gì để lưu trữ và xử lý dữ liệu lớn?
    Ứng dụng trong thực tế của nó là sản phẩm nào?
  7. Hiện tại đang có những công nghệ nào trong chế tạo card màn hình. Card màn hình được sử dụng trong nhận diện và học máy có cấu hình như thế nào, và có thể xử lý được bao nhiêu hình ảnh trong 1 s? Đang được áp dụng trong sản phẩm nào?
  8. Công nghệ lưu trữ dùng ổ cứng đặc SSD mới của Samsung có gì đặc biệt, tốc độ tối đa và dung lượng tối đa mà một ổ cứng mới nhất của Samsung có thể lưu trữ là bao nhiêu? Chip nhớ này có ưu điểm gì?
  9. Công nghệ chế tạo HDD (ổ cứng dùng đĩa từ) truyền thống hiện tại đang đạt tới tốc độ và dung lượng bao nhiêu? Hãng nào đang nắm công nghệ chủ đạo trong chế tạo ổ cứng HDD?
  10. Chuẩn bluetooth 5.0 sắp tới có những ưu điểm gì hơn so với chuẩn 4.0 hiện tại? Chuẩn này hiện đang được hỗ trợ bởi những hãng công nghệ nào và trong các thiết bị mới nào? 
  11. Công nghệ mạng không dây mới Li-fi khác gì so với Wi-fi? Ưu nhược điểm và tốc độ của Li-fi như thế nào?
  12. Chuẩn kết nối mới USB Type-C có những đặc điểm gì khác so với chuẩn USB 3.0 truyền thống? Tốc độ truyền dữ liệu ra sao? Hiện đã có những sản phẩm và những hãng công nghệ nào hỗ trợ chuẩn Type C này ?
  13. Điện năng lượng mặt trời hiện đang có những công nghệ nào mới nhất? Công suất lớn nhất mà 1 cell tế bào quang điện có thể cung cấp là bao nhiêu? Để cung cấp năng lượng khoảng 5Kwh thì cần bao nhiêu cell pin năng lượng mặt trời?

Thursday, September 22, 2016

Bài tập CTDLGT giữa kỳ 20161

Cài đặt dùng Java hoặc C# hoặc C/C++


Bài 1. Cài đặt các hàm đầy đủ để mô tả cấu trúc dữ liệu mảng kích thước biến đổi

Các thao tác cần có gồm
  • Add (int value): Thêm phần tử vào cuối mảng,
  • RemoveAt(int index): xóa phần tử ở vị trí index 
  • Size(): trả về số lượng phần tử hiện có của mảng
  • Maxsize(): trả về kích thước/ số lượng phần tử tối đa mà cấu trúc có thể lưu
  • Find(int value): trả về vị trí phần tử có gía trị bằng value trong mảng nếu có, ngược lại thì trả về giá trị -1
  • Get(int index) trả về giá trị phần tử tại ví trí index trong mảng nếu có

Xây dựng thành class là tốt nhất, nếu không tổ chức thành các hàm trong C/C++ với tham số truyền vào như yêu cầu trên.

Bài 2. Cài đặt đầy đủ các hàm/ phương thức của cấu trúc danh sách liên kết đơn nối thẳng có kiểu class T

  • Thêm (đâù, giữa/cuối)
  • Xóa (đâù, giữa/cuối)
  • Tìm kiếm

Các lớp cài đặt này nên dùng Template class

Bài 3. Cài đặt các hàm mô tả cấu trúc danh sách liên kết đơn nối vòng

Bài 4. Cài đặt các hàm mô tả danh sách liên kết đôi

Bài 5. Cài đặt cấu trúc Ngăn xếp/Hàng đợi dùng mảng kích thước biến đổi

Bài 6. Cài đặt lớp biểu diễn cây nhị phân với các tính năng sau
  • Thêm nút trái
  • Thêm nút phải
  • Lấy giá trị nút trái/phải
  • Đếm số nút trên cây
  • Tìm nút lá sâu nhất/nông nhất (thời gian O(n))
  • Tìm chiều cao của cây
  • Tìm tổ tiên chung gần nhất của 2 nút bất kỳ trên cây
  • Duyệt cây theo thứ tự trước/giữa/sau
Bài 7. Cài đặt cây nhị phân để biểu diễn cây biểu thức
  • Tạo cây biểu thức từ biểu thức trung tố (biểu thức chỉ bao gồm các toán hang 1 chữ cái/chữ số và các toán tử đơn giản +,-,*,/,%,^,!,... và dấu ngoặc đơn)
  • In ra biểu thức tiền tố, trung tố, hậu tố
  • Kiểm tra biểu thức trung tố ban đầu có phải hợp lệ (dấu ngoặc hợp lệ và toán tử hợp lệ, chỉ cần check với một vài toán tử thông dụng)
Bài 8. Xây dựng thuật toán sinh ra màn chơi sodoku bằng cách thêm ngẫu nhiên n số (từ 1-9 vào một màn chơi ban đầu trắng). Thuật toán này cần cài đặt dùng Backtracking và đảm bảo là màn chơi này hợp lệ.

Bài 9. Cài đặt lớp biểu diễn cây nhị phân tìm kiếm tổng quát (có thể kế thừa từ lớp trong bài 6) hỗ trợ các thao tác
  • Kiểm tra cây nhị phân có phải là cây nhị phân tìm kiếm
  • Kiểm tra cây nhị phân tìm kiếm có phải cây cân bằng
  • Thực hiện hàm tìm kiếm và trả về nút chứa khóa (nếu tìm thấy) trên cây
  • Thực hiện hàm thêm nút/xóa nút trên cây 

Wednesday, May 4, 2016

Bài tập lớn CTDLGT

Bài 1. Đánh giá độ tương tự của các văn bản theo jacard

Độ tương tự theo jacard của 2 tập A,B được tính như sau

Cách 1. Mỗi phần tử trong tập hợp chỉ được tính 1 lần

Sim(A,B) = (#số phần tử chung của A và B) / (#Tổng số phần tử của A và B)

VD.
A = {a,b,c,f}
B = {a,e,f,g}

#số phần tử chung của A và B = {a,f}
#Tổng số phần tử của A và B = {a,b,c,e,f,g}

Sim(A,B) = 2/6 = 1/3

Cách 2. bag-similarity

A = {a, a, a, b}
B = {a, a, b, b, c}

#số phần tử chung của A và B = {a,a} và {b} (số lần xuất hiện ít nhất của phần tử chung)
#Tổng số phần tử của A và B = {a, a, a, b} và {a, a, b, b, c} (toognr số phần tử của cả 2 tập)

Sim(A,B) = 3/9 = 1/3

Hãy tính và đưa ra id của các văn bản tương tự nhau theo thứ tự giảm dần

====================================
Dữ liệu:

Gồm 5 trường, được ngăn cách với nhau bởi dấu = và ""

trường đầu tiên là id,
trường tiếp theo là wordsegmented
tiếp theo là 2garms
sau đó là 3grams
và cuối cùng là 4grams


"id"="wordsegmented"="2grams"="3grams"="4grams"
"1"="Vova thích gì
Trong giờ học, cô_giáo
– Các em chú ý, hãy nhìn cô và nói xem các em thích cái gì trên người cô và cô sẽ nói cho_biết lớn lên các em làm gì
Cô bé Masha
thưa cô, em thích mái_tóc của cô
– Ôi_Masha yêu quí, lớn lên em sẽ trở_thành một thợ làm_đầu nổi_tiếng
Cậu bé Pêchia
Thưa cô, đôi mắt của cô rất đẹp
– Cám_ơn Pêchia, lớn lên em sẽ trở_thành bác_sỹ nhãn_khoa giỏi
Thế còn Vôva, em nói gì đi chứ, đừng có xịu mặt như vậy
Vôva
Thưa cô, em biết nói gì bây_giờ
Bố_mẹ em chắc sẽ buồn lắm khi biết em chỉ làm một công_nhân vắt sữa bò ở nông_trại"="Vova_thích,Trong_giờ,giờ_học,cô_giáo,Các_em,em_chú,chú_ý,hãy_nhìn,nhìn_cô,cô_và,và_nói,nói_xem,xem_các,các_em,em_thích,thích_cái,cái_gì,gì_trên,trên_người,người_cô,cô_và,và_cô,cô_sẽ,sẽ_nói,nói_cho,cho_biết,biết_lớn,lớn_lên,lên_các,các_em,em_làm,làm_gì,Cô_bé,bé_Masha,thưa_cô,em_thích,thích_mái,mái_tóc,tóc_của,của_cô,Ôi_Masha,Masha_yêu,yêu_quí,lớn_lên,lên_em,em_sẽ,sẽ_trở,trở_thành,thành_một,một_thợ,thợ_làm,làm_đầu,đầu_nổi,nổi_tiếng,Cậu_bé,bé_Pêchia,Thưa_cô,đôi_mắt,mắt_của,của_cô,cô_rất,rất_đẹp,Cám_ơn,ơn_Pêchia,lớn_lên,lên_em,em_sẽ,sẽ_trở,trở_thành,thành_bác,bác_sỹ,sỹ_nhãn,nhãn_khoa,khoa_giỏi,Thế_còn,còn_Vôva,em_nói,nói_gì,gì_đi,đi_chứ,đừng_có,có_xịu,xịu_mặt,mặt_như,như_vậy,Thưa_cô,em_biết,biết_nói,nói_gì,gì_bây,bây_giờ,Bố_mẹ,mẹ_em,em_chắc,chắc_sẽ,sẽ_buồn,buồn_lắm,lắm_khi,khi_biết,biết_em,em_chỉ,chỉ_làm,làm_một,một_công,công_nhân,nhân_vắt,vắt_sữa,sữa_bò,bò_ở,ở_nông,nông_trại"="Vova_thích_gì,Trong_giờ_học,Các_em_chú,em_chú_ý,hãy_nhìn_cô,nhìn_cô_và,cô_và_nói,và_nói_xem,nói_xem_các,xem_các_em,các_em_thích,em_thích_cái,thích_cái_gì,cái_gì_trên,gì_trên_người,trên_người_cô,người_cô_và,cô_và_cô,và_cô_sẽ,cô_sẽ_nói,sẽ_nói_cho,nói_cho_biết,cho_biết_lớn,biết_lớn_lên,lớn_lên_các,lên_các_em,các_em_làm,em_làm_gì,Cô_bé_Masha,em_thích_mái,thích_mái_tóc,mái_tóc_của,tóc_của_cô,Ôi_Masha_yêu,Masha_yêu_quí,lớn_lên_em,lên_em_sẽ,em_sẽ_trở,sẽ_trở_thành,trở_thành_một,thành_một_thợ,một_thợ_làm,thợ_làm_đầu,làm_đầu_nổi,đầu_nổi_tiếng,Cậu_bé_Pêchia,đôi_mắt_của,mắt_của_cô,của_cô_rất,cô_rất_đẹp,Cám_ơn_Pêchia,lớn_lên_em,lên_em_sẽ,em_sẽ_trở,sẽ_trở_thành,trở_thành_bác,thành_bác_sỹ,bác_sỹ_nhãn,sỹ_nhãn_khoa,nhãn_khoa_giỏi,Thế_còn_Vôva,em_nói_gì,nói_gì_đi,gì_đi_chứ,đừng_có_xịu,có_xịu_mặt,xịu_mặt_như,mặt_như_vậy,em_biết_nói,biết_nói_gì,nói_gì_bây,gì_bây_giờ,Bố_mẹ_em,mẹ_em_chắc,em_chắc_sẽ,chắc_sẽ_buồn,sẽ_buồn_lắm,buồn_lắm_khi,lắm_khi_biết,khi_biết_em,biết_em_chỉ,em_chỉ_làm,chỉ_làm_một,làm_một_công,một_công_nhân,công_nhân_vắt,nhân_vắt_sữa,vắt_sữa_bò,sữa_bò_ở,bò_ở_nông,ở_nông_trại"="Các_em_chú_ý,hãy_nhìn_cô_và,nhìn_cô_và_nói,cô_và_nói_xem,và_nói_xem_các,nói_xem_các_em,xem_các_em_thích,các_em_thích_cái,em_thích_cái_gì,thích_cái_gì_trên,cái_gì_trên_người,gì_trên_người_cô,trên_người_cô_và,người_cô_và_cô,cô_và_cô_sẽ,và_cô_sẽ_nói,cô_sẽ_nói_cho,sẽ_nói_cho_biết,nói_cho_biết_lớn,cho_biết_lớn_lên,biết_lớn_lên_các,lớn_lên_các_em,lên_các_em_làm,các_em_làm_gì,em_thích_mái_tóc,thích_mái_tóc_của,mái_tóc_của_cô,Ôi_Masha_yêu_quí,lớn_lên_em_sẽ,lên_em_sẽ_trở,em_sẽ_trở_thành,sẽ_trở_thành_một,trở_thành_một_thợ,thành_một_thợ_làm,một_thợ_làm_đầu,thợ_làm_đầu_nổi,làm_đầu_nổi_tiếng,đôi_mắt_của_cô,mắt_của_cô_rất,của_cô_rất_đẹp,lớn_lên_em_sẽ,lên_em_sẽ_trở,em_sẽ_trở_thành,sẽ_trở_thành_bác,trở_thành_bác_sỹ,thành_bác_sỹ_nhãn,bác_sỹ_nhãn_khoa,sỹ_nhãn_khoa_giỏi,em_nói_gì_đi,nói_gì_đi_chứ,đừng_có_xịu_mặt,có_xịu_mặt_như,xịu_mặt_như_vậy,em_biết_nói_gì,biết_nói_gì_bây,nói_gì_bây_giờ,Bố_mẹ_em_chắc,mẹ_em_chắc_sẽ,em_chắc_sẽ_buồn,chắc_sẽ_buồn_lắm,sẽ_buồn_lắm_khi,buồn_lắm_khi_biết,lắm_khi_biết_em,khi_biết_em_chỉ,biết_em_chỉ_làm,em_chỉ_làm_một,chỉ_làm_một_công,làm_một_công_nhân,một_công_nhân_vắt,công_nhân_vắt_sữa,nhân_vắt_sữa_bò,vắt_sữa_bò_ở,sữa_bò_ở_nông,bò_ở_nông_trại"
Chỉ cần chọn id và lấy 1 trong 4 trường sau: wordsegmented,2grams,3grams,4grams
Các từ trong mỗi trường được ngăn cách bởi dấu cách trống và các dấu câu (từ ghép thì các âm tiết được nối bang dấu _)
VD.
Vova_thích,Trong_giờ

gồm 2 từ là Vova_thích và Trong_giờ

– Cám_ơn Pêchia, lớn lên em sẽ trở_thành bác_sỹ nhãn_khoa giỏi

gồm các từ là: Cám_ơn,Pêchia,lớn, lên, em, sẽ, trở_thành, bác_sỹ, nhãn_khoa, giỏi

Download : https://drive.google.com/open?id=0B5C6Dqb8T27hNjBkVVhaLWF6ZlE

Đề thi CTDL cũ


========================================== ==========================================

Tuesday, March 15, 2016

Bài tập giữa kỳ cho lớp INPG 13 và LTU 13A kỳ 20152

Bài 1. Xây dựng thuật toán tìm đường đi trong ma trận cho mê cung được mô tả bằng ma trận. 10×10 dùng backtracking.

Chỉ có thể đi ở các ô có giá trị 1 và theo hướng lên, xuống, trái và qua phải

1100000000000001111
1111111110111110000
0001000110101010000
1111000110101010000
1111000010101010000
0010000110101010000
1111000110101010000
1000000110101011111
1111110110101010001
1111010110101010001
1111010010100000001
1111011101111010001
1111110110101110000
0001000111101111111
1111000110101010001
1110000110101010101
1111000110101010111


Bài 2. Xây dựng các phương án tô màu cho đồ thị với các quốc gia được mô tả bằng ma trận. Các màu có thể chọn là 1,2,3,4

Liệu có thể dùng 3 màu tô cho bản đồ trên được không?

Bài 3. Xây dựng thuật toán quay lui giải sodoku 3x3 như dưới.
Có bao nhiêu phương án giải?


Wednesday, February 3, 2016

Bài tập giữa kỳ môn CTDL GT 20152

Bài tập giữa kỳ


Bài 1. Hoàn thiện hàm tìm dãy tăng dài nhất cài đặt dùng đệ quy

VD. dãy 1, 3, 2, 5, 6, 4, 7, 8, 9, 4, 5, 2, 1, 3, 4

Thì dãy tăng dài nhất là 4, 7, 8, 9 với độ dài 4.

Yêu cầu:


  • in ra độ dài và giá trị các phần tử trong dãy tăng
  • trong trường hợp có 2 dãy tăng cùng độ dài thì in ra cả 2.


Bài 2. Cho một mảng số nguyên A và một số s. Hãy xây dựng chương trình tìm hai số a,b không trùng nhau trong A sao cho có tổng đúng bằng s.

VD. A[]={1, 3, 5, 7, 6, 4, 2} và s=10 thì chương trình trả về 3 ,7 hoặc 6, 4

Yêu cầu:
  • Loại bỏ các cặp số bị trùng

Bài 3. Xâu palindrome là xâu đối xứng
VD adbda hoặc abccba

Cho một xâu bất kỳ, hãy tìm và đưa ra xâu con palindrome dài nhất một cách nhanh nhất

VD. abcdcbbcdbccadbca thì xâu con là palindrome dài nhất là dcbbcd

Yêu cầu:
  • Trường hợp có nhiều thì cần in ra tất cả các xâu con palindrome có độ dài dài nhất
  • Thực hiện với thời gian O(n)
Bài 4. Chỉ dùng các phép toán -1 (trừ đi 1) và * 2 (nhân với 2), hãy xây dựng thuật toán biến đổi 1 số nguyên n thành 1 số nguyên m một cách nhanh nhất (dùng ít thao tác nhất)

VD. 4 thành 6 cần 2 thao tác là

(4-1)*2

Bài 5. Biểu diễn đa thức bậc n dùng danh sách liên kết đơn

Hãy viết các hàm cộng, trừ, nhân và chia hai đa thức

Bài 6. Xây dựng thuật toán tìm đường đi trong ma trận cho mê cung được mô tả bằng ma trận 20×20 dùng backtracking.

Đầu vào là ô (1,1) và đầu ra là ô (20,20)
Chỉ có thể đi ở các ô có giá trị 1 và theo hướng lên, xuống, trái và qua phải

1100000000000001111
1111111110111110000
0001000110101010000
1111000110101010000
1111000010101010000
0010000110101010000
1111000110101010000
1000000110101011111
1111110110101010001
1111010110101010001
1111010010100000001
1111011101111010001
1111110110101110000
0001000111101111111
1111000110101010001
1110000110101010101
1111000110101010111

Bài 7. Cho một dãy số nguyên A với số lượng phần tử là n
A[]={5,3,4,7,8,9,2,4,5}
Hãy in các dãy con tăng/giảm với độ dài dãy từ 3 đến n
VD. Với mang A trên thì

Dãy tăng độ dài 3 là: 3,4,7 và 7,8,9 và 2,4,5
Dãy tăng độ dài 4 là: 3,4,7,8 và 4,7,8,9
Dãy tăng độ dài 5 là: 3,4,7,8,9

Bài 8. Cho đầu vào là một danh sách các từ (gồm chữ cái và chữ số, có phân biệt chữ hoa và thường). Hãy viết chương trình nhập và giá trị nguyên n và in ra màn hình các từ chỉ khác nhau đúng n ký tự. Các từ ngắn hơn thì được coi là có dấu cách trống phía sau.

VD từ abc và abcde khác nhau 2 ký tự
abD và abcD khác nhau 2 ký tự

Danh sách các từ này được nhập vào từ file input.txt

Bài 9. Cho ma trận chỉ gồm 1 và 0 được nhập vào từ file.
Hãy in ra màn hình diện tích vùng chứa các số 0 lớn nhất

1111111110111110000
0001000110101010000
1111000110101010000
1111000010101010111
0010000111101010000
1111001110101010000
1000001110111111111
1111110110101010001
1111010110101010001
1111010010101010001

Ví dụ với hình trên thì diện tích lớn nhất là 21

Bài 10. Cho hai danh sách các khoảng liên tục. Hãy viết chương trình trộn hai danh sách này để được một danh sách các khoảng liên tục

Đầu vào:
Arr1 = [3-11, 17-25, 58-73];
Arr2 = [6-18, 40-47];

Đầu ra:
Arr3 = [3-25, 40-47, 58-73];

Chú ý: Các khoảng này đã được sắp theo thứ tự tăng dần cho trước

Bài 11. Cho một mảng chứa toàn số 0 và 1 và một giá trị nguyên k. Tìm đoạn con liên tục chứa nhiều số 1 nhất sau khi lật k bit 0 thành 1.

Ví dụ mảng đầu vào là {1,1,0,0,1,1,1,0,1,1}
k = 1 (chỉ được lật 1 bit 0 thành 1)

Độ dài đoạn lớn nhất là 6 (Nếu ta lật bit 0 tại vị trí chỉ số 7, ta sẽ có đoạn con chứa các bit 1 dài nhất là 6)

Bài 12. Xây dựng hàm kiểm tra xem có thể xáo trộn các ký tự trong 1 xâu ký tự đầu vào sao cho hai ký tự liên tiếp không được giống nhau

Ví dụ

apple >> alpep, so valid
b>> b, valid
bb>> bb, invalid/impossible
aab >> aba, valid
aaaabbcc >> acabacab, valid
etc.

Bài 13. Cho đầu vào là 2 xâu ký tự.

  • Xâu target chỉ chứa các ký tự chữ cái và số
  • xâu pattern chứa các mẫu bao gồm kyws tự chữ cái, chữ số và dâu ? và *

Xây dựng hàm kiểm tra xem xâu target có tuân theo mẫu mô tả bởi xâu pattern hay không.

Dấu ? thay cho 1 ký tự hoặc 1 chữ số
Dấu * thay cho 1 chuỗi ký tự hoặc số (có thể rỗng)

Ví dụ với các trường hợp sau thì hàm trả về giá trị TRUE.

isMatching("abab", "abab")
isMatching("abab", "a**b")
isMatching("ababab", "ab*b")
isMatching("", "*")
isMatching("aaaaaab", "*?*b") 

Monday, November 9, 2015

Một số bài tập cộng điêm môn THDC 20151

Bài 1. Nhập vào một số nguyên, hãy in ra số đó theo cách nhóm theo bộ 3 số
VD. nhập vào 123456789 thì in ra 123,456,789
Nhập vào 12345 thì in ra 12,345

Bài 2, Nhập vào một chuỗi số, hãy kiểm tra xem đó có phải là một SDT di động hợp lệ hay không. (Kiểu nhập vào nên là xâu ký tự)

Bài 3. Nhập vào một số nguyên có 3 tới 9 chữ số, hãy in ra màn hình cách đọc số nguyên đó
VD. 112 ==> mot tram muoi hai
104 ==> mot tram le bon
12345 ==> muoi hai nghin ba tram bon muoi nam

Bài 4. Nhập vào một số nguyên, hãy in ra màn hình xem số đó được tạo nên từ các chữ số nào.
VD 123123123 thì in ra các chữ số tạo nên số đó là 1 2 3

Bài 5. Nhập vào một đoạn văn bản từ bàn phím, hãy in ra màn hình những từ có ký tự được in hoa.
VD. At first, researchers did not see an obvious relationship between coffee consumption and death rates. Study participants who drank between less than a cup of coffee and three cups a day had 5% to 9% lower risk of dying than those who drank no coffee. Those who drank more than three cups a day did not see any benefit. The finding was murky, like previous studies, some of which suggested a benefit and some did not.

Thì in ra màn hình  At, Study, Those, The

Bài 6. Nhập vào một câu xâu, hãy chuẩn hóa xâu đó sao cho

  • Bắt đầu và kết thúc không được có dấu các trống
  • Không có quá 2 dấu cách trống giữa 2 từ liên tiếp
Bài 7.  Nhập vào một địa chỉ email, kiểm tra xem đó có phải là email hợp lệ hay không.
VD email hợp lệ abcd@efgh.com

Bài 8. Nhập vào một mảng xâu ký tự biểu diễn họ tên của các thành viên trong lớp (số thành viên không quá 100). Hay sắp xếp và in ra danh sách sao cho họ tên theo thứ tự ABC

Bài 9 (2 Đ). Nhập vào một mảng xâu ký tự biểu diễn họ tên của các thành viên trong lớp (số thành viên không quá 100). Hay sắp xếp và in ra danh sách sao cho tên các thành viên theo thứ tự ABC

Bài 10. Nhập vào một đoạn văn bản gồm chữ cái và chữ số, dấu cách. Hãy thống kê tần số xuất hiện của các ký tự trong văn bản và in ra các ký tự theo thứ tự tần số xuất hiện giảm dần.
Chú ý: Có phân biệt ký tự hoa và thường

Bài 11. 

Một số bài code VD trên lớp


#include<stdio.h>
#include <conio.h>


// minh hoa toan tu logic tren bit
int main1()
{
int a = 5, b = 17;
// 5 = 0000 0000 0000 0000 0000 0000 0000 0101
// 17 = 0000 0000 0000 0000 0000 0000 0001 0001
//5^17 = 0000 0000 0000 0000 0000 0000 0001 0100

//5|17 = 0000 0000 0000 0000 0000 0000 0001 0101
//5&17 = 0000 0000 0000 0000 0000 0000 0000 0001
/*int c = a^b;
printf("%d ^ %d = %d", a, b, c);*/

/*
// 5 = 0000 0000 0000 0000 0000 0000 0000 0101
//~5 = 1111 1111 1111 1111 1111 1111 1111 1010
int d = ~a;
printf("~%d = %d", a, d);
*/
// 5 = 0000 0000 0000 0000 0000 0000 0000 0101
//5<<2 = 0000 0000 0000 0000 0000 0000 0001 0100
int d = a<<2;
printf("%d<<2 = %d", a, d);

_getch();
return 0;
}

========================================================
#include <stdio.h>
#include <stdlib.h>


// int ra man hinh co quy cach
int main2()
{
printf("1234567890123456789012345678901234567890\n");
printf("%5c\n", 'A');
printf("%-5c\n", 'A');
/*
printf("%f\n", 34.2);
printf("%7.2f\n", 34.2);
printf("%-7.2f\n", 34.2);
printf("%7.2f\n", 34.256);
printf("%.2f\n", 34.256);
*/
/*
printf("%5d\n", 4);
printf("%-5d\n", 4);
printf("%-5d\n", 123456);
*/
system("pause");
return 0;
}
========================================================
#include <stdio.h>
#include <stdlib.h>

// minh hoa if..else
int main3()
{
//1 nhap so kwh tieu thu
//2 tinh va in ra gia theo cong thuc
int soKwh; // so kwh
printf("Nhap vao so Kwh:");
scanf_s("%d", &soKwh);

int tien;
if (soKwh <= 50)
tien = soKwh * 500;
else if (soKwh <= 100)
tien = 50 * 500 + (soKwh - 50) * 1000;
else
tien = 50 * 500 +50*1000+ (soKwh - 100) * 2000;

printf("Tien phai tra cho so %d kwh la %d\n", soKwh, tien);

system("pause");
return 0;
}
========================================================

#include <stdio.h>
#include <stdlib.h>

// minh hoa switch..case
int main()
{
//1 nhap vao thang va in ra so ngay
int thang;
printf("Nhap vao thang can tra cuu:");
scanf_s("%i", &thang);
switch (thang)
{
case 2: printf("Thang co 28/29 ngay\n");
//break;
case 4: case 6: case 9: case 11: printf("Thang co 30 ngay\n");
break;
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
printf("Thang co 31 ngay\n");
break;
default:
printf("%i la thang khong hop le\n", thang);
}

system("pause");
return 0;
}
========================================================
/*
Nhap vao mot so nguyen,
tinh tong cac chu so cua so nguyen do
VD: 1234 -> tong la 10
*/
#include <stdio.h>
#include <stdlib.h>

int main() {
int n, tong;
printf("Nhap vao mot so nguyen:");
scanf_s("%d", &n);

//tach tung chu so cua so nguyen? vd 1234
// chia lay phan du cho 10, (ta duoc 4)
//phan con lai la so chia lay phan nguyen cho 10 (duoc 123)
// lap toi khi phan nguyen bang 0 thi dung

/*
1234 ==> 123 va 4
123 ==> 12 va 3
12 ==> 1 va 2
1 ==> 0 va 1
*/
tong = 0;
int count=0;
while (n > 0)
{
/*count++;
printf("lan lap %d\n", count);
printf("Chu so don vi: %d\n", n % 10);
printf("So nguyen con lai: %d\n", n / 10);*/

tong = tong + n % 10;
n = n / 10;
}

printf("Tong cua cac chu so tao nen so la %d\n", tong);
system("pause");
return 0;
}
======================================================
/*
minh hoa switch .. case
*/
#include <stdio.h>
#include <stdlib.h>

int main4()
{
/*
nhap vao mot tuoi di hoc, va in ra trinh do va
cap hoc tuong ung
VD. 1-3 : mam non
4-5: mau giao
6-10: pho thong co so (tieu hoc)
11-15: trung hoc co so (trung hoc)
16-18: trung hoc pho thong (pho thong)
19-23: dai hoc
24->100: truong doi
*/
int n; // n>=1 va n<=100
printf("Nhap vao do tuoi:");
scanf_s("%d", &n);
while (n < 1 || n>100)
{
printf("Do tuoi khong hop le, nhap lai do tuoi:");
scanf_s("%d", &n);
}

if(n<=3)
printf("Hoc truong mam non");
else if(n<=5) //n>3 AND n<=5
printf("Hoc truong mau giao");
else if(n<=10)
printf("Hoc truong tieu hoc");
else if(n<=15)
printf("Hoc truong trung hoc");
else if(n<=18)
printf("Hoc truong pho thong");
else if (n <= 23)
printf("Hoc truong dai hoc");
else
printf("Hoc truong doi");

printf("\n");
system("pause");
return 0;
}

==================================================
/*
minh hoa switch .. case
*/
#include <stdio.h>
#include <stdlib.h>

int main3()
{
/*
nhap vao mot tuoi di hoc, va in ra trinh do va
cap hoc tuong ung
VD. 1-3 : mam non
4-5: mau giao
6-10: pho thong co so (tieu hoc)
11-15: trung hoc co so (trung hoc)
16-18: trung hoc pho thong (pho thong)
19-23: dai hoc
24->100: truong doi
*/
int n; // n>=1 va n<=100
printf("Nhap vao do tuoi:");
scanf_s("%d", &n);
while (n < 1 || n>100)
{
printf("Do tuoi khong hop le, nhap lai do tuoi:");
scanf_s("%d", &n);
}

switch (n)
{
case 1: case 2: case 3:
printf("Hoc truong mam non");
break;
case 4: case 5:
printf("Hoc truong mau giao");
break;
case 6: case 7: case 8: case 9: case 10:
printf("Hoc truong tieu hoc");
break;
case 11: case 12: case 13: case 14: case 15:
printf("Hoc truong trung hoc");
break;
default:
printf("Hoc truong doi");
break;
}
printf("\n");
system("pause");
return 0;
}

========================================================

#include <stdio.h>
#include <stdlib.h>

// minh hoa break, continue
int main()
{
/*
for (int i = 0; i < 10; i++)
for (int j = 1; j <= 10000; j++)
{
printf("Vong lap i = %d, j = %d\n", i, j);
if (j >= 5) break; //chi co tac dung voi vong lap cua j
}
*/
for (int i = 0; i < 5; i++)
for (int j = 1; j <= 20; j++)
{
if (j % 5) continue; //chi co tac dung voi vong lap cua j
//bo qua lenh phia sau khi
//j khong chia het cho 5
printf("Vong lap i = %d, j = %d\n", i, j);

}

system("pause");
return 0;
}

==================================================

#include <stdio.h>
#include <stdlib.h>

// minh hoa mang phan tu kieu so thuc (n<=100)
// 1. nhap mang
// 2. tim min, max
// 3. sap xep mang va in ra theo thu tu tang va giam dan
//  (cung voi mang ban dau) ==> tao ra mang copy
int main()
{
double A[100], B[100];
int n;

//0<n va n<=100
printf("Nhap vao so phan tu cua mang:");
scanf_s("%d", &n);
while (n<=0 || n>100)
{
printf("Hay nhap nhap so luong hop le:");
scanf_s("%d", &n);
}

//nhap vao mang
printf("Nhap vao gia tri tung phan tu:\n");
for (int i = 0; i < n; i++)
{
printf("A[%d]=", i);
scanf_s("%lf", &A[i]);
}

// tim min va max
double max=A[0];
for (int i = 0; i < n; i++)
{
if (max < A[i]) max = A[i];
}

double min = A[0];
for (int i = 0; i < n; i++)
{
if (min > A[i]) min = A[i];
}

printf("Gia tri lon nhat la %.2lf\n", max);
printf("Gia tri nho nhat la %.2lf\n", min);

// tao ban copy cua mang ban dau
for (int i = 0; i < n; i++)
B[i] = A[i];

for (int i = n; i >= 2; i--)
for (int j = 0; j < i - 1; j++)
{
if (A[j] > A[j + 1])
{
double phu = A[j];
A[j] = A[j + 1];
A[j + 1] = phu;
}
}

printf("Mang ban dau: \n");
for (int i = 0; i < n; i++)
{
printf("%.2lf, ", B[i]);
}
printf("\n");
printf("Mang sau khi sap xep: \n");
for (int i = 0; i < n; i++)
{
printf("%.2lf, ", A[i]);
}
printf("\n");
system("pause");
return 0;
}
=======================================================
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*
nhap vao mot ten
tach ra ho va ten

VD. Nguyen Tan Dung
Ho: Nguyen Tan
Ten : Dung
*/
int main()
{
char fullname[50];
//nhap vao ten
printf("Nhap vao ten:");

gets_s(fullname); //nhap duoc xau co dau cach trong


//scanf_s("%s", fullname); // khong co dau &
//==> khong nhap duoc xau co dau cach trong

printf("Xau vua nhap: %s\n", fullname);

//Tach ra phan ten va phan Ho
//1. Tim vi tri dau cach trong cuoi cung
int vitri = 0;
int i = 0;
while (i < strlen(fullname))
{
if (fullname[i] == ' ')vitri = i;
i++;
}

printf("Vi tri dau cach trong cuoi cung: %d\n", vitri);
// Phan Ho tu vi tri 0 toi Dau cach trong cuoi cung
char surname[50];
printf("Ho: ");
for (i = 0; i < vitri; i++)
{
surname[i] = fullname[i];
}
surname[i] = '\0';
printf("%s", surname);

printf("\n");

// Phan ten tu dau cach trong cuoi cung toi het
printf("Ten: ");

// in tung ky tu!, dung strncpy
for (i = vitri+1; i < strlen(fullname); i++)
printf("%c", fullname[i]);
printf("\n");
system("pause");
return 0;
}

============================================================
#include <stdlib.h>
#include <stdio.h>

/*
minh hoa mang struct dung luu tru thong tin sinh vien
*/
typedef struct TTSV
{
char hoten[50];
char shsv[15];
float gk, th, ck;
float hp; //tinh theo cong thuc 0.2*(gk+th) + 0.6*ck
} SV;

//dung typedef de dinh nghia lai ten cau truc cho ngan
//typedef struct TTSV SV;

int main9()
{
SV lop[100];
int n; // so thanh vien thuc su (n>0 va n<=100)

//nhap thong tin cac thanh vien lop
printf("Nhap so thanh vien cua lop:");
scanf_s("%d", &n);
while (n <= 0 || n > 100)
{
printf("Hay nhap so luong hop le:");
scanf_s("%d", &n);
}
char buffer[100];

// dung vong lap for der nhap thong tin tung thanh vien
for (int i = 0; i < n; i++)
{
gets_s(buffer);
printf("Nhap vao thong tin thanh vien thu %d:\n", i + 1);
printf("Ho ten:"); fflush(stdin);// do bo nho dem truoc khi nhap xau
gets_s(lop[i].hoten);

printf("SHSV:"); fflush(stdin);// do bo nho dem truoc khi nhap xau
gets_s(lop[i].shsv);

printf("Diem giua ky:");
scanf_s("%f", &lop[i].gk);

printf("Diem thuc hanh:");
scanf_s("%f", &lop[i].th);

printf("Diem cuoi ky:");
scanf_s("%f", &lop[i].ck);
}

// tinh diem hoc phan
for (int i = 0; i < n; i++)
{
if (lop[i].gk < 3 || lop[i].th < 3)
lop[i].hp = 0;
else
lop[i].hp = 0.2*(lop[i].gk + lop[i].th) + 0.6*lop[i].ck;
}

//dem so luong sinh vien khong qua va in ra thong tin sinh vien qua
printf("Ket qua hoc tap:\n");
int sosinhvienkodat = 0;
printf("%30s %10s %4s %4s %4s %4s\n","Ho ten   ","SHSV  ","GK ","TH ","CK ","HP ");
for (int i = 0; i < n; i++)
{
if (lop[i].hp < 4) sosinhvienkodat++;
else
{
printf("%30s %10s %.2f %.2f %.2f %.2f\n", lop[i].hoten,
lop[i].shsv, lop[i].gk, lop[i].th, lop[i].ck, lop[i].hp);
}
}
printf("Tong so sinh vien khong dat: %d\n", sosinhvienkodat);

// sap xep va in ra thong tin sinh vien theo diem hoc phan giam dan
for (int i = n; i >= 2; i--)
for (int j = 0; j < i-1; j++)
{
if (lop[j].hp < lop[j + 1].hp)
{
SV phu = lop[j];
lop[j] = lop[j + 1];
lop[j + 1] = phu;
}
}
printf("\n========================================\n");
printf("Danh sach sinh vien voi diem hp giam dan:\n\n");
printf("%30s %10s %4s %4s %4s %4s\n", "Ho ten   ", "SHSV  ", "GK ", "TH ", "CK ", "HP ");
for (int i = 0; i < n; i++)
{
printf("%30s %10s %.2f %.2f %.2f %.2f\n", lop[i].hoten,
lop[i].shsv, lop[i].gk, lop[i].th, lop[i].ck, lop[i].hp);
}
system("pause");
return 0;
}


====================================================================

#include <stdlib.h>
#include <stdio.h>
#include <math.h>
/*
minh hoa ham xu ly tam giac
*/
double tinhChuvi(double a, double b, double c)
{
if (a <= 0 || b <= 0 || c <= 0) return -1; //Canh khong hop le
if (a + b <= c || b + c <= a || a + c <= b)
return -2;// khong tao thanh tam giac
return a + b + c;
}

double tinhDienTich(double a, double b, double c)
{
if (a <= 0 || b <= 0 || c <= 0) return -1; //Canh khong hop le
if (a + b <= c || b + c <= a || a + c <= b) 
return -2;// khong tao thanh tam giac

double p = tinhChuvi(a, b, c) / 2;
return sqrt(p*(p - a)*(p - b)*(p - c));
}

int main10()
{
double x, y, z;
printf("Nhap vao do dai 3 canh tam giac:");
scanf_s("%lf%lf%lf", &x, &y, &z);
if (tinhChuvi(x, y, z) < 0) printf("Tam giac khong hop le!\n");
else printf("Chu vi tam giac : %lf\n", tinhChuvi(x, y, z));
if (tinhDienTich(x, y, z) < 0) printf("Tam giac khong hop le!\n");
else printf("Dien tich tam giac : %lf\n", tinhDienTich(x, y, z));

system("pause");
return 0;

}


=========================================================

#include <stdio.h>
#include <stdlib.h>

/*
mih hoa doc so co tu 1->3 chu so
*/

//hàm đọc chữ số
void docChuSo(int a)
{
if (a == 0) printf("khong");
else if (a == 1)printf("mot");
else if (a == 2)printf("hai");
else if (a == 3)printf("ba");
else if (a == 4)printf("bon");
else if (a == 5)printf("nam");
else if (a == 6)printf("sau");
else if (a == 7)printf("bay");
else if (a == 8)printf("tam");
else if (a == 9)printf("chin");
else printf("ERROR!!!");
}

// kiem tra so can doc co phai so tuf 1->3 chu so hay khong
// ham tra ve -1 neu khong hop le, nguoc lai tra ve 0
int kiemTra(int n)
{
if (n>999 || n<-999) return -1;
else return 0;
}

// doc so co tu 1->3 chu so
void docSo(int n)
{
int a, b, c;// phan tram, chuc va don vi
if (kiemTra(n) == -1)
printf("Loi! So khong hop le.\n");
else
{
if (n<0) {
printf("am ");
n = -n;
}
c = n % 10; n = n / 10;
b = n % 10; n = n / 10;
a = n % 10;

if (a>0) { docChuSo(a); printf(" tram "); }
if (a>0 && b == 0 && c!=0)printf("le ");
if (b == 1) { printf("muoi "); }
if (b>1) { docChuSo(b); printf(" muoi "); }
if(c!=0) docChuSo(c);  
printf("\n");
}
}

int main11(void)
{
docSo(-115);
docSo(-125);
docSo(-105);
docSo(-5);
docSo(25);
docSo(15);
docSo(110);
docSo(100);
docSo(10);
system("pause");
return 0;
}


===================================================

#include <stdio.h>
#include <stdlib.h>

void increase(int x)
{
x = x * 2;
}
void increase(int A[], int size)
{
for (int i = 0; i < size; i++)
A[i] = A[i] * 2;
}
void printArray(int A[], int size)
{
for (int i = 0; i < size; i++)
printf("%d ", A[i]);
}
int main12()
{
int a = 5;
printf("Gia tri ban dau cua a:%d\n", a);
increase(a);
printf("Gia tri cua a sau khi goi ham:%d\n", a);

int A[] = { 1,3,5,7,4 };
printf("Mang ban dau:"); 
printArray(A, 5);
printf("\n");

increase(A, 5);

printf("Mang sau khi goi ham:");
printArray(A, 5);
printf("\n");

system("pause");
return 0;
}


=========================================================

#include <stdio.h>
#include <stdlib.h>


void sort(int a[], int n)
{
int i, j, temp;
for (i = 0; i < n - 1; ++i)
for (j = i + 1; j < n; ++j)
if (a[i] < a[j]) {
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
void display(int A[], int size)
{
int i;
for (i = 0; i<size; i++)
printf("%d ", A[i]);
printf("\n");
}

int main(void)
{
int i;
int array[16] = { 34, -5, 6, 0, 12, 100, 56, 22,
44, -3, -9, 12, 17, 22, 6, 11 };

printf("Mang ban dau:\n");
display(array, 16);

sort(array, 16);

printf("Mang sau khi sap xep:\n");
display(array, 16);

system("pause");
return 0;
}