Bài tập lập trình C - pdf 16

Download miễn phí Bài tập lập trình C



Đề bài: Nhập n phần tử số nguyên. Nhập phần tử cần tìm kiếm X. Nếu trong n phần tử đã nhập có X thì báo "tìm thấy", "số lần tìm thấy" và "các vị trí tìm thấy", ngược lại báo "không tìm thấy"
 
Ví dụ: mảng A gồm các phần tử (theo thứ tự chỉ số tăng dần từ 0) là 5, 2, 1, 6, 2, 4, 1, 3
giá trị tìm kiếm X = 2
vậy kết quả sẽ là: Tìm thấy 2 (2 lần) tại vị trí: 1, 4
 
Phân tích:
sau khi nhập mảng
ta sẽ đếm số lượng phần tử X có trong mảng
nếu đếm thấy có: tiến hành liệt kê các vị trí
ngược lại thì thông báo không có.
Đơn giản vậy thôi
ta sẽ chia các công việc ra từng hàm riêng
hàm nhập kinh điển
hàm đếm trả về số lượng phần tử có giá trị bằng giá trị cho trước
hàm liệt kê: tươg tự hàm trên, mỗi khi gặp a bằng x thì in vị trí ra (vị trí là i)
 



Để tải bản Đầy Đủ của tài liệu, xin Trả lời bài viết này, Mods sẽ gửi Link download cho bạn sớm nhất qua hòm tin nhắn.
Ai cần download tài liệu gì mà không tìm thấy ở đây, thì đăng yêu cầu down tại đây nhé:
Nhận download tài liệu miễn phí

Tóm tắt nội dung tài liệu:

nếu số đó lớn hơn biến max thì max sẽ bằng số đó Cách 2: dùng mảng (kinh điển) + nhập mảng n phần tử số nguyên từ bàn phím (đã có thuật toán và code ở trên) + gán tạm thời min và max bằng phần tử đầu tiên + duyệt qua toàn mảng: nếu giá trị đang duyệt bé hơn min hay lớn hơn max thì cập nhật lại min và max Cách 3: dài dòng nhất + nhập mảng n phần tử số nguyên từ bàn phím (đã có thuật toán và code ở trên) + sắp xếp tăng dần (hay giảm dần) + nếu sắp xếp tăng dần thì min sẽ là phần tử đâu tiên, và max sẽ là phần tử cuối cùng trong mảng đã sắp xếp. giờ muộn roài, đi ngủ cái đã, lúc khác post code lên.
Bài 16. Hãy xây dựng một hàm để nhập từ bàn phím một mảng số thực. Viết một chương trình sử dụng hàm đã xây dựng được ở trên để nhập số liệu cho hai mảng số thực, một mảng có n phẩn tử, và một mảng có m phần tử, in ra màn hình hai cột song song, mỗi cột là một mảng với ô cuối cùng là tổng của các phần tử trong mảng, và cuối cùng là tổng của hai mảng. Giải:
Code:
#include
#include
#include
//Do bài yêu cầu nhập hai mang
//Chúng ta cho thêm tham số name để hiển thị tên mạng khi nhập
void nhapMang(double *a,char *name, int n){
for (int i=0; i<n;i++)
{
cout<<name<<"["<<i+1<<"]=";
cin>>a;
}
}
void main(){
double a[100],b[100];
int n,m,i;
//Nhập số lượng phần tử mảng A
cout>n;
//Nhập số lượng phần tử mảng B
cout>m;
//Nhap hai mang a[N], b[M]
nhapMang(a,"a",n);
nhapMang(b,"b",m);
// Thiết lập định dạng
cout<<setiosflags(ios::showpoint|ios::fixed);
cout<<setprecision(2);
//Max chua so phan tu lon hon
int max=m>n?m:n;
double s1=0.0,s2=0.0;//Tong mang a la s1, tong mang b la s2
cout<<endl<<setw(5)<<"TT"<<setw(10)<<"A"<<setw(10)<<"B";
cout<<"\n---------------------------------";
for(i=0;i<max;i++)
{
if ((i<m) && (i<n))
{
cout<<endl<<setw(5)<<i+1<<setw(10)<<a<<setw(10)<<b;
s1=s1+a;
s2=s2+b;
}
//Luc nay chi con phan tu cua mang A hoac B
else if (i<n)//Neu i<n thi In phan tu cua mang a
{
cout<<endl<<setw(5)<<i+1<<setw(10)<<a;
s1=s1+a;
}
else if (i<m)//Neu i<m thi In phan tu cua mang b
{
cout<<endl<<setw(5)<<i+1<<setw(10)<<" "<<setw(10)<<b;
s2=s2+b;
}
}
cout<<"\n---------------------------------";
cout<<endl<<setw(5)<<"Tong:"<<setw(10)<<s1<<setw(10)<<s2<<endl;
cout<<"Tong: s1+s2="<<s1+s1<<endl;
}
Đề bài: Nhập n phần tử số nguyên, in ra màn hình giá trị nhỏ nhất và lớn nhất trong mảng Cách 1 (đơn giản nhất): +đầu tiên yêu cầu người dùng nhập số lượng phần tử là n +lặp n lần, mỗi lần nhập 1 giá trị, vừa nhập xong là so sánh với biến min và max, nếu giá trị vừa nhập bé hơn min thì min sẽ bằng số vừa nhập, và nếu số đó lớn hơn biến max thì max sẽ bằng số đó
Code:
#include
void main(){
int x, i, n, min, max;
cout > n; //nhap so luong
if ( n > 0 ) { //so luong > 0
cout> x; //nhap a[0]
min = max = x; //min=max=a[0]
for ( i = 2 ; in
cout> x; //nhap a
if ( x < min ) min = x; //cap nhat min
if ( x > max ) max = x; //cap nhat max
}
cout << "Gia tri lon nhat = " << max << endl; //in ket qua
cout << "Gia tri nho nhat = " << min << endl;
}
}
Đề bài: Nhập n phần tử số nguyên, in ra màn hình giá trị nhỏ nhất và lớn nhất trong mảng Cách giải 2: dùng mảng (kinh điển) + nhập mảng n phần tử số nguyên từ bàn phím (đã có thuật toán và code ở trên) + gán tạm thời min và max bằng phần tử đầu tiên + duyệt qua toàn mảng: nếu giá trị đang duyệt bé hơn min hay lớn hơn max thì cập nhật lại min và max
Code:
#include
void NhapMang(int *a, int &n){
cout > n;
cout << "Nhap mang" << endl;
for (int i = 0; i < n ; i++){
cout << "a[" << i << "] = ";
cin >> *(a+i);
}
}
void TimMinMax(int a[], int n, int &min, int &max){
min = max = a[0];
for (int i = 1; i < n ; i++){
if ( a < min ) min = a;
if ( a > max ) max = a;
}
}
void main(){
int a[100], n, min, max;
NhapMang (a, n);
TimMinMax (a, n, min, max);
cout << "Gia tri lon nhat = " << max << endl;
cout << "Gia tri nho nhat = " << min << endl;
}
Chú ý: biến min và max trong đối số hàm TimMminMax là tham chiếu nhé void TimMinMax(int a[], int n, int &min, int &max) ở code trên hàm tìm min và max dùng cách kinh điển, ta có thể thay đổi bằng cách dùng con trỏ như sau:
Code:
void TimMinMax(int *a, int n, int &min, int &max){
min = max = *a;
for (int i = 1, *p=++a; i < n ; i++, p++){
if ( *p < min ) min = *p;
if ( *p > max ) max = *p;
}
}
chú ý a tương đương với con trỏ trỏ vào đầu mảng nên *a tương đương với a[0] ban đầu p trỏ vào phần tử a[1] (khối khởi tạo con trỏ *p=++a, tức là p trỏ tới a[1] ) trong mỗi vòng lặp p trỏ vào a, và cập nhật min và max nếu a max sau đó p trỏ đến phần tử tiếp theo (lệnh p++ ) (biến i ở đây đảm bảo duyệt sẽ duyệt từ a[1] đến a[n-1] : duyệt hết) Có ai không hiểu cách làm việc của hàm tìm min max thứ 2 này không?
Đề bài: Nhập n phần tử số nguyên, in ra màn hình giá trị nhỏ nhất và lớn nhất trong mảng Cách giải 3: dài dòng nhất + nhập mảng n phần tử số nguyên từ bàn phím (đã có thuật toán và code ở trên) + sắp xếp tăng dần (hay giảm dần) + nếu sắp xếp tăng dần thì min sẽ là phần tử đâu tiên, và max sẽ là phần tử cuối cùng trong mảng đã sắp xếp.
Code:
#include
void NhapMang(int *a, int &n){
cout > n;
cout << "Nhap mang" << endl;
for (int i = 0; i < n ; i++){
cout << "a[" << i << "] = ";
cin >> *(a+i);
}
}
void SapXep(int a[], int n) { //sắp xếp tăng dần
for (int i = 0; i < n - 1; i++)
for (int j = i + 1; j < n; j++)
if ( a > a[j] ){
int tg = a;
a = a[j];
a[j] = tg;
}
}
void main(){
int a[100], n;
NhapMang (a, n);
SapXep (a, n);
cout << "Gia tri nho nhat = " << a[0] << endl;
cout << "Gia tri lon nhat = " << a[n-1] << endl;
}
Đề bài: Nhập n phần tử số nguyên. Nhập phần tử cần tìm kiếm X. Nếu trong n phần tử đã nhập có X thì báo "tìm thấy", "số lần tìm thấy" và "các vị trí tìm thấy", ngược lại báo "không tìm thấy" Ví dụ: mảng A gồm các phần tử (theo thứ tự chỉ số tăng dần từ 0) là 5, 2, 1, 6, 2, 4, 1, 3 giá trị tìm kiếm X = 2 vậy kết quả sẽ là: Tìm thấy 2 (2 lần) tại vị trí: 1, 4 Phân tích: sau khi nhập mảng ta sẽ đếm số lượng phần tử X có trong mảng nếu đếm thấy có: tiến hành liệt kê các vị trí ngược lại thì thông báo không có. Đơn giản vậy thôi ta sẽ chia các công việc ra từng hàm riêng hàm nhập kinh điển hàm đếm trả về số lượng phần tử có giá trị bằng giá trị cho trước hàm liệt kê: tươg tự hàm trên, mỗi khi gặp a bằng x thì in vị trí ra (vị trí là i) Code C++ đây thực hành nào:
Code:
#include
void NhapMang(int a[], int &n){
cout > n;
for (int i = 0; i < n ; i++){
cout > a;
}
}
int DemSoLan(int a[], int n, int x) {
int kq = 0;
for (int i=0; i < n; i++) if (a == x) kq++;
return kq;
}
void LietKe(int a[], int n, int x) {
for (int i = 0; i < n; i++) if (a == x) cout << i << " ";
}
void main(){
int a[100], n, x, d;
NhapMang (a, n);
cout > x;
d == DemSoLan (a, n, x);
if (d > 0){
cout << "Tim thay " << x << " (" << d << " lan) tai vi tri: ";
LietKe (a, n, x);
}
else
cout << "Khong tim thay " << x;
}
Đề bài: Nhập n phần ...
Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status