Hàm Tính Giá Trị Trung Bình Số Hoàn Hảo Trong Mảng C/C++
Có thể bạn quan tâm
Bài toán về số hoàn hảo là một dạng bài toán khá hay. Trong bài viết này, mình sẽ giúp các bạn giải quyết bài tập viết hàm tính giả trị trung bình các số hoàn hảo trong mảng bẳng một chiều bằng ngôn ngữ c.
Mục lục bài viết
- 1. Giới thiệu bài toán
- 2. Giải quyết bài toán
- 2.1 Ý tưởng giải quyết
- 2.2 Code C gợi ý giải quyết bài toán
- 2.2.1 Hàm kiểm tra số hoàn hảo bằng ngôn ngữ c
- 2.2.2 Hàm tính trung bình các số hoàn hảo trong mảng code C
- 2.2.3 Chương trình hoàn chỉnh
- 2.3 Code C++ giải quyết bài toán tính giá trị trung bình số hoàn hảo
1. Giới thiệu bài toán
Một bài toán liên quan đến số hoàn hảo. Bài toán cần sử dụng tương đối nhiều các kiến thức về ngôn ngữ lập trình C như : Mảng, vòng lặp (for, while. . ), các cấu trúc điều kiện (if, else. . .).
Đây là bài toán mình đánh giá ở mức cơ bản, nên chắc chắn bạn sẽ làm được sau khi tham khảo bài viết này.
Đề bài:
Viết hàm tính giá trị trung bình các số hoàn hảo trong mảng một chiều a có n phần tử. Hàm trả về giá trị trung bình của các phần tử là số hoàn hảo. Ngược lại hàm trả về giá trị 0.
2. Giải quyết bài toán
Với bài toán này bạn cần nắm được một chút kiến thức về số hoàn hảo. Nắm được cú pháp của ngôn ngữ C là hoàn toàn giải được.
2.1 Ý tưởng giải quyết
Đề giải được bài toán, trước tiên bạn phải hiểu định nghĩa thế nào là số hoàn hảo?
Số hoản hảo là số có tổng các ước thật sự của nó bằng chính nó
Ví dụ số 6 là số hoàn hảo vì:
Các ước thật sự của số 6 là: 1, 2, 3 (lưu ý không tính chính nó nhé). Tổng của 1+2+3=6 (bằng chính nó)
Số 12 không phải là số hoàn hảo vì: tổng các ước của 12 khác 12: 1+2+3+4+6=16
Ví dụ về các số hoàn hảo: 6, 28, 496, . . .
Dựa vào định nghĩa trên ta sẽ viết hàm kiểm tra một số nguyên có phải là số hoàn hảo hay không. (hàm này sẽ trả vể giá trị đúng, sai 1-0)
Sau khi viết hàm kiểm tra số hoàn hảo, chúng ta sẽ viết hàm tính giá trị trung bình các số hoàn hảo trong mảng c.
2.2 Code C gợi ý giải quyết bài toán
2.2.1 Hàm kiểm tra số hoàn hảo bằng ngôn ngữ c
Hàm này sẽ trả về giá trị đúng sai (1 tương đương với đúng, 0 tương đương sai) nên mình sẽ dùng kiểu int.
Thuật toán:
- Khai báo một biến tổng để tính tổng các giá trị là ước thật sự của số đó (sau đó dùng so sánh )
- Dùng vòng for duyệt từ 0 cho đến n/2 tìm các ước của n. Nếu thấy, cộng vào tổng
- Sau khi duyệt hết vòng for, nếu biến tổng = với n. Đúng return 1 , sai return 0 .
như vậy là đã xong phần hàm kiểm tra số hoàn hảo trong c.
2.2.2 Hàm tính trung bình các số hoàn hảo trong mảng code C
Hàm tính trung bình trả về số thực nên sẽ là kiểu float.
Mình sẽ dùng 3 biến, một biến tổng, một biến trung bình, một biến đếm.
Khi duyệt mảng nếu thấy phần tử thỏa mãn là số hoàn hảo, cộng số đó vào tổng và tăng biến đếm thêm 1 đơn vị.
cuối cùng gán trung bình bằng tổng chia đếm.
Nếu đếm =0 tức là không có giá trị hoàn hảo nào, hàm trả về 0.
Code c:
float tinhtb(int a[], int n){ float tb, tong=0; int dem=0; for(int i=0;i<n;i++){ if(ktrashh(a[i])){ tong=tong+a[i]; dem++; } } if(dem==0) return 0; else { tb=tong/dem; return tb; } }2.2.3 Chương trình hoàn chỉnh
Chương trình cần phải kết hợp cả phần nhập xuất mảng, các cấu trúc mặc định của ngôn ngữ C.
Xem Nhập xuất mảng trong C
Code C:
#include<stdio.h> void nhap(int a[], int &n){ do{ printf("Nhap n: "); scanf("%d",&n); } while(n<2||n>99); for(int i=0; i<n; i++){ printf("a[%d]: ",i); scanf("%d",&a[i]); } } void xuat(int a[], int n){ printf("Mang vua nhap la: \n"); for(int i=0;i<n;i++){ printf("%5d",a[i]); } } int ktrashh(int n){ int tong=0; for(int i=1;i<=n/2;i++) if(n%i==0) tong=tong+i; if(tong==n) return 1; else return 0; } float tinhtb(int a[], int n){ float tb, tong=0; int dem=0; for(int i=0;i<n;i++){ if(ktrashh(a[i])){ tong=tong+a[i]; dem++; } } if(dem==0) return 0; else { tb=tong/dem; return tb; } } int main(){ int a[100]; int n; nhap(a,n); xuat(a,n); printf("\nGia tri trung binh la: %0.2f",tinhtb(a,n)); return 0; }Khi chạy chương trình bên trên sẽ cho kết quả như sau:
trong ví dụ trên có 3 số hoàn hảo là 6, 28 và 496. Tổng của 3 số là 530 và kết qủa của phép chia 530/3 làm tròn đến phần thập phân thứ 2 là: 176.67
Một ví dụ về nhập vào mảng không có giá trị nào thỏa mãn là số hoàn hảo:
2.3 Code C++ giải quyết bài toán tính giá trị trung bình số hoàn hảo
Về mặt thuật toán giải quyết bài toán không có khác biệt, mình sẽ không nhắc lại nữa.
Mời bạn tham khảo chương trình dưới đây:
#include<bits/stdc++.h> using namespace std; void nhap(int a[], int &n){ do{ cout<<("Nhap n: "); cin>>n; } while(n<2||n>99); for(int i=0; i<n; i++){ cout<<"a["<<i<<"]: "; cin>>a[i]; } } void xuat(int a[], int n){ cout<<"Mang vua nhap la:\n"; for(int i=0;i<n;i++){ cout<<" "<<a[i]; } } int ktrashh(int n){ int tong=0; for(int i=1;i<=n/2;i++) if(n%i==0) tong=tong+i; if(tong==n) return 1; else return 0; } float tinhtb(int a[], int n){ float tb, tong=0; int dem=0; for(int i=0;i<n;i++){ if(ktrashh(a[i])){ tong=tong+a[i]; dem++; } } if(dem==0) return 0; else { tb=tong/dem; return tb; } } int main(){ int a[100]; int n; nhap(a,n); xuat(a,n); cout<<"\nGia tri trung binh la: "<<setprecision(2)<<fixed<<tinhtb(a,n); return 0; }Các bạn có thể tham khảo video sau của mình để hiểu rõ hơn nhé!
Bài viết của mình đến đây là kết thúc, cảm ơn bạn đã quan tâm bài viết, đừng bỏ lỡ những bài tiếp theo nhé!
Xem tiếp Bài 6: Hàm tính giá trị trung bình số chính phương bằng code C/C++
Xem lại Bài 4: Hàm tính giá trị trung bình các số nguyên tố trong mảng C
Tải về đề cương nhập môn lập trình
Trong quá trình tham khảo bải viết, bạn đọc có thắc mắc, khó khăn gì, comment xuống phía dưới bài viết để các admin hỗ trợ nhé!
Rất mong nhận được ý kiến đóng góp của bạn đọc về (thuật toán, cách trình bày . . .) để bài viết của mình được hoàn thiện hơn.
Từ khóa » Tìm Số Hoàn Hảo Trong Mảng C
-
Kiểm Tra Số Hoàn Hảo Trong C
-
Cách Kiểm Tra Số Hoàn Hảo Trong Lập Trình C/C++
-
Kiểm Tra Số Hoàn Hảo Trong Lập Trình C/C++
-
Kiểm Tra Một Số Có Phải Số Hoàn Hảo Trong C
-
Thuật Toán Kiểm Tra Số Hoàn Hảo Trong C++ - Freetuts
-
Cách Kiểm Tra Số Hoàn Hảo Bằng Code C/C++ - Lập Trình Không Khó
-
Số Hoàn Hảo Là Gì? Một Số Bài Toán Tìm Số Hoàn Hảo
-
Viết Chương Trình In Ra Các Số Hoàn Hảo C++ - Hỏi Đáp
-
C++ - Số Hoàn Hảo - YouTube
-
Viết Hàm Tính Tổng Các Phần Tử Là Số Hoàn Thiện Trong Mảng Các Số ...
-
[TÌM CÁC SỐ HOÀN HẢO... - Học Lập Trình C Cùng Full House| By ...
-
Tìm Số Hoàn Hảo Từ 1 đến N
-
Làm Thế Nào để Vẽ Sơ đồ Khối Tìm Số Hoàn Hảo Trong Lập Trình?
-
Kiểm Tra Một Số Có Phải Là Số Hoàn Hảo Hay Không Trong C/C++?