Giúp mình 1 đoạn code C++ cơ bản ^^

gigamesh

T.E.T.Я.I.S
Lão Làng GVN
Tham gia ngày
26/6/04
Bài viết
553
Reaction score
6
Chào các bạn, mình đang làm mấy bài C++ mà vì lâu ko đụng đến nên quên hết kiến thức rồi, các bạn giúp mình chút nhé :D
1.a. Viết hàm theo yêu cầu người dùng nhập vào 1 số nguyên, nếu số đó >=100 hoặc <0 thì yêu cầu người dùng nhập lại cho tới khi thỏa mãn yêu cầu thì thôi
b. Viết chương trình sử dụng hàm viết ở trên để nhập vào 1 số nguyên. Sau đó hiển thị số đó ra dưới dạng chữ.
Ví dụ : 12 : mot hai
230 : hai ba khong
2. Số hữu tỷ là số có định dạng a/b, trong đó a, b thuộc Z và b khác 0 (ví dụ 3/7 , 60/19...) Tạo 1 lớp có tên là HuuTy với 2 thuộc tính là từ số (a). mẫu số (b), và viết các chồng toán tử + , * để thực hiện cộng 2 số hữu tỷ, nhân 2 số hữu tỷ
Bài 1a theo mình nghĩ thì mình tạo 1 biến rồi cho người dùng nhập giá trị từ bàn phím rồi tạo vòng lặp.
Bài 1b thì mình ko biết hướng xử lý như thế nào, có lẽ là sau khi nhập giá trị thì tách từng số ra rồi gán 1 biến kí tự khi hiển thị ra cho các số từ 0-9 chăng ? , nhưng như thế thì có vẻ hơi dài nhỉ :D
Còn về phần code thì mình chịu vì lâu lắm ko đụng vào nên quên hết rồi, các bạn code giúp mình các bài này nhé, mình cảm ơn nhiều ^^
 
câu 1 dùng
int x;
do {
nhập và gán giá trị cho x
}while(x>=100 || x<0)

câu 2:
tách các số hàng trăm, chục, đơn vị, duyệt các số này dùng switch case để đọc. ví dụ switch(x){case 1: str+=" mot ";break; ...}
câu 3: cũng ko khó
nói chung mấy cái này khá cơ bản,bạn nên tự tìm hiểu và làm ;;)
 
bài 2 thì hướng giải quyết có thể làm như sau: nhập vào 2 số a/b và c/d, nếu là nhân thì e = a * c, f = b * d, kq = e/f, nếu là cộng thì bạn đi tìm BSCNN của b và d, sau đó quy đồng 2 fân số rồi tính kq. để tìm được BSCNN thì bạn nên tìm USCLN rồi áp dụng công thức BSCNN = tích 2 số/USCLN. sau đây là cách tìm USCLN = mã giả, cách này chưa fải là hay nhất nên bạn nên tìm hiểu thêm để giải bài toán đc hay hơn

Mã:
Read a
Read b
if(a=0)
return b // b la USCLN
else if(b=0)
return a // a la USCLN
else
{
if(a>b)
{
for(int i=b; i >= 0; i--)
{
if(a%i = 0 && b%i = 0) // % la chia lay du
return i // i la USCLN
}
}
}
else
{
for(int i = a; i >= 0; i--)
{
if(a%i =0 && b%i=0)
return i
}
}
}

sẵn cho mình hỏi luôn, muốn tìm BSCNN của n số thì áp dụng công thức nào nhỉ, có thể dùng công thức tích của n số/USCLN đc ko nhỉ?
 
Chỉnh sửa cuối:
viết hàm rút gọn phân số.
trước khi tính tích hay tổng thì rút gọn rồi tính, tính xong lại rút gọn lần nữa,

còn tính BSCNN của n số: n số này phải lưu trong mảng, sắp xếp mảng, tìm (mẫu) số lớn nhất, kiểm tra nó có phải là BSCNN ko ? nếu ko, nhân nó với (mẫu) số nhỏ nhất và kiểm tra, ko phải thì nhân với các mẫu số tăng dần lên và kiểm tra....
 
bạn có thể viết dùm mình đoạn code của 3 bài mình post lên đc ko :( , lâu mình ko đụng đến C++ nên quên hết rồi :(
 
Back
Top