/*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;
}
Tại sao code này lúc chạy đúng, lúc chạy sai?
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];
}
This post was flagged by the community and is temporarily hidden.
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
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à
This post was flagged by the community and is temporarily hidden.
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;
}
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];
}
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á
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
This post was flagged by the community and is temporarily hidden.