30/09/2018, 18:47
Thuật toán đổi kiểu chuỗi(char) sang kiểu số(int) trong "C++"?
Như tiêu đề, mình muốn biết thuật toán chuyển kiểu như thế nào mà không dùng hàm atoi?
Bài liên quan
Như tiêu đề, mình muốn biết thuật toán chuyển kiểu như thế nào mà không dùng hàm atoi?
Dùng bảng ASCII để giải bài này bạn nhé
Kiểu chuỗi thì là string chứ he, còn char là kiểu kí tự mà
Chắc là chuỗi ký tự đó anh
Giải thích cho mình rõ tí đi bạn
Nếu vậy bạn có thể dùng kiểu như bạn @sample đã nói
Nhưng đó chỉ dùng được cho một kí tự
Mình giải thích giùm luôn là do mã ascii kí tự ‘0’ thì biểu diễn số là 48
Ví dụ như bạn có
char a=‘4’;
int n = a - ‘0’;
Thì khi đó nó sẽ chuyển định dạng kí tự về định dạng số theo mã ascii. Ký tự 4 thì mã là 52 trừ cho ký tự 0 mã là 48 ra được giá trị là 4.
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ấy
res là kết quả sau khi chuyển qua số, ban đầu gán bằng 0
Mỗ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ức
res = res*10 + n
res*10 la ntn v ban?
Do bạn lấy theo thứ tự chuỗi từ đầu đến cuối
Ví dụ như có chuỗi a=‘123’
Lần đầu lấy ra ký tự đầu tiên đổi về int là 1
res = res10 + n = 010 + 1 = 1
Lần hai lấy ra ký tự tiếp theo là 2
res = res10 + n = 110 + 2 = 12
Lần ba lấy ra ký tự tiếp theo là 3
res = res10 + n = 1210 + 3 = 123
Thì 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ỉ?
`
chỗ này bạn phải để là
res = res*10 + (s[i]-‘0’)
Do s[i] 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
thanks bạn rất nhìu, để topic này đây có gì thảo luận với bạn tiếp hihi
cảm ơn anh Bùi Phú Hiệp
anh ơi cho em kb fb với anh đi
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:
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:
Giả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:
Mở 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ụ:
bla bla
Code cho người lười: