1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo bài tập lớn môn cơ sở lập trình

34 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Báo Cáo Bài Tập Lớn Môn Cơ Sở Lập Trình
Tác giả Lê Tiến Đạt
Người hướng dẫn Giáo viên HD: Mai Thị Thúy Hà
Trường học Trường Đại Học Mở Hà Nội
Chuyên ngành Cơ Sở Lập Trình
Thể loại bài tập lớn
Năm xuất bản 2021
Thành phố Hà Nội
Định dạng
Số trang 34
Dung lượng 3,11 MB

Nội dung

Bước 3: Dùng vòng lặp for nhập lần lượt từng số nguyên từ đầu đến cuối.Bước 4: Dùng vòng lặp for lồng để so sánh từ đầu đến cuối từng phần tử, phần tử lớn hơn được gán vào biến max... d,

Trang 1

TRƯỜNG ĐẠI HỌC MỞ HÀ NỘI

KHOA CÔNG NGHỆ THÔNG TIN

BÁO CÁO BÀI TẬP LỚN

MÔN CƠ SỞ LẬP TRÌNH

ĐỀ SỐ 32

Sinh viên thực hiện: Lê Tiến Đạt

Lớp: 2110A04

Hà Nội, năm 2021

1

Trang 2

MỤC LỤC

Bài 01: 3

Bài 02: 4

Bài 03: 7

Bài 04: 8

Bài 05: .11

Bài 06: .13

Bài 07: .15

Bài 08: .19

Bài 09: .23

Bài 10: .28

Trang 3

1 Input: số nguyên n.

2 Output: số chữ số của số nguyên n, tổng các chữ số của số nguyên n.

3 Process: xác định sơ đồ thuật giải

*Đếm số chữ số:

Trang 5

trung bình nhân = (a*b*c)/3

3 Process: xác định sơ đồ thuật giải

* Tính trung bình cộng:

 Tính trung bình nhân:

Trang 6

4 Test: lập bảng có cả Input và Output tương ứng

cout<<"Nhap so thu nhat: "<<endl; cin>> a;

cout<<"Nhap so thu hai: "<<endl; cin>> b;

cout<<"Nhap so thu ba: "<<endl; cin>> c;

tbc=(a+b+c)/3;

tbn=(a*b*c)/3;

cout<<"Trung binh cong cua 3 so "<<a<<", "<<b<<", "<<c<<" la: "<<tbc<<endl;cout<<"Trung binh nhan cua 3 so "<<a<<", "<<b<<", "<<c<<" la: "<<tbn<<endl; return0;

}

* Kết quả:

Trang 7

Bài 03:

Viết chương trình nhập hai số nguyên từ bàn phím In ra tổng, tích, hiệu và thương của 2 số đó

1 Input: Số nguyên a, số nguyên b.

2 Output: Tổng, tích, hiệu, thương hai số a và b.

3 Process: Các bước thực hiện chương trình

+Bước 1: Khai báo biến: a, b, tổng, tích, hiệu, thương

cout<<"Nhap so nguyen thu nhat: ";cin>>a;

cout<<"Nhap so nguyen thu hai: ";cin>>b;

cout<<"\nTong hai so "<<a<<" va "<<b<<" la: "<<a<<" + "<<b<<" = "<<a+b<<endl;

cout<<"Tich hai so "<<a<<" va "<<b<<" la: "<<a<<" * "<<b<<" = "<<a*b<<endl;

cout<<"Hieu hai so "<<a<<" va "<<b<<" la: "<<a<<" - "<<b<<" = "<<a-b<<endl;

cout<<"Thuong hai so "<<a<<" va "<<b<<" la: "<<a<<" : "<<b<<" = "<<a/b<<endl; return 0;}

5.Test:

Trang 9

Bước 3: Dùng vòng lặp for nhập lần lượt từng số nguyên từ đầu đến cuối.

Bước 4: Dùng vòng lặp for lồng để so sánh từ đầu đến cuối từng phần tử, phần tử lớn hơn được gán vào biến max

int *head, *p, *q, n, max; cout <<

"Nhap so phan tu: "; cin >> n;

head = new int[n];

for (p = head; p < head + n; p++)

Trang 11

Bài 05:

Viết hàm liệt kê các ước số của n Viết chương trình nhập số nguyên dương n, gọi hàm trên và cho biết kết quả

1 Input: Số nguyên dương n.

2 Output: Danh sách ước số của số nguyên dương n.

3 Process:

Bước 1: Khai báo biến: n

Bước 2: Dùng vòng lặp for xét từ 1 cho đến n, lấy n chia cho từng số Bước 3:

In các số mà n chia hết trong Bước 2 ra màn hình

}

int main(){

int n;

cout<<"Nhap so nguyen duong n: "; cin>>n;

cout<<"Cac uoc so cua so nguyen duong n la : "<<endl;

lietkeuocso(n);

return 0;

}

Trang 12

5 Test:

Trang 13

Bước 3: Dùng vòng lặp for xét từ đầu đến cuối chuỗi, nếu tìm thấy kí tự thì xóa đi Bước 4:x

In ra chuỗi sau khi xóa kí tự x

n ;

}}

}

int main(){

char a[50]; char x;

cout<<"Nhap chuoi: "; fgets(a,

sizeof(a)+1, stdin);

Trang 14

cout<<"Chuoi ki tu vua nhap la:"<<endl;

Trang 15

d, Cho biết giá trị nhỏ nhất của mảng số nguyên

e, Tìm kiếm một phần tử x nào đó trong mảng các số nguyên

f, Sắp xếp các phần tử của mảng các số nguyên theo thứ tự giảm dầnViết chương trình chính Áp dụng lần lượt các hàm trên

- Dùng vòng lặp for xét từ đầu đến cuối mảng

Trang 16

- Chia từng phần tử cho 2, mỗi phần tử chia cho 2 bị dư sẽ tăng dem lên 1 đơn vị.

- in ra dem.d) - Khai báo biến min

- Dùng vòng for lồng xét từ đầu đến cuối mảng, so sánh các phần tử, phần tử bé hơn thì gán vào biến min

- In ra min.e) - nhập phần tử cần tìmx

- Dùng vòng for xét từ đầu đến cuối mảng, in ra những vị trí của những phần tửtrùng vs x

f) - Dùng vòng for lồng xét từ đầu đến cuối mảng, so sánh các phần tử với nhau rồisắp xếp theo thứ tự giảm dần

cout<<"\n\nGia tri nho nhat trong mang la: "<<min<<endl;

}

void timx(int n,int a[],int x){ for(int

i=0;i<n;i++)

if(a[i]==x){

Trang 17

cout<<" So "<<x<<" nam o vi tri a["<<i<<"] ";

}

}

void sapxep(int n, int a[],int tg){

cout<<"\n\nMang cac so nguyen sau khi sap xep theo thu tu giam dan la: "<<endl; for(int i=0; i<n-1;i++){

}

}

int main(){

int n,x,tg; int a[50];

int dem=0; int min;

cout<<"Nhap so phan tu cua mang: "; cin>>n;

Trang 19

Bài 08:

Viết các hàm thực hiện công việc sau:

a Nhập ma trận số nguyên kích thước n*m

b Hiện ma trận vừa nhập ra màn hình

c Hiện ra hàng có số lượng phần tử âm nhiều nhất

d Kiểm tra một số chính phương

e Liệt kê vị trí (dạng (i, j)) của các phần tử là số chính phương trong ma trận

f Đếm số lượng phần tử có giá trị bằng phần tử tại vị trí (0,0) của ma trận Viết chương trình chính Áp dụng lần lượt các hàm trên

Trang 20

-Khai báo biến dem

-Dùng for lồng chạy từ đầu đến cuối mảng

-So sánh từng phần tử với phần tử đầu tiên

-Mỗi lần xuất hiện dấu bằng thì dem tăng lên 1

void hienmt(int a[MAX][MAX],int n, int m){ for(int

void ammax(int a[MAX][MAX],int n, int m){

int max = 0, k, dem, vt;

for(int i = 0; i < n; i ++){

Trang 21

void chinhphuong(int a[MAX][MAX],int n, int m){ cout<<"So chinh

phuong co trong ma tran la: "<<endl; for(int i=0;i<n;i++){

for(int j=0;j<n;j++){

if(sqrt(a[i][j])*sqrt(a[i][j])==a[i][j]){

cout<<"a["<<i<<"]["<<j<<"]: "; cout<<a[i][j]<<endl;}

}}

cout<<"\nCo "<<dem-1<<" phan tu co gia tri bang phan tu tai vi tri a[0][0] trong ma tran"<<endl;

}

int main(){

int a[MAX][MAX];

int n,m; int dem;

cout<<"Nhap so hang: ";cin>>n;

cout<<"\nNhap so cot: ";cin>>m;

nhapmt(a,n,m);

Trang 22

cout<<"\nMa tran vua nhap la: "<<endl; hienmt(a,n,m);

Trang 23

Bài 09:

Viết các chương trình con thực hiện các công việc sau:

a nhập danh sách các sách gồm các thông tin: tên sách, tên tác giả, nhà xuất bản, năm xuất bản và lưu vào tệp sach.dat;

b hiện danh mục sách từ tệp sach.dat với đầy đủ các thông tin;

c nhập tên sách từ bàn phím, tìm sách vừa nhập và in các thông tin chi tiết ra màn hình;

d thống kê số lượng sách của thập niên 80

e cho biết tên các quyển sách đã xuất bản cách đây 30 năm

Viết chương trình chính để gọi các chương trình con đã được viết theo trật tự như trên

Trang 24

d.số lượng sách của thập niên 80

e.tên sách xuất bản cách đây 30 năm

3 Process:

a

-Tạo struct gồm các thông tin sách cần nhập

- Nhập số lượng sách ( )n

-Dùng vòng lặp for nhập lần lượt thông tin từng quyển sách

-Mở file sach.dat rồi tiến hành ghi dữ liệu vừa nhập vào file dưới dạng nhị phân.b

-Đọc file sach.dat rồi in ra danh sách sách vừa nhập

c

-Khai báo 1 biến chuỗi kí tự để nhập vào tên sách cần tìm

-Dùng vòng for so sánh chuỗi đó với lần lượt từng tên sách trong danh sách

-In ra thông tin các sách có tên trùng với chuỗi kí tự vừa

nhập d

-Dùng để tìm ra các sách được xuất bản vào thập kỉ 80 rồi in ra màn hình.If

e

-Dùng để tìm ra các sách được xuất bản vào 30 năm về trước rồi in ra màn hình.If

* Dùng switch () case để tạo menu

void nhap(sach a[],int &n){

cout<<"Nhap so luong sach: ";cin>>n; for(int

Trang 25

cout<<left<<setw(15)<<"Ten sach"<<setw(15)<<"Tac gia"<<setw(15)<<"Nha xuatban"<<"Nam xuat ban"<<endl;

cout<<"Thong tin sach can tim"<<endl;

cout<<left<<setw(15)<<"Ten sach"<<setw(15)<<"Tac gia"<<setw(15)<<"Nha xuatban"<<"Nam xuat ban"<<endl;

for( int i=0; i<n; i++)

{ if(strcmp(a[i].tensach,ten) ==

0){

cout<<left<<setw(15)<<a[i].tensach<<setw(15)<<a[i].tentacgia<<setw(15)<<a[i].nhaxb<<a[i].namxb<<endl;

}

}

Trang 26

void thongke80(sach a[50],int n){

cout<<"\nDanh sach sach xuat ban vao thap nien 80 la :"<<endl; cout<<left<<setw(15)<<"Ten

sach"<<setw(15)<<"Tac gia"<<setw(15)<<"Nha xuatban"<<"Nam xuat ban"<<endl;

void tensach30(sach a[], int n){

cout<<"\n\nDach sach sach xuat ban vao 30 nam truoc la : "<<endl; cout<<left<<setw(15)<<"Ten

sach"<<setw(15)<<"Tac gia"<<setw(15)<<"Nha xuatban"<<"Nam xuat ban"<<endl;

cout<<"\n=============== MENU ==============="<<endl;

cout<<"1 Nhap thong tin

sach"<<endl; cout<<"2 Hien thong tin

sach"<<endl; cout<<"3 Tim kiem

sach"<<endl;

cout<<"4 Thong ke sach cua thap nien 80"<<endl;

cout<<"5 Sach xuat ban cach day 30 nam"<<endl;

cout<<"0 Thoat chuong trinh"<<endl;

cout<<"\nMoi chon: ";

cin>>chon;

switch(chon){

case 1: nhap(a,n); ghif("sach.dat",a,n); break;

case 2: docf("sach.dat",a,n); break; case 3:

timsach(a,n); break;

case 4: thongke80(a,n); break; case 5:

tensach30(a,n); break; case 0: break;

Trang 27

default: cout<<"Lua chon khong hop le!"<<endl;}

} while(chon!=0); return

0;

}

5 Test:

Trang 28

Bài 10:

Viết các chương trình con thực hiện các công việc sau:

a nhập danh sách sinh viên gồm các thông tin: mã sinh viên, tên sinh viên, ngày sinh, giới tính, điểm trung bình; việc nhập sẽ dừng khi nhập mã sinh viên là 0

b hiện danh sách vừa nhập ra màn hình;

c sắp xếp danh sách sinh viên theo thứ tự alphabet của tên sinh viên và ghi vào tệpsv.dat (dạng nhị phân);

d tìm sinh viên nữ có điểm trung bình thấp nhất

e đếm số sinh viên nam

Trang 29

Viết chương trình chính để gọi các chương trình con theo trật tự trên.

1.Input:

a danh sách sinh viên

b danh sách sinh viên

c danh sách sinh viên

d danh sách sinh viên

e danh sách sinh viên

2.Output:

a k có

b danh sách vừa nhập

c danh sách đã được sắp xếp

d sinh viên nữa có điểm tb thấp nhất

e số sinh viên nam

3 Process:

a

-Tạo Struct gồm các thông tin sinh viên cần nhập

-Dùng vòng for nhập dữ liệu từng sinh viên một, dùng hàm if ngay sau khi nhập mã sinh viên, nếu mã sinh viên = 0 thì kết thúc luôn quá trình nhập

-Dùng for và để tìm ra những sinh viên là nữif

-So sánh điểm các sinh viên nữ với nhau

-In ra sinh viên có điểm thấp

nhất e

-Khai báo biến dem=0 và 1 xâu kí tự “Nam”

- Dùng for chạy từ đầu đến cuối danh sách

- So sánh phần giới tính của từng người với “Nam”

- Nếu giống nhau thì tăng biến dem lên 1 đơn vị

- In ra dem sau khi kết thúc vòng lặp

* Dùng switch () case để tạo menu

Trang 30

cout<<"Nhap thong tin sinh vien thu "<<i+1<<endl;

cout<<"Nhap ma sinh vien: ";

fflush(stdin);

cin>>a[i].masv;

if (t.compare(a[i].masv)==0)break;

}

void hien(sv a[],int &n){

cout<<"\n\t\t\tDANH SACH SINH VIEN "<<endl<<endl;

cout<<left<<setw(15)<<"Ma sinh vien"<<setw(15)<<"Ten sinhvien"<<setw(15)<<"Ngay sinh"<<setw(15)<<"Gioi tinh"<<"Diem TB"<<endl;

for(int i=0;i<n;i++){

cout<<left<<setw(15)<<a[i].masv<<setw(15)<<a[i].tensv<<setw(15)<<a[i].ns<<setw(15)<<a[i].gt<<a[i].dtb<<endl;

}

}

void sx(sv a[], int n){

for( int i=0; i<n-1; i++){

for( int j=i+1; j<n; j++){

if(a[i].tensv.compare(a[j].tensv)>0){

Trang 32

cout<<left<<setw(15)<<"Ma sinh vien"<<setw(15)<<"Ten sinh vien"<<setw(15)<<"Ngay sinh"<<setw(15)<<"Gioi tinh"<<"Diem TB"<<endl;

for( int i=0; i<n; i++)

{ if(t.compare(a[i].gt) ==

0){

if(a[i].dtb == tbmin){

cout<<left<<setw(15)<<a[i].masv<<setw(15)<<a[i].tensv<<setw(15)<<a[i].ns<<setw(15)<<a[i].gt<<a[i].dtb<<endl;

}

}

}

}

void demnam(sv a[],int n){ string s

= "Nam"; int dem=0;

for(int i=0;i<n;i++){

if(s.compare(a[i].gt)==0){

dem++;

}} cout<<"\nSo sinh vien nam la: "<<dem<<endl;

}

int main(){

sv a[100]; int n,

chon; do{

cout<<"\n=============== MENU ==============="<<endl;

cout<<"1 Nhap danh sach sinh vien"<<endl;

cout<<"2 Hien danh sach sinh vien"<<endl;

cout<<"3 Sap xep danh sach sinh vien theo alphabet va ghi vao file sinhvien.dat"<<endl;cout<<"4 Sinh vien nu co diem trung binh thap nhat"<<endl;

cout<<"5 Dem so sinh vien nam"<<endl;

cout<<"0 Thoat chuong trinh"<<endl;

Trang 33

5 Test:

Ngày đăng: 14/01/2025, 15:53

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN