Xin chào. Dưới đây mình có 1 đoạn code nhập mảng rồi kiểm tra mảng dương. Thật ra mình chỉ thắc mắc 1 ý nhỏ nên nếu ai rãnh thì đọc cả đoạn code luôn nhé, không thì đọc cái đoạn mình nói thôi
Code:
#include <stdio.h>
#include <conio.h>
#include <Windows.h>
void NhapMang(int a[], int &n);
bool KiemTra (int a[], int n);
void NhapMang(int a[], int &n)
{
do
{
printf("Nhap so luong phan tu: ");
scanf("%d",&n);
if (n < 0 || n > 100)
printf("So luong phan tu khong hop le, xin moi kiem tra lai\n");
}
while (n < 0 || n > 100);
for (int i = 0; i < n; i++)
{
printf("Nhap phan tu %d: ",i+1);
scanf("%d",&a[i]);
}
}
bool KiemTra(int a[], int n)
{
for (int i = 0; i < n; i++)
{
if (a[i] <= 0)
return false;
}
return true;
}
int main()
{
int a[100];
int n;
NhapMang(a,n);
if (KiemTra(a,n))
printf("Mang khong co so am\n");
else
printf("Mang co so am\n");
getch();
return 0;
}
Ở cái hàm bool KiemTra
thì có đoạn code:
Code 1:
for (int i = 0; i < n; i++)
{
if (a[i] <= 0)
return false;
}
return true;
nhưng nếu mình sửa lại như sau thì sai, mặc dù không hiểu
Code 2:
bool KiemTra(int a[], int n)
{
for (int i = 0; i < n; i++)
{
if (a[i] > 0)
return true;
}
return false;
Theo mình thì thấy 2 đoạn code nhỏ trên đều tương đồng nhau nhưng sao đoạn code 2 lại chạy sai nhỉ, nếu 1 mảng mà toàn số dương nhưng có 1 số âm thì nó vẫn báo dương, chỉ khi nào mảng nhập không có số dương nó mới báo âm.
Còn code 1 thì đúng!
Ai giúp mình nhé! Xin cảm ơn!