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 đỡ???
Bài liên quan
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.cũng hay, cảm ơn b…