Lỗi logic ở dòng if else không biết cách sửa

Sáng giờ e mò mà ko hiểu tại sao nó ko chạy dòng else cứ tới if rồi return 0 luôn. Lúc nào cung “mang toàn chẵn hết” khó hiểu

// giai bai tap mang 1 chieu co ban.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
using namespace std;

#define MAX 100

//nhap mang
void nhapmang(int a[], int &n)
{
	cout << "nhap phan tu n=";
	cin >> n;
	for (int i = 0; i < n; i++)
	{
		cout << "nhap phan tu a[" << i << "]"<<":";
		cin >> a[i];
	}
}
// in mang
void inmang(int a[], int n)
{
	cout << "mang sau khi nhap:"<<endl;
	for (int i = 0; i < n; i++)
	{
		cout << a[i] << "  ";
	}
}
/////////////dang toan kiem tra////////////
/////dung bool//////////////

//kiem tra mang toan chan 
bool kttc(int a[], int n)
{
	for (int i = 0; i < n; i++)
	{
		if (a[i] % 2 != 0)
		{
			return false;
		}
	}
	return true;
}
int _tmain(int argc, _TCHAR* argv[])
{
	int a[MAX];
	int n;

	////////////////////////////////
	nhapmang(a, n);
	inmang(a, n);
	/////////kiem tra toan chan//////
	bool check=kttc(a, n);
	if (check=true)
	{
		cout << "mang toan so chan ";
	}
	else 
		cout << "mang ko toan so chan";
	return 0;
}
1 Like

Sửa lại check == true

Lý do tại sao thì xem videos này

Bạn viết if(check=true) tức là gán check= true, sau đó lệnh if sẽ kiểm tra biến check, vì thế else không bao giờ chạy. Thay “==” cho "="

1 Like

hèn chi. e cảm ơn a.

lúc đầu định tự mò ko hỏi. mà giờ thấy mình đã làm đúng. trc giờ chưa nge thầy nói if(check=true) là gán check=true. mình chỉ biết vs câu lệnh if lúc nào cũng phải dùng ==. hi

em tưởng chỉ cần if(check) là được rồi chứ nhỉ

Rất đúng :smile: trong trường hợp này ta nên đặt tên biến là isMangChan hoặc mangChan

bool mangChan=kttc(a, n);
if (mangChan) {
    cout << "mang toan so chan ";
} else {
    cout << "mang ko toan so chan";
}
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?