Mọi người giúp mình tìm lỗi

Cho em hỏi là đoạn code của em bị lỗi gì mà khi em cho mảng tăng dần hay giảm dần thì nó đều hiện ra kết quả. Nhưng khi em nhập mảng theo 1 thứ tự lộn xộn thì nó k in ra được mà nó in giảm dần ạ

#include<iostream>
using namespace std;
const int N=50;
void Nhapmang(int a[],int& n){
	cout<<"Nhap so phan tu cua mang: ";
	cin>>n;
	for(int i=0;i<n;i++){
		cout<<"a["<<i<<"]= ";
		cin>>a[i];
	}
}
bool CheckTD(int a[],int n){
	int min=a[0];
	int count=0;
	for(int i=1;i<n;i++){
		if(a[i]>=min){
			a[i]=min;
			count++;
		}
	}
	if(count==(n-1)){
		return true;
	}
	return false;
	
}
bool CheckGD(int a[],int n){
	int max=a[0];
	int count=0;
	for(int i=1;i<n;i++){
		if(a[i]<=max){
			a[i]=max;
			count++;
		}
	}
	if(count==(n-1)){
		return true;
	}
	return false;
	
}
void Output(int a[],int n){
	if(CheckTD(a,n)==1){
		cout<<"Mang tang dan";
	}else if(CheckGD(a,n)==1){
		cout<<"Mang giam dan";
	}else{
		if(CheckTD(a,n)==0&&CheckGD(a,n)==0){
			cout<<"Mang khong theo thu tu cu the";
		}
	}
}
int main(){
	int a[N],n;
	Nhapmang(a,n);
	Output(a,n);
}

Vì sao lại gán a[i] = max hoặc a[i] = min

1 Like

Vì vd như mảng tăng dần thì phần tử đầu là phần tử nhỏ nhất
tương tụ với mảng giảm dần ạ

Bạn kiểm tra mảng tăng hoặc giảm thì tại sao lại phải thay đổi giá trị của mảng. Bug có thể phát sinh từ đây

2 Likes

Không, mình chỉ duyệt mảng xem thử nó có tăng hay giảm k thôi chứ không thay đổi. Nhưng 2 trường hợp tăng/ giảm thì nó ra nhưng trường hợp mà mình nhập vào không theo 1 thứ tự gì cả thì nó cứ báo mảng giảm ạ

Vậy a[i] = min nghĩa là sao đây?

2 Likes

Thử xem

bool CheckTD(int a[],int n){
	for(int i=1;i<n;i++){
		if(a[i] < a[i-1]){
			return false;
		}
	}
    return true;
	
}
bool CheckGD(int a[],int n){
	for(int i=1;i<n;i++){
		if(a[i] > a[i-1]){
			return false;
		}
	}
	return true;
	
}
1 Like

Cậu ấy nghĩ là phép toán đó không làm thay đổi mảng. :slight_smile:

1 Like

Cảm ơn anh, em mới học nên còn non :smile:, em nói có gì sai mong anh bỏ qua giúp đỡ ạ

Bạn có thể đổi lại min = a[i] hoặc max = a[i]

5 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?