Tính tổng các giá trị có chữ số hàng chục là chữ số 5 trong mảng

0
2881

 

Bài toán: Tính tổng các giá trị có chữ số hàng chục là chữ số 5 trong mảng.

 

Input:  mảng a có n phần tử

Xử lý: duyệt mảng tìm các giá trị trong mảng có chữ số hàng chục là 5

Hàm tìm chữ số 5 hàng chục

Xét số 5 hàng chục này có cả giá trị âm và giá trị dương nên:

Sử dụng abs đê lấy giá trị tuyệt trừ khi số ở 5 hàng chục là âm

Ví dụ: -50 abs(-50)=50

Nếu không sử dụng abs thì -50 sẽ không được tính là có số 5 ở hàng chục

Tiếp theo là chia cho 10 để bỏ hàng đơn vị rồi chia cho cho 10 lấy dư để lấy hàng chục

Ví dụ: 250

250/10=25

25%10=5

Hàng chục bằng 5 thì hàm trả về là 1, nếu không có chữ số hàng chục là 5 thì hàm trả về là -1

int So5HanChuc(int n)

{

       n=abs(n);

       n=n/10;

       int hangchuc=n%10;

       if(hangchuc==5)

              return 1;

       return 0;

}

 

Tiếp theo là viết hàm tính tổng các giá trị hàng chục là 5

Gán sum=0

Duyệt mảng , nếu có chữ số nào có hàng chục là 5 thì cộng vào

double Tong(int a[],int n)
{
	int i;
	double sum=0;
	for( i=0 ; i<n ; i++ )
		if(So5HanChuc(a[i])==1)
			sum=sum+a[i];
	return sum;
}

 

Output:  Tổng các chữ số hàng chục là 5

Chương trình

#include<stdio.h>
#include<conio.h>
#include<math.h>
#define MAX 100
void nhapmang(int a[], int &n);
void xuatmang(int a[], int n);
int So5HanChuc(int n);
double Tong(int a[],int n);
void main()
{
	int a[MAX],n;
	nhapmang(a,n);
	printf("\nNoi dung cua mang\n");
	xuatmang(a,n);
	double kq=Tong(a,n);
	printf("\ntong cac gia tri co chu so hang chuc 5 la: %8.2f",kq);
	printf("\nChuc cac ban hoc tot");
	getch();
}
void nhapmang(int a[], int &n)
{
	do
	{
		printf("\nSo phan tu trong mang ");
		scanf("%d",&n);
	}while(n<=0 || n>100);
	for(int i=0 ; i<n ; i++ )
	{
		printf("\nSo phan tu a[%d] la: ",i);
		scanf("%d",&a[i]);
	}
}
void xuatmang(int a[], int n)
{
	for(int i=0 ; i<n ; i++ )
		printf("%4d",a[i]);
}
int So5HanChuc(int n)
{
	n=abs(n);
	n=n/10;
	int hangchuc=n%10;
	if(hangchuc==5)
		return 1;
	return 0;
}
double Tong(int a[],int n)
{
	int i;
	double sum=0;
	for( i=0 ; i<n ; i++ )
		if(So5HanChuc(a[i])==1)
			sum=sum+a[i];
	return sum;
}

Mình chia sẽ code này đê các bạn tham khảo các vấn đề tương tự. Tuy nhiên các bạn nên tự làm lại, đừng nên copy. Nếu gặp vấn đề gì khó khăn, hoặc thắc mắc gì, các bạn có thể đặt câu hỏi ở cuối bài. Mình sẽ giải đáp.

Chúc các bạn thành công!

This site uses Akismet to reduce spam. Learn how your comment data is processed.