Tài liệu học tập môn Thực tập lập trình cơ bản (Phần 2)

LAB 7: BÀI TẬP MẢNG MỘT CHIỀU  
A. MỤC TIÊU  
Trang bị cho sinh viên ky năng lập trinh cơ bản trong C++:  
̃
̀
+ Khai báo mảng  
+ Các thao tác trên mảng  
+ Viết chương trình sử dụng mảng 1 chiều  
+ Phát hiện và sửa lỗi  
B. NỘI DUNG  
Mảng một chiều  
a. Khai báo  
Có các dạng sau:  
Dạng 1: Khai báo mảng với số phần tử xác định  
<tên kiểu><tên mảng>[số thành phần] ; //không khởi tạo  
Dạng 2: Vừa khai báo vừa gán giá trị  
<tên kiểu><tên mảng>[số thành phần] = { dãy giá trị } ; //có khởi tạo  
Dạng 3: Khai báo mảng với số phần tử không xác định và gán giá trị  
<tên kiểu><tên mảng>[ ] = { dãy giá trị } ; //có khởi tạo  
b. Truy xuất các phần tử của mảng  
Các phần tử mảng được đánh số thứ tự bắt đầu từ 0, số thứ tự này gọi là chỉ số  
mảng. Các phần tử mảng có thể được truy xuất như sau:  
<tên biến mảng>[chỉ số]  
̀
̀
̀
C. YÊU CÂU PHÂN CỨNG, PHÂN MỀM  
Máy tinh cài hệ điều hành Windows, RAM tối thiểu 256MB.  
́
Phần mềm C FREE 5.0.  
D. KẾT QUẢ SAU KHI HOÀN THÀNH  
Sinh viên thành thạo cách khai báo và định nghĩa mảng một chiều, viết chương  
trình sử dụng mảng một chiều áp dụng giải các bài tập từ đơn giản đến phức tạp.  
E. HƯỚNG DẪN CHI TIẾT  
1. Cho một mảng A gồm 100 phần tử thuộc kiểu thực, hãy xây dựng hàm viết chương  
trình nhập mảng và xuất mảng.  
Hướng dẫn:  
#include<conio.h>  
76  
#include<iostream.h>  
int main()  
{
float a[100], n, tg;  
int i, j;  
cout << "Cho biet so phan tu n = " ; cin >> n ;  
for (i=0; i<n; i++) {cout<<"a[" <<i<< "] = "; cin >> a[i] ;} // nhap DL  
for (i=0; i<n; i++)  
{
for (j=i+1; j<n; j++)  
if (a[i] > a[j]) { tg = a[i]; a[i] = a[j]; a[j] = tg; } // Doi cho  
}
for (i=0; i<n; i++)  
cout << a[i] ; // In ket qua  
return 0;  
}
Kết quả chạy chương trình:  
2. Cho một mảng A gồm 100 phần tử thuộc kiểu thực, hãy viết chương trình nhập  
mảng và sắp xếp mảng theo thứ tự tăng dần của dãy số.  
Hướng dẫn:  
#include<conio.h>  
#include<iostream.h>  
int main()  
{
float a[100], n, tg;  
int i, j;  
77  
cout << "cho biet so phan tu n = " ; cin >> n ;  
for (i=0; i<n; i++) {cout<<"a[" <<i<< "] = "; cin >> a[i] ;} // nhap DL  
for (i=0; i<n; i++)  
{
for (j=i+1; j<n; j++)  
if (a[i] > a[j]) { tg = a[i]; a[i] = a[j]; a[j] = tg; } // Doi cho  
}
for (i=0; i<n; i++)  
cout << a[i] ; // In ket qua  
return 0;  
}
Kết quả chạy chương trình:  
3. Viết chương trình nhập vào mảng A có n phần tử sắp xếp các phần tử của mảng  
theo thứ tự tăng dần và in ra màn hình số hoàn hảo có trong mảng.  
Hướng dẫn:  
#include<iostream.h>  
#include<math.h>  
#include<conio.h>  
#include<string.h>  
int main()  
{
int a[100],i,n,j,tam;  
cout<<"nhap n=";  
cin>>n;  
for(i=0;i<n;i++)  
{// nhap mang  
78  
cout<<"Nhap a["<<i<<"] =";  
cin>>a[i];  
}
int dem;  
cout<<"cac so hoan hao la ";  
for(i=0;i<n;i++)  
{
dem=0;  
for(j=1;j<a[i];j++)  
if((a[i]%j)==0)dem=dem+j;  
if(dem==a[i])cout<<a[i]<<" ";  
}
//sap xep tang dan trong mang  
for(i=0;i<n;i++)  
for(j=i+1;j<n;j++)  
if(a[i]>a[j])  
{
tam=a[i];  
a[i]=a[j];  
a[j]=tam;  
}
cout<<endl;  
cout<<"day thu tu duoc sap xep tang dan la:";  
for(i=0;i<n;i++)cout<<a[i]<<" ";  
return 0;  
}
Kết quả chạy chương trình:  
79  
4. Viết chương trình nhập vào mảng có n phần tử. Xây dựng hàm đếm các phần tử âm,  
đếm các phần tử dương có trong mảng.  
Hướng dẫn:  
#include <iostream>  
#include<time.h>  
#define MAX 100  
using namespace std;  
void NhapMang(int a[], int n)  
{
for(int i=0; i<n; i++)  
{
cout<<"\nPhan tu thu " << i <<": ";  
cin>> a[i];  
}
}
void MangNgauNhien(int a[], int n)  
{
srand((unsigned)time(NULL));  
for(int i=0; i<n; i++)  
a[i]=rand()%100 - rand()%100;  
}
void XuatMang(int a[], int n)  
{
for(int i=0; i<n; i++)  
cout<< a[i] <<"\t";  
}
void DemAmDemDuong90(int a[], int n)  
{
int DemAm=0, DemDuong=0;  
for(int i=0; i<n; i++)  
{
80  
if(a[i]<0)  
DemAm = DemAm + 1;  
else  
DemDuong = DemDuong + 1;  
}
cout<<"\nSo phan tu am co trong mang: "<< DemAm;  
cout<<"\nSo phan tu duong co trong mang: "<< DemDuong;  
}
int main()  
{
int a[MAX], n, x;  
cout<<"NHap so luong phan tu cua mang: "; cin>>n;  
//NhapMang(a,n);  
MangNgauNhien(a,n);  
XuatMang(a,n);  
DemAmDemDuong90(a,n);  
cout<<endl;  
}
Kết quả chạy chương trình:  
5. Viết chương trình nhập vào mảng có n phần tử, in ra vị trí bất kỳ của các phần tử  
trong mảng.  
Hướng dẫn:  
#include <iostream>  
using namespace std;  
int mins(int a[],int &n,int &x)  
{
int min=0;  
81  
for(int i=1;i<=n;i++)  
{
if(a[i]==x)  
{
return i;  
break;  
}
}
}
int main()  
{
int n;int a[100];int x;  
cout<<"Nhap vao n =";  
cin>>n;  
for(int i=1;i<=n;i++)  
{
cout<<"Nhap a ["<<i<<"] la :";  
cin>>a[i];  
}
cout<<"Phan tu x la:";  
cin>>x;  
cout<<"Phan tu "<<x<<"trong day o vi tri thu "<<mins(a,n,x);  
return 0;  
}
Kết quả chạy chương trình:  
6. Xây dựng hàm viết chương trình nhập vào mảng A có n phần tử yêu cầu:  
82  
- Sắp xếp các phần tử của mảng theo thứ tự tăng dần.  
- Sắp xếp các phần tử của mảng theo thứ tự giảm dần.  
Hướng dẫn:  
#include <iostream>  
using namespace std;  
void nhapmang(int a[],int n)  
{
for(int i=1;i<=n;i++)  
{
cout<<"Nhap a["<<i<<"]";  
cin>>a[i];  
}
}
void giamdan(int a[],int n)  
{
int tam;  
for(int i=1;i<=n;i++)  
{
for(int j=1;j<=n;j++)  
if(a[i]>a[j])  
{
tam=a[i];  
a[i]=a[j];  
a[j]=tam;  
}
}
}
void tangdan(int a[],int n)  
{
int tam ;  
for(int i=1;i<=n;i++)  
{
for(int j=1;j<=n;j++)  
83  
if(a[i]<a[j])  
{
tam=a[i];  
a[i]=a[j];  
a[j]=tam;  
}
}
}
void xuatmang(int a[],int n)  
{
for(int i=1;i<=n;i++)  
{
cout<<a[i]<<endl;  
}
}
int main()  
{
int n;int a[100];  
cout<<"Nhap n";  
cin>>n;  
nhapmang(a,n);  
tangdan(a,n);  
cout<<"Sap xep mang theo thu tu tang dan "<<endl;  
xuatmang(a,n);  
cout<<endl;  
giamdan(a,n);  
cout<<"Sap xep mang theo thu tu giam dan "<<endl;  
xuatmang(a,n);  
return 0;  
}
Kết quả chạy chương trình:  
84  
7. Xây dựng các hàm viết chương trình tìm giá trị đầu tiên trong mảng có chữ số đầu  
tiên là chữ số lẻ.  
Hướng dẫn:  
#include <iostream>  
#include<math.h>  
using namespace std;  
void NhapMang(int a[], int n) {  
for (int i = 0; i < n; i++) {  
cout << "Nhap a[" << i << "]: ";  
cin >> a[i];  
}
}
bool check(int n) {  
n = abs(n);  
while (n > 9) {  
n /= 9;  
}
if (n % 2 == 1) return true;  
return false;  
}
int Fun(int a[], int n) {  
for (int i = 0; i < n; i++) {  
85  
if (check(a[i]))  
return a[i];  
}
return 0;  
}
int main() {  
int a[100];  
int n;  
cout << "Nhap vao n: ";  
cin >> n;  
NhapMang(a, n);  
if (Fun(a, n) == 0)  
cout << "Khong ton tai gia tri thoa man bai toan";  
else  
cout << "Gia tri thoa man bai toan la: " << Fun(a, n);  
system("pause");  
return 0;  
}
Kết quả chạy chương trình:  
8. Viết chương trình nhập mảng n số thực, tìm và in ra phần tử nhỏ nhất, lớn nhất, tính  
và in ra trung bình cộng của các phần tử trong mảng. In ra các phần tử nhỏ hơn, lớn  
hơn, trung bình cộng.  
Hướng dẫn:  
#include<conio.h>  
#include<iostream.h>  
#define max 100  
int main()  
{
86  
int i,j,n;  
float a[max],tbc,pmax,pmin;  
clrscr();  
cout<<"Nhap so phan tu n<"<<max<<", n= "; cin>>n;  
cout<<"Nhap cac phan tu cua mang :\n";  
for (i=0;i<n;i++)  
{cout<<"A["<<i+1<<"]="; cin>>a[i];  
}
pmax=pmin=tbc=a[0];  
for(i=1;i<n;i++)  
{tbc+=a[i];  
if(pmax<a[i])pmax=a[i];  
if(pmin>a[i])pmin=a[i];  
}
tbc=tbc/n;  
cout<<"\nPhan tu max="<<pmax;  
cout<<"\nPhan tu min="<<pmin;  
cout<<"\nGia tri TBC="<<tbc;  
cout<<"\nCac phan tu < TBC:\n";  
for (i=0;i<n;i++)if(a[i]<tbc) cout<<a[i]<<" ";  
cout<<"\nCac phan tu > TBC:\n";  
for (i=0;i<n;i++)if(a[i]>tbc) cout<<a[i]<<" ";  
}
Kết quả chạy chương trình:  
9. Xây dựng hàm viết chương trình nhập mảng n phần tử, in ra mảng trước và sau khi  
sắp xếp.  
Hướng dẫn:  
#include<conio.h>  
87  
#include<iostream.h>  
#define max 100  
void nhap(int[],int);  
void sapxep(int[],int);  
void xuat(int[],int);  
int main()  
{
int a[max],n;  
cout<<"Nhap so phan tu n<"<<max<<", n= "; cin>>n;  
nhap(a,n);  
cout<<"Mang truoc khi sap xep :\n";  
xuat(a,n);  
sapxep(a,n);  
cout<<"\nMang sau khi sap xep :\n";  
xuat(a,n);  
}
void nhap(int a[],int n)  
{
int i;  
cout<<"Nhap cac phan tu cua mang :\n";  
for (i=0;i<n;i++)  
{cout<<"A["<<i+1<<"]=";  
cin>>a[i];  
}
}
void xuat(int a[],int n)  
{
int i,j;  
for (i=0;i<n;i++) cout<<a[i]<<" ";  
}
void sapxep(int a[],int n)  
{
int i,j,tg;  
88  
for (i=0;i<n-1;i++)  
for (j=i+1;j<n;j++)  
if (a[i]>a[j])  
{
tg=a[i]; a[i]=a[j]; a[j]=tg;  
}
}
Kết quả chạy chương trình:  
10. Viết chương trình nhập vào mảng A có n phần tử sắp xếp các phần tử của mảng  
theo thứ tự tăng dần (sử dụng hàm).  
Hướng dẫn:  
#include <iostream>  
using namespace std;  
#define MAX 100  
void Nhap_Mang(int A[],int n)  
{
for(int i=0;i<n;i++)  
{
cout<<"A["<<i<<"]=";  
cin>>A[i];  
}
}
void Xuat_Mang(int A[],int n)  
{
for(int i=0;i<n;i++)  
cout<<A[i]<<" ";  
89  
}
void Xap_Xep(int A[],int n)  
{
bool kt=false;  
while(kt==false)  
{
for(int i=0;i<n-1;i++)  
{
if(A[i]>A[i+1])  
{
int y=A[i];  
A[i]=A[i+1];  
A[i+1]=y;  
}
}
kt=true;  
for(int i=0;i<n-1;i++)  
if(A[i]>A[i+1])  
{
kt=false;  
break;  
}
}
}
int main()  
{
int A[MAX];  
int n;  
cout<<"nhap so phan tu cua mang = ";  
cin>>n;  
Nhap_Mang(A,n);  
Xap_Xep(A,n);  
Xuat_Mang(A,n);  
90  
system("pause");  
return 0;  
}
Kết quả chạy chương trình:  
11. Viết chương trình nhập vào một dãy số. In ra màn hình tổng các số chia hết cho 3.  
Hướng dẫn:  
#include <iostream>  
#include <conio.h>  
using namespace std;  
int main()  
{
int a[50],n,i,tong=0;  
cout<<"Nhap so phan tu cua day";  
cin>>n;  
for(i=0;i<n;i++)  
{
cout<<"a["<<i<<"]=";  
cin>>a[i];  
}
for(i=0;i<n;i++)  
{
if(a[i]%3==0)  
tong+=a[i];  
}
cout<<"Day so ban nhap la:";  
for(i=0;i<n;i++)  
cout<<a[i]<<" , ";  
91  
cout<<"  
\n";  
cout<<"---------------\n";  
cout<<"tong cac so chia het cho 3 la:"<<tong<<endl;  
system("pause");  
}
Kết quả chạy chương trình:  
12. Viết chương trình lưu trữ 1 mảng có n số nguyên (0<n<100). Hãy thực hiện các  
yêu cầu sau:  
a) Nhập các phần tử cho mảng và hiện thị mảng sau khi nhập  
b) In ra màn hình trung bình cộng các số lẻ trong mảng.  
c) In ra màn hình mảng đã được sắp xếp theo thứ tự giảm dần.  
Hướng dẫn:  
#include <iostream>  
using namespace std;  
int main()  
{
int n; int s=0; int dem=0; int tam; int a[100];  
cout<<"Nhap n = ";cin>>n;  
for (int i=1;i<=n;i++)  
{
cout<<"Nhap mang a["<<i<<"]=";  
cin>>a[i];  
}
for(int i=1;i<=n;i++)  
{
if(a[i]%n!=0)  
{
92  
s=s+a[i];dem++;  
}
}
cout<<"Trung binh cong cac so le trong mang la :"<<s/dem;  
for(int i=1;i<=n;i++)  
{for(int j=i+1;j<=n;j++)  
if(a[i]<a[j])  
{
tam=a[i];  
a[i]=a[j];  
a[j]=tam;  
}
}
cout<<endl;  
cout<<"Mang moi sap xep theo thu tu giam dan la :";  
for (int i=1;i<=n;i++)  
{cout<<a[i]<<" ";  
}
return 0;  
}
Kết quả chạy chương trình:  
13. Viết chương trình nhập mảng A có tối đa 100 phần tử. Viết hàm tính tổng, hàm  
tính trung bình và hàm tính tổng chẵn tổng lẻ.  
Hướng dẫn:  
#include <iostream>  
using namespace std;  
#define MAX 100  
93  
void Nhap_Mang(int a[],int n)  
{
for(int i=0;i<n;i++)  
{
cout<<"a["<<i<<"]= ";  
cin>>a[i];  
}
}
void Xuat_Mang(int a[],int n)  
{
for(int i=0;i<n;i++)  
{
cout<<a[i]<<" ";  
}
}
int Tinh_Tong(int a[],int n)  
{
int S=0;  
for(int i=0;i<n;i++)  
{
S+=a[i];  
}
return S;  
}
int Tinh_Tong_Chan(int a[],int n)  
{
int S=0;  
for(int i=0;i<n;i++)  
if(a[i]%2==0)  
S+=a[i];  
return S;  
}
int Tinh_Tong_Le(int a[],int n)  
94  
{
}
int S=0;  
for(int i=0;i<n;i++)  
if(a[i]%2!=0)  
S+=a[i];  
return S;  
int main()  
{
int a[MAX];  
int n;  
cout<<"Nhap so phan tu can dung cua mang";  
cin>>n;  
Nhap_Mang(a,n);  
Xuat_Mang(a,n);  
cout<<"\nTong day la S ="<<Tinh_Tong(a,n);  
cout<<"\nTrung binh TB= "<<Tinh_Tong(a,n)*1.0/n;  
cout<<"\nTong Chan la S1= "<<Tinh_Tong_Chan(a,n);  
cout<<"\nTong Le la S2= "<<Tinh_Tong_Le(a,n);  
system("pause");  
return 0;  
}
Kết quả chạy chương trình:  
14. Dùng hàm viết chương trình nhập vào mảng A có n phần tử yêu cầu:  
- Tính tổng các phần tử trong mảng.  
95  
Tải về để xem bản đầy đủ
pdf 106 trang yennguyen 20520 Free
Bạn đang xem 20 trang mẫu của tài liệu "Tài liệu học tập môn Thực tập lập trình cơ bản (Phần 2)", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdftai_lieu_hoc_tap_mon_thuc_tap_lap_trinh_co_ban_phan_2.pdf