PDA

View Full Version : Các cao thủ VB help me!!



DOAN KIM
26-06-2008, 01:52
Mình muốn làm phép toán với phương trình toán học bất kỳ lúc nhập vào (với biến là x).Nghĩa là mình nhập phương trình vào và chương trình đưa ra kết quả của tương ứng với phương trình đó.Cho mình hỏi là có thể nhập phương tình từ đâu và dùng câu lệnh như thế nào?

lehuynhhp
26-06-2008, 10:20
Bạn DOAN KIM thân mến, bạn có thể dùng hàm Inputbox để nhập các hệ số cho phương trình. Ví dụ nếu phương trình của bạn định nhập là bậc 2 với x(ax2+bx+c=0) thì bạn có thể gọi: a= InputBox("Nhap vao he so a:", "nhap lieu",0, 0), tương tự như vậy bạn gọi nhập cho hệ số b,c. Một cách khác để nhập rất tốt mà bạn không phải viết lệnh đó là dùng các textbox. Ban đầu bạn chuẩn bị nhiều textbox và để thuộc tính ẩn cho các text này, mỗi text này sẽ để nhập một hệ số. Căn cứ vào bậc phương trình bạn muốn nhập mà cho hiện các text nhập các hệ số tương ứng. Bạn có thể xem thêm chi tiết hàm INputbox trong thư viện hàm của VB, nếu bạn không có thư viện này có thể liên hệ với mình theo email: huynhtinak5@gmail.com mình sẽ gửi cho. Chúc bạn thành công.

DOAN KIM
27-06-2008, 02:39
Cảm ơn bạn đã giúp đỡ, nhưng ý mình là mình muốn chỉ dùng 1 TextBox hoặc inputBox, và nhập toàn bộ phương trình 1 lần chứ ko phải là nhập theo hệ số, và chương trình tự nhận phương trình mình đã nhập vào đấy để tính toán.Liệu VB có đủ mạnh để làm dc như vậy ko?? Mình dã thử dùng các function convert nhưng vẫn không dc.Bạn nào biết giúp mình cái nhé, hom thu cua minh la muasaobang_ann@yahoo.com . Mình cảm on trước nhé.

minwood
28-06-2008, 18:57
Vậy thì bạn phải lập trình xử lý chuỗi nhiều đó!
Ví dụ như sau:
phương trình bậc nhất bạn nhập là:3.x+5=0
bạn có thể sử dụng 1 mảng lưu trữ toàn bộ nó vào như sau
dim m(100) as string 'khai bao 1 mang la 100 phan tu
sau đó đổ cái chuỗi vừa nhập vào trong mảng.
chung ta được 1 mảng như sau
m(0)="3"
m(1)="."
m(2)="x"
m(3)="+"
m(4)="5"
m(5)="="
m(6)="0"
sau đó bạn xử lý mảng này!
có 1 quy luật ở đây như sau!
phương trình bậc nhất của chúng ta luôn có những phần tử cố định như sau! các toán tử(+,-,*,/), biến (x),toán tử logic(=)và cái số 0 ở cuối
các phần tử động chính là các toán hạng(là các số do người dùng nhập vào)
cứ mỗi phân tử cô định bạn đặt điều kiện kết thúc cho nó!để là sao cuối cùng chúng ta có thể tách được chuỗi thành 2 phần:
- phần 1: là các phần tử động(các toán hạng)
- phần 2: là các phàn tử cố định(các toán tử,...)
tiếp tục:
ta xét quy luật như sau: (3.x+5=0)
với phần tử trong mảng chứa giá trị (+,-) thì làm phép tính
với phần tử trong mảng chứa giá trị (*,/) thì làm phép phân số(/)và phép bình thường với phép *.ở bài toán trên ta sẽ dc kết quả như sau:
x=-5/3
bạn code như sau:
''''''''''''''''''code'''''''''''''''''''''''''''' ''''''''''''
'bạn cần textbox và 1 command''''''''''''''''''''''''''''''''
'txtChuoi để nhập chuỗi vào
'''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''
dim m(100),strA,strB as string
dim a,i as integer
'do toan bo chuoi vao mang m()
a=len(Me.TxtChuoi.Text) 'tra ve do dai chuoi
For i = 1 To a
m(i) = Mid(Me.TxtChuoi.Text, i, 1) 'đổ chuỗi vào mảng
Next
'''''''sử lý chuỗi vừa nhập'''''''''''''''''''''''''''''
'duyệt chuỗi''''''''''''''''''''''''''''''''''''''''''' '
For i = 1 To a
'''cắt chuỗi chỉ lấy các phần trước kí tự x'''''''''''''
if (m(i)="x" then
strA="lấy các phần tử phía trước kí tự x đăt vào đây"
''ở trên đây biến strA sẽ chứa 1 chuỗi (ở vĩ dụ trên thì strA chứa kí tự 3.)
end if
Next
''''sau đó trong strA chứa 2 phần tử của mảng là 3 và *(.)
bạn lại tách tiếp 3 và dấu * ra!dấu * trong trường hợp này là ko cần dùng đến!vì vậy bạn lấy dc số 3!chính là toán hạng thứ 1
bạn sử lý tiếp như vậy với toán hạng thử 2
''''sau cuối
bạn đã lọc tách chính xác dc 2 toán hạng ở đây là 5 và 3
1 toán tử là dấu +
công việc tiếp theo là quá dễ dàng rồi!
'''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''
vì thời gian có hạn,không cho phép tôi trình bày hết code!và 1 số thứ khác!nên tôi chỉ nêu ý tưởng để bạn có thể sử lý trong VB!
Nếu bạn không hiểu thì liên lạc với tôi qua mail:romeo_motminh26@yahoo.com