Giúp tìm ra ý tưởng thuật toán cho bài "nhân kiểu mới"

Mọi người cho em xin ý tưởng để giải quyết bài toán này với ạ!

Bạn có thể chuyển được 1 số nguyên thành mảng các chữ số không?

chuyển như thế nào vậy ạ
trong c++ có hàm sẵn không hay mình phải tự viết vậy ạ

anh có thể nói qua các bước cần làm để hoàn thành bài này không ạ
còn cụ thể em sẽ tự tìm hiểu và tự code ạ

giờ cho bạn 2 mảng số nguyên
a = [1,2,3]
b = [4,5]
sẵn như vậy, bạn có thể tính tổng thành 54 như ví dụ không?

1 Like

mình có thể vấn đề chắc là cách để chuyển hai số nguyên thành mảng thôi

thì dùng phép lặp, mỗi lần lặp lấy 1 số bỏ vô mảng?

123 chia 10 được 12 dư 3 bạn làm được không?
lấy số 3 thêm vào mảng a
còn lại số 12, lại làm tiếp như thế,
12 chia 10 được 1 dư 2, lại lấy số 2 bỏ vô mảng
còn lại 1 chia 10 được 0 dư 1, lấy số 1 bỏ vô mảng
lúc này thì số còn lại là 0, nên nghỉ

thế là được mảng 1 2 3

2 Likes

À ra là vậy, mình hiểu ròii cảm ơn bạn nhiều nhaa :relaxed:

Khi thực hiện nhập, em đọc chuỗi “123” thay vì số 123. Chuỗi bản thân là mảng rồi.

2 Likes

em sợ khi nhập chuỗi thì sẽ không tính toán được ạ

Bạn có được phép dùng đến “ép kiểu” (Type Casting) hoặc hàm stoi(“123”) chưa? Hoặc dùng thoải mái nhưng chưa biết? Hàm stoi(“123”) cho ra số int = 123, bạn có thể tính toán được.

1 Like

thật ra có 1 cách dễ hơn
đó là (1+2+3)*(4+5)
nên chả cần cái mảng nào cả
thay vì thêm vào mảng, thì cộng vào tổng

4 Likes

Ỏ ~ em đã full test bài kia rồi, cảm ơn mọi người nhiều ạ, em vừa ngộ ra nhiều chân lí mới đấy, hóa ra C++ có những hàm có sẵn như vậy, em sẽ tìm hiểu kĩ hơn trước khi đưa ra câu hỏi ạ. :relaxed:

Chữ số bạn trừ '0' là ra số thôi.

2 Likes

Hmm… tớ chưa hiểu lắm

Chữ số bạn trừ '0' là ra số thôi.

Hmm… tớ chưa hiểu lắm

You know that the encoding for computers is ANSI (AMERICAN NATIONAL STANDARDS INSTITUTE) and the representable numbers 0…9 are encoded in hexadecimal numbers x30 … x39. If you perform an abstraction from 9-0, you get hexadecimal numbers 9.

x39 - x30 = x09
1 Like

Trong bảng ký tự latin, ký tự từ 0 đến 9 sắp liền kế nhau và có giá trị từ 48 đến 58.
Do vậy để chuyển từ ký tự số ra giá trị số ta chỉ cần trừ nó cho 48 hoặc trừ cho ‘0’. Bởi vì ‘0’ cũng chính là 48.

1 Like

Lão nói cái này mà với những bạn không có học về kiến trúc máy tính và cách máy tính làm việc với các con số nhị phân, bát phân (octave), HEX,… thì cứ gọi là… vỡ mật.

1 Like

Thôi xem cái bảng này cho dễ:
Dec: giá trị cơ số 10.
Hex: giá trị hệ hexa.
Char: ký tự.
Như trên hình thì ký tự ‘0’ tương đương 0x30 của hệ hexa và số 48 của hệ 10.

2 Likes

À dạ, nghe mọi người giải thích kết hợp với tìm hiểu trên mạng em cũng hiểu sương sương rồi ạ :sweat_smile:
Uầyy công nhận để mà đi sâu vào học mấy cái này thì cũng không dễ như em tưởng. Nhưng mà thú vị thật đấy :grin:
Không biết trong tương lai em có đủ năng lực và đủ đam mê để tiếp tục theo đuổi ngành này không nữa :pleading_face:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?