In ra các chữ số của 1 số mà không dùng vòng lặp
Em cũng có tìm ra cách giải, trong đó có sử dụng hàm pow, tuy nhiên đề lại cấm chữ include. vậy e xin hỏi bài này có cách làm nào khác không ạ, và phải tuân thủ theo các luật cấm của đề. E cám ơn
Chia cho 10 lấy phần dư
du = a % 10
a = a / 10
Lặp đến chừng nào số a còn lại < 10 thì dừng.
nếu vậy thì nó in từ dưới lên chứ nhỉ ?
#include <iostream>
using namespace std;
int main()
{
int digit=0, index=0;
int *arr= new int;
int n; cin >> n;
while(n>0)
{
digit=n%10;
n=n/10;
arr[index++]=digit;
}
for(int i=index-1; i>=0; i--)
{
cout << arr[i] << endl;
}
}
bị cấm dùng for bác ơi có cái hình ở dưới e có ghi các từ bị cấm ấy.
Có rất nhiều cách để làm nó in từ trên xuống. Lưu kết quả vào mảng, lưu kết quả vào stack, chia cho 10^x thay vì lấy phần dư…
Đây là 1 cách đệ quy:
void In_Chu_So(int a)
{
if (a < 10) {
printf("%d\n", a);
return;
}
In_Chu_So(a / 10);
printf("%d\n", a % 10);
return;
}
Lầy đến cùng luôn.
string s; // hoặc chơi char*
cin >> s;
f\
or (int i = 0; i < s.size(); i++)
cout << s[i] << endl;
đề bài ban for a ơi…
f\
or
là for nhưng máy chấm không biết đâu. Mình đã giúp 1 bạn bằng cách này rồi
giờ em mới biết có kiểu này
Cái này chủ yếu dùng để viết mỗi tham số xuống dòng cho đẹp vì viết hết 1 dòng dài quá ko muốn đọc.
cám ơn a nhiều nhé <3
À đc r cám ơn a nhiều nhé. nhưng vẫn bị sai 3 testcase e chưa hiểu nguyên nhân
Chắc là test 0 đầu ấy mà (nếu bạn dùng cách “lầy lội”)
Code đó còn lầy theo kiểu dùng string thay vì chia 10.
không phải test 0 đầu đâu ạ. code e có lọc tất cả các trường hợp 0 đâu mà nhưng mà e dùng cách của a HK boy rồi :v cách ghê vãi