01/10/2018, 16:08

Code về chữ số tăng/giảm dần

Mình có bài tập:
-. input: số nguyên dương n

  • out: + n có bao nhiêu chữ số chẵn
    + n có bao nhiêu chữ số lẻ
    + n có các chữ số tăng/giảm dần
    và mình viết chương trình như sau:
#include <iostream>
using namespace std;
int dem(int n)
{
	int i,tg, sumc=0,suml=0;
	i=n;
	while (i>0)
	{
		tg=i%10;
		if (tg%2==0){sumc=sumc+1;}
		else {suml=suml+1;}
		i=i/10;
	}
	cout << "n co " << sumc << " chu so chan" << endl;
	cout << "n co " << suml << " chu so le" << endl;
}
int sr(int n)
{
	int i=0,j=0,a,b,demg=1,demt=0,dn,b2;
	b=n%10;
	dn=n;
	b2=dn%10;
	while (n > 0)
	{
		a=b;
		n=n/10;
		b=n%10;
		if(b>a){demg++;}
		i++;
	}
	while (dn > 0)
	{
		a=b2;
		dn=dn/10;
		b2=dn%10;
		if(b2<a){demt++;}
		j++;
	}
	cout << demg << "-" << i << endl;
	cout << demt << "-" << j << endl;
	if (demg==i){cout << "n co cac chu so giam dan" << endl;}
	if (demt==j){cout << "n co cac chu so tang dan" << endl;}
	if (demg!=i&&demt!=j){cout << "n co cac chu so sap xep khong theo thu tu" << endl;}
}

int main()
{
	int n;
	cout << "n = "; cin >> n;
	dem(n);
	sr(n);
	return 0;
}

mình không hiểu ở chỗ: khi cho demg = 1 và demt = 0 => thì kết quả đúng
demg = 1 và demt = 1 => thì kết quả sai
mình nghĩ 2 vòng lặp while độc lập => 2 biến đếm cũng phải có gt khởi đầu như nhau ???
mong mn giúp đỡ???

rogp10 viết 18:23 ngày 01/10/2018

Làm vậy nó phức tạp lắm, chi bằng không đúng điều kiện là kick break; thôi.

minh viết 18:23 ngày 01/10/2018

hi bằng không đúng điều kiện là kick break;

cũng hay, cảm ơn b…

Bài liên quan
0