TRƯỜNG ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN Câu 1: - Input: Nhập vào số tự nhiên n.2... - Output: tất cả các số tự nhiên chia hết cho 7 và bé hơn hoặc bằng n... hiện lại ma trận2..
Trang 1BÁO CÁO BÀI TẬP LỚN
MÔN KỸ THUẬT LẬP TRÌNH CƠ SỞ
MÃ ĐỀ: 52
Giảng viên : Nguyễn Thị Quỳnh NhưSinh viên thực hiện : Nguyễn Hoàng QuânLớp : 2210A04
Mã sinh viên : 22A1001D0270
MỤC LỤC:
1
Trang 2Câu 1 page 3 Câu 2 page 4 Câu 3 page 6 Câu 4 page 8 Câu 5 page 10 Câu 6 page 12 Câu 7 page 14 Câu 8 page 18 Câu 9 page 24 Câu 10 page 31
TRƯỜNG ĐẠI HỌC MỞ HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN
Câu 1:
- Input: Nhập vào số tự nhiên n
2
Trang 3- Output: tất cả các số tự nhiên chia hết cho 7 và bé hơn hoặc bằng n.
- Process:
Bước 1: Bắt đầu
Bước 2: Nhập n
Bước 3: Khởi tạo i = 1
Bước 4: Nếu i % 7 = 0 thì xuất ra i
Câu 2:
- Input: Nhập bán kính R
3
Trang 4- Output: Diện tích và thể tích.-Process:
Bước 1: Bắt đầu
Bước 2: Nhập R
Bước 3: Tính S = 4*R*RBước 4: Tính V = (R*S)/3Bước 5: Xuất S,VBước 6: Kết thúc
Trang 5-R= 5, xuất ra màn hình S=100, V=500/3-R= 3, xuất ra màn hình S=36 , V= 36
Câu 3:
-Input: Số có 4 chữ số dạng abcd
5
Trang 6freopen( "ipCau3.txt" , "r" , stdin );
freopen( "op.txt" , "w" , stdout );
6
Trang 7*nếu k < benhat thì benhat = k
Bước 5: Nếu sum < n thì quay lại bước 4
Bước 6: Xuất benhat là giá trị bé nhất trong dãyBước 7: Kết thúc
freopen( "ipCau4.txt" , "r" , stdin );
freopen( "op.txt" , "w" , stdout );
Trang 9-Input: Nhập vào số nguyên dương n-Output: Các ước số của n
-Process:
Bước 1: Bắt đầu
Bước 2: Nhập n
Bước 3: Khởi tạo i = 0
Bước 4: nếu n % i == 0 thì xuất i Bước 5: i = i + 1
*nếu i < n quay lại bước 4Bước 6: Kết thúc
-Code:
include <bits/stdc++.h>
using namespace std;
void uoc( int n){
for ( int i = 1 ; i <= n; i++)
freopen( "ipCau5.txt" , "r" , stdin );
freopen( "op.txt" , "w" , stdout );
Trang 11-Output: chuỗi ký tự trên nhưng không có ký tự x
- Process:
Bước 1: Bắt đầu
Bước 2: Nhập chuỗi ký tự ( chuỗi a ) Nhập ký tự cần xóa ( x )
Bước 3: Khởi tạo i = 0
Bước 4: Nếu a[i] == x[0] thì xóa a[i]
freopen( "ipCau6.txt" , "r" , stdin );
freopen( "op.txt" , "w" , stdout );
Trang 12-Bộ dữ liệu test:
- a = “abcdef” x = “a”, xuất ra chuỗi a = “bcdef”
- b = “ghiklm” x = “h”, xuất ra chuỗi b = “giklm”
Câu 7
-Input: Số phần tử của mảng(n)
12
Trang 13Các phần tử của mảng(a[i])
-Output;
1.hiện mảng vừa nhập
2.hiện 3 vị trí liên tiếp có tbc lớn nhất
3.sắp xếp lẻ lên đầu dãy, chẵn cuối dãy và hiện lại mảng4.tổng phần tử trong mảng
Bước 2: Khởi tạo i = 0
Bước 3: Xuất a[i]
Bước 2: Khởi tạo 2 biến max = -1e9, t
Bước 3: Khởi tạo i = 0
Bước 4: t = trung bình cộng 3 giá trị liên tiếp
13
Trang 14Nếu t > max
*max=tBước 5: i = i + 1
*nếu i < n – 2 quay lại bước 4
Bước 6: Xuất ra kết quả
Bươc 7: Kết thúc
d.Sắp xếp giá trị lẻ về đầu dãy, chẵn về cuối dãyBước 1: Bắt đầu
Bước 2: Khởi tạo biến x = 0
Bước 3: Khởi tạo i = 0
Bước 4: Nếu a[i] % 2 != 0
*hoán đổi vị trí a[i] và a[x]
Bước 2: Khởi tạo biến t = 0
Bước 3: Khởi tạo i = 0
Trang 15{
cout << a[i] << ; " "
}
}
void tbc( a[], int int n){
float max = - 1e9 ;
Trang 16freopen( "ip.txt" , "r" , stdin );
freopen( "op.txt" , "w" , stdout );
Trang 17Các giá trị của ma trận(a[i][j])
h1,h2
-Output:
1 hiện lại ma trận
2 đổi chỗ vị trí 2 hàng h1 h2, hiện lại ma trận
3 Kiểm tra 1 số có phải là số nguyên tố
4 hiện hàng có nhiều số nguyên tố nhất-Process:
Bước 2: Khởi tạo i = 0, j = 0
Bước 3: Xuất a[i][j]
Trang 18c Hàm đổi vị trí 2 hàng bất kỳ
Bước 1: Bắt đầu
Bước 2: Nhập h1, h2
Bước 3: Khởi tạo j = 0
Bước 4: Hoán đổi vị trí 2 giá trị của 2 hàngBước 5: j = j + 1
*nếu j < m quay lại bước 4
Bước 6: Kết thúc
d Hàm kiểm tra số nguyên tố n
Bước 1: Bắt đầu
Bước 2: Khởi tạo biến sum = 0
Bước 3: Khởi tạo i = 0
e.Hàm kiểm tra hàng nào nhiều snt nhất
Bước 1: Bắt đầu
Bước 2: Khởi tạo - i = 0
- j = 0Bước 3: Khởi tạo biến index = 0
18
Trang 19Bước 4: Dùng hàm d với từng phần tử của hàng
void nhap( a[][ int 20 ], int m, n){ int
for ( int i = 0 ; i < n; i++)
void in( int a[][ 20 ], m, int int n){
for ( int i = 0 ; i < n; i++)
Trang 21freopen( "ip.txt" , "r" , stdin );
freopen( "op.txt" , "w" , stdout );
1.Hiện lại ma trận: 1 2 3
21
Trang 231 Xuất lại thông tin cán bộ
2 Xuất ds cán bộ có hệ số lương lớn hơn 5.0
3 Sắp xếp ds cán bộ theo thứ tự tăng dần của lương
4 Số lượng cán bộ có lương trên 2tr
Bước 2: Khởi tạo i = 0
Bước 3: In ra thông tin cán bộ có chỉ
Trang 24c Hàm hiện ds cán bộ có hệ số lương > 5.0 và ghi vàofile canbo.dat
Bước 1: Bắt đầu
Bước 2: Tạo file canbo.dat
Bước 3: khởi tạo i = 0
Bước 4: nếu hệ số lương cán bộ a[i] > 5.0 thì in ra
và ghi vào file
Bước 4: khi j < n, thực hiện
*nếu a[i].luong > a[j].luong thì hoán đổi a[i] và a[j] *j = j+1
Bước 5: i = i + 1
*i < n, quay lại bước 2
Bước 6: Kết thúc
24
Trang 25e Hàm đến số cán bộ có lương trên 2tr và hiện ra màn hình
Bước 1: Bắt đầu
Bước 2: khởi tạo i = 0, sum = 0
Bước 3: nếu lương a[i] > 2tr
*xuất ra màn hình
*sum += 1Bước 4: i = i + 1
*nếu i < n, quay lại bước 3Bước 5: Kết thúc
Trang 26int d= 1 ;
cout << "Danh sach can bo \n" ;
cout << "stt" << " " << "ho va ten" << " " << "phong ban" << " " << "he so luong" << " " << "luong \n" ;
for int ( i= 0 ; i<n; i++){
cout << d<< " " ; a[i].in();
d++;
}
}
void nhapds(cb a[], int n){
for int ( i= 0 ; i<n; i++){
a[i].nhap();
}
}
void ghifile(cb a[], int n){
cout << "thong tin can bo co hsl >5.0 \n" ;
cout << "sap xep giam dan theo luong \n" ;
for int ( i = 0 ; i < n - 1 ; i++){
Trang 27void t2t(cb a[], int n){
cout << ố "ds vá s l ượ ng cán b có l ộ ươ ng > 2tr \n" ; for int ( i= 0 ; i<n; i++)
freopen( "ipbai9.txt" , "r" , stdin );
freopen( "op.txt" , "w" , stdout );
int n,lc; cin >> n;
cb a[ 100 ];
nhapds(a,n);
cout << " -MENU -\n" ; cout << "1.In ra tat ca thong tin \n" ;
cout << "2.In thong tin can bo co hsl >5.0 va ghi vao file \n" ; cout << "3.Sap xep thu tu tang dan cua luong \n" ; cout << "4.In ra can bo luong tren 2tr \n" ;
cout << "5.Thuc hien het chuc nang \n" ;
cout << "Moi lua chon \n" ;
27
Trang 28-Danh sach can bo
stt ho va ten phong ban he so luong luong
1 nguyen van a 12a1 4.15 6.23 tr
2 pham van b 12b2 4.05 6.07 tr
3 nguyen thi c 12c3 6.15 9.23 trthong tin can bo co hsl >5.0
1 nguyen thi c 12c3 6.15 9.23 trsap xep giam dan theo luong
28
Trang 30-Input:1.Nhập n là số lượng thí sinh
2.Danh sách thông tin thí sinh gồm số báo danh, họ tên, giới tính, tên tiết mục dự thi, kết quả
-Output:
1 Xuất lại ra danh sách thông tin thí sinh
2 Xuất danh sách thông tin thí sinh có tiết mục trùng tên
3 Ghi danh sách thông tin thí sinh đạt vòng dự thi vào file
Bước 2: Nhập n số lượng thí sinh
Bước 3: Nhập thông tin (số báo danh, họ tên, giới tính, tên tiết mục dự thi, kêt quả)
Bước 4: Kết thúc
b Hàm hiện ds thí sinh
Bước 1: Khởi tạo i = 0
Bước 2: In ra thông tin thí sinh có chỉ số i trong mảngBước 3: i = i + 1
30
Trang 31Bước 4: Nếu i < n ( n là số lượng ) thì quay lại bước 2Bước 5: Kết thúc
c Hàm hiện thí sinh có tên tiết mục trùng nhau
Bước 4: Nếu kết quả của thí sinh là đạt
*ghi thông tin vào file
Trang 32e Sắp xếp danh sách thí sinh theo thứ tự anphabet của họ tên
Bước 1: Bắt đầu
Bước 2: Khởi tạo i = 0
Bước 3: Tính j = i + 1
Bước 4: So sánh họ tên của thí sinh theo chỉ số i với j
*nếu true hoán đổi vị trí 2 thí sinh
Trang 33void nhapds(ts a[], int n){
for ( int i = 0 ; i < n; i++)
{
a[i].nhap();
}
}
void inds(ts a[], n){ int
cout << "Danh sách thí sinh \n" ;
cout << "sbd" << " " << "ho va ten" << " " << "gioi tinh" << " " << "tiet muc" << " " << "ket qua \n" ;
for int ( i = 0 ; i < n; i++)
{
a[i].in();
}
}
void trungten(ts a[], int n){
cout << "Các thí sinh có ti t m c trùng tên \n" ế ụ ;
for int ( i= 0 ; i<n- 1 ; i++)
void ghifile(ts a[], int n){
cout << "thong tin thi sinh dat vong loai \n" ;
Trang 34void sapxep(ts a[], int n){
cout << "sap xep ds thí sinh theo th t anphabet c a tên \n" ứ ự ủ ;
freopen( "ipbai10.txt" , "r" , stdin );
freopen( "op.txt" , "w" , stdout );
cout << "1.In ra tat ca thong tin \n" ;
cout << "2.In thong tin thi sinh trung tiet muc \n" ; cout << "3.In thi sinh dat vong loai va ghi vao file \n" ; cout << "4.Sap xep ds thi sinh theo thu tu anphabet cua ten \n" ;
34
Trang 35cout << "Moi lua chon \n" ;
- 4, 123, nguyen van a, nam, nhay, d
456, hoang thi b, nu, hat, d
789, duong minh c, nam, rap, kd
741, nguyen thai d, nam, nhay, kd
- Xuất ra:
Danh sách thí sinh
sbd ho va ten gioi tinh tiet muc ket qua
123 nguyen van a nam nhay d
456 hoang thi b nu hat d
789 duong minh c nam rap kd
35
Trang 36741 nguyen thai d nam nhay kdCác thí sinh có tiết mục trùng tên
123 nguyen van a nam nhay d
741 nguyen thai d nam nhay kdThong tin thi sinh duoc ghi vao file
123 nguyen van a nam nhay d
456 hoang thi b nu hat dSap xep ds thí sinh theo thứ tự anphabet của tên
789 duong minh c nam rap kd
123 nguyen van a nam nhay d
456 hoang thi b nu hat d
741 nguyen thai d nam nhay kd
36