30/09/2018, 22:09

Cho em hỏi ngu cái. sao cái code này lúc chạy đúng lúc sai vây?

/*liệt kê các giá trị có toàn chữ số lẻ trong mảng.*/
int lietkesole2(int a[], int n)
{
	int dv, i, b;

	cout << "
Cac so toan so le trong mang la : ";
	for (i = 0; i < n; i++)
	{
		b = a[i];
		do
		{
			dv = a[i] % 10;

			if (dv % 2 == 0)
			{
				break;
			}

		} while (a[i] /= 10);
		if (dv % 2 != 0)
		{
			cout << b << "  ";
		}

	}
	return 0;
}
hacked viết 00:12 ngày 01/10/2018

Lý do là code của bạn sai, tham khảo…

void lietkesole2(int a[], int n)
{
    cout << "\nCac so toan so le trong mang la : ";
    for (i = 0; i < n; i++)
        if (a[i]%2) cout<<a[i];    
}
Tao Không Ngu. viết 00:14 ngày 01/10/2018

This post was flagged by the community and is temporarily hidden.

Nguyễn Thanh Hoàng viết 00:21 ngày 01/10/2018

Bạn hiểu sai đề rồi ạ
nếu a[i] = 23 thi theo cái code của bạn nó nhận giá trị 23 luôn. Toàn chữ số lẽ mà bạn

Nguyễn Thanh Hoàng viết 00:14 ngày 01/10/2018

nếu a[i] = 8 thì vòng lặp sẽ bỏ qua mà bạn. mình cho lệnh break vào mà

Tao Không Ngu. viết 00:18 ngày 01/10/2018

This post was flagged by the community and is temporarily hidden.

Nguyễn Thanh Hoàng viết 00:17 ngày 01/10/2018

uh.
/liệt kê các giá trị có toàn chữ số lẻ trong mảng./
int lietkesole2(int a[], int n)
{
int dv, i, b;

cout << "\nCac so toan so le trong mang la : ";
for (i = 0; i < n; i++)
{
	b = a[i];
	do
	{
		dv = a[i] % 10;

		if (dv % 2 == 0)
		{
			break;
		}

	} while (a[i] /= 10);
	if (dv % 2 != 0)
	{
		cout << b << "  ";
	}

}
return 0;

}

/liệt kê các giá trị trong mảng có chữ số đầu tiên là chữ số lẻ./
int lietkesole(int a[], int n)
{
int dv, b;
cout << "\nCac gia tri trong mang co so dau tien la so le la : ";
for (int i = 0; i < n; i++)
{
b = a[i];
do
{
dv = a[i] % 10;
} while (a[i] /= 10);
if (dv % 2 != 0)
{
cout << b << " ";
}
}
return 0;
}

viết 00:09 ngày 01/10/2018

Code bạn hơi lộn xộn, ở vòng lặp do-while có thể kiểm tra các số có phải toàn lẻ không, nhưng khúc if ở dưới chỉ in ra số lẻ thôi, ví dụ 21 không phải số toàn lẻ, nhưng nó vẫn được in ra, bạn nên viết riêng cái hàm kiểm tra số toàn lẻ, rồi tới hàm liệt kê ra các số lẻ trong mảng thì gọi vào cho gọn, ví dụ:

bool kiem_tra_so_toan_le(int n){
       int tmp=n,d;
       bool check=true;
       while(tmp!=0){
              d=tmp%10;
              if(d%2==0)
                check=false;
              tmp/=10;
       }
       return check;
}
void liet_ke_mang(int a[],int n){
      for(int i=0;i!=n;i++){
          if(kiem_tra_so_toan_le(a[i]))
             cout<<a[i];
    }
Nguyễn Thanh Hoàng viết 00:21 ngày 01/10/2018

nếu để 2 cái code này với nhau thì cái tìm toàn số lẽ đúng. cái số đầu tiên là số lẻ sai.
nếu để theo thứ tự ngược lại thì code toàn số lẽ sai + code số đầu số lẻ đungs. Hack não quá

Nguyễn Thanh Hoàng viết 00:26 ngày 01/10/2018

Cảm ơn bạn đã quan tâm tới bài viết mình!
Mình để code toàn số lẽ chạy riêng vẫn ra kết quả đúng ạ. Mình xin tham khảo

Tao Không Ngu. viết 00:10 ngày 01/10/2018

This post was flagged by the community and is temporarily hidden.

Bài liên quan
0