Chỉ dùng vòng lặp không dùng mảng nha.tks mọi người
Kiểm tra xem các chữ số của số nguyên dương n có giảm dần/ tăng dần từ trái sang phải không?
dùng phép trừ thôi. ‘3’
tăng dần thì a[i] - a[i-1] phải >0
giảm dần thì a[i] - a[i-1] phải <0.
ko dùng mảng thì dùng 2 biến a,b để lưu a[i] và a[i-1]
Người thảo luận để tìm ra cách giải hay cho một bài toán khó sẽ trở thành lập trình viên giỏi. Người hay hỏi bài tập thì không. Còn bạn thì sao?
Bạn có thể biến đổi bài toán thành kiểm tra các chữ số của số nguyên dương có tăng dần từ phải qua trái không? sẽ dễ làm hơn đó
Mã giả
while (n>=10)
{
int donvi=n%10;
n=n/10;
if(donvi>n%10)
{
return false;
}
}
reutrn true;
#include<stdio.h>
main()
{
int n,cs1,cs2,i=0,k=0;
printf("Nhap so n: ");
scanf("%d",&n);
cs1=n%10;
n=n/10;
while(n!=0)
{
cs2=n%10;
if(cs1>cs2) i=1;
if(cs2>cs1) k=1;
if(cs2==cs1) return printf("khong tang khong giam");
cs1=cs2; n=n/10;
}
if(i==1 && k==1) printf("Khong tang khong giam\n");
if(i==1 && k==0) printf("Tang\n");
if(i==0 && k==1) printf("Giam\n");
if(i==0 && k==0) printf("Khong tang khong giam\n");
}
cảm ơn mn đã quan tâm.
Lần sau bạn nhớ dùng Markdown để đăng code nhé ,nhìn sẽ đẹp và dễ nhìn hơn
Mình làm theo cách của bạn nhưng không hiểu vì sao lại báo lỗi về thuật toán làm bằng mảng. Ai biết về vấn đề này chỉ mình với
cho mình hỏi về cái mà cs1=cs2 là sao vậy bạn mình không hỉu lắm
#include<iostream>
using namespace std;
void KT(int n)
{
int st = n % 10, ss, kt1 = 0, kt2 = 0;
n = n / 10;
while (n != 0)
{
ss = n % 10;
if (st < ss) kt1 = 1;
if (st > ss) kt2 = 1;
st = ss;
n = n / 10;
}
if (kt1 == 0 && kt2 == 1) cout << "La so tang dan \n";
if (kt2 == 0 && kt1 == 1) cout << "La so giam dan \n";
if (kt1 == 1 && kt2 == 1|| kt1 == 0 && kt2 == 0) cout << "La so khong tang va khong giam \n";
}
int main()
{
int n;
cout << "Nhap vao so nguyen duong n(n>0):";cin >> n;
if (n < 1)
{
do { cout << "Vui long nhap dung n(n>0):";cin >> n; } while (n < 1);
}
KT(n);
system("pause");
}
gán giá trị cs2 vào cs1 và tiếp tục vòng lặp thôi.
vd : 54321
cs1 = 1 ; cs2 = 2
cs1 = 2 ; cs2 = 3 và tiếp tục như vậy.
Theo mình là vậy =)
#include<stdio.h>
bool giam(int n);
bool tang(int n);
int check(int n);
int main(){
int n;
printf("nhap n: "); scanf("%d", &n);
if(check(n)==1)
printf("Co thu tu");
else
printf("Khong co thu tu");
return 0;
}
bool giam(int n){
while (n>=10)
{
int donvi=n%10;
n=n/10;
if(donvi>n%10)
{
return false;
}
}
return true;
}
bool tang(int n){
while (n>=10)
{
int donvi=n%10;
n=n/10;
if(donvi<n%10)
{
return false;
}
}
return true;
}
int check(int n){
int m;
m=n%10;
n=n/10;
if(m!=n%10)
{
if(m>n%10)
if(tang(n)==true)
return 1;
else
return 0;
else
if(giam(n)==true)
return 1;
else
return 0;
}
else
check(n);
}