Bạn đang xem: Convert string/char to int c++ program
Nếu áp dụng cho bài toán chuỗi nhiều kí tự như ‘123’. Bạn hãy lấy từng phần từ từ đầu chuỗi tới cuỗi chuỗi, chuyển lần lượt về kiểu int. Mỗi lần lấy được một ký tự bạn lại thêm vào giá trị kết quảVí dụ:n là giá trị ký tự vừa lấyres là kết quả sau khi chuyển qua số, ban đầu gán bằng 0Mỗi lần lấy ra được một ký tự bạn lại cộng thêm vào biến res theo công thứcres = res*10 + n
Do bạn lấy theo thứ tự chuỗi từ đầu đến cuốiVí dụ như có chuỗi a=‘123’Lần đầu lấy ra ký tự đầu tiên đổi về int là 1res = res*10 + n = 0*10 + 1 = 1Lần hai lấy ra ký tự tiếp theo là 2res = res*10 + n = 1*10 + 2 = 12Lần ba lấy ra ký tự tiếp theo là 3res = res*10 + n = 12*10 + 3 = 123Thì khi trả về kết quả sẽ ra là 123
Nó in ra sai bạn ơi, xem hộ mình sai chỗ nào nhỉ?
#include #include using namespace std; int chuyenKieu(char *s) {int res = 0;for(int i = 0; i
chỗ này bạn phải để làres = res*10 + (s-‘0’)Do s lúc này là kiểu char nên nếu tính toán thì nó sẽ chuyển sang mã ascii nên kết quả ra không đúng
Cách đơn giản mà hiệu quả:Theo bảng mã ASCII, mỗi ký tự có một mã số, may mắn là "0 - ‘9’ liền nhau, vậy nên chúng ta có thể lấy mã của một ký tự số, trừ đi mã của ký tự ‘0’ sẽ ra được số đó. (Chỉ áp dụng cho số 1 chữ số).Mình thường dùng hàm này khai báo lên đầu chương trình:
inline int num(char x){ return x - "0";}Nếu muốn đổi chuỗi dài (dùng cho BigNum chẳng hạn) thì viết một hàm đổi đơn giản như sau:
int intValue(string s){ int res = 0; for(uint i=0;iGiải thích:Ví dụ có số: n = 12, cần thêm số 3 vào cuối để tạo thành số 123.Đầu tiên, bạn nhân 10 lên, sau đó cộng với 3:
12 x 10 + 3 = 123Mở rộng, nếu bạn muốn ghép 2 số tự nhiên lại, bạn nhân số đầu với một số lũy thừa của 10, với số mũ đúng bằng số chữ số của số thứ 2. Ví dụ:
123 x 1000 + 456 = 1234561234 x 100000 + 00056 = 12300056bla blaCode cho người lười:
#include inline int base10pow(int x){ return pow10(floor(log(x)/log(10)) +1 );}inline int numcat(int a, int b){ return a*base10pow(b) + b;}
Tuan_Anh2911 (Tuấn Anh) June 17, 2019, 9:15am #15
V làm sao để convert đc từ hệ hexa ra decimal dcc v ạ ? Vì hệ hexa nó ra tới A->F
Viết hàm chuyển tay nha bạn.
Xem thêm: Đăng Ký 3G Vina Sim Sinh Viên 50K 1 Tháng, 3G Vinaphone 4G Vinaphone Khuyến Mãi
0…9 -> 0…9, A -> 10, B -> 11,…
A post was split to a new topic: Convert từ số sang xâu trong CYou should create a separated topic if your comment is not related to the original topic.
Old inactive topic.
Powered by Discourse, best viewed with JavaScript enabled