Giúp cách tách tìm số nguyên trong mảng số thực

Mình mới lập trình nên không biết mong mọi người giúp ạ.
Giả sử mình có một bài toán là viết chương trình tính trung bình cộng của số chia hết cho 5 trong mảng

#include<iostream>
using namespace std;
void nhapMang(int A[],int &n);
float trungBinhCong(int A[],int B[],int n);
void xuat(float tb);

int main()
{
	int A[500],B[500];
	int n;
	nhapMang(A,n);
	float kq=trungBinhCong(A,B,n);
	xuat(kq);
}

void nhapMang(int A[],int &n)
{
	cin>>n;
	for(int i=0;i<n;i++)
	{
		cin>>A[i];
	}
}

float trungBinhCong(int A[],int B[],int n)
{
	int m=0;
	int sum=0;
	for(int i=0;i<n;i++)
	{
		if(A[i]%5==0)
		{
			B[m]=A[i];
			m=m+1;
		}
	}
	for(int u=0;u<m;u++)
	{
		sum=sum+B[u];
	}
	float tb;
	return tb=sum/m;
}

void xuat(float tb)
{
	cout<<tb;
}

Vấn đề ở đây nếu trong mảng nó là số thực có lẫn số nguyên thì mình làm như thế nào để nó chỉ lấy mỗi số nguyên chia hết cho 5 rồi trung bình cộng lại ạ ?
VD:A[2, 2.4, 5, 10] có 5 và 10 ạ.

Để chia hết cho 5 thì số đó phải nguyên đã. Do đó mệnh đề tìm số nguyên chia hết cho 5 nó cũng tương đương mệnh đề tìm số chia hết cho 5 vậy. Khỏi cần xét số nguyên hay số thực luôn đi

4 Likes

Bonus thêm :
Phép chia dư số thực (float, double) có thể sẽ không chẵn 0 được (15 % 5 # 0) nên khi xét chia hết sẽ không dùng phép so sánh == mà sẽ dùng phép so sánh nhỏ hơn giá trị epsilon.

if(abs(a % 5) <= 0.00001 || abs(a % 5) >= 0.99999){
    // số nguyên.
}
4 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?