01/10/2018, 10:19
Code sau khi nhập input thì không thực hiện được phép tính
#include <cmath>
#include <cstdlib>
double bodyfatnam(double cannang, double sodovong2);
double bodyfatnu(double cannang, double sodovong2);
int main()
{
using namespace std;
char name[20];
cout <<" Enter your name here: " << endl;//nhap ten
cin >> name;
cout << "Welcone," <<name<< endl;
double cannang;
double sodovong2;
cout << "Nhap can nang cua ban: "<<endl;//nhap can nang
cin >> cannang;//(1)
cout << "Nhap so do vong 2 cua ban: "<<endl;//nhap so do vong2
cin >> sodovong2;//(2)
cout << "Nhap gioi tinh cua ban: "<<endl ;//nhap gioi tinh
char gioitinh[0];
cin >> gioitinh;
double ketquanam;
double ketquanu;
ketquanam= bodyfatnam(cannang,sodovong2);//1 +2+ cong thuc nam
ketquanu= bodyfatnu(cannang,sodovong2);// 1+ 2 + cong thuc nu
if (gioitinh[0] == 'nam'){
cout << "Your body fat is " << ketquanam<<endl;
}
else if (gioitinh[0] == 'nu'){
cout << "Your body fat is " << ketquanu <<endl;
}
system("pause");
return 0;
}
double bodyfatnam(double cannang, double sodovong2){//cong thuc nam
return (-98.42 + (4.15 *sodovong2) - (0.082 * cannang))/cannang;
}
double bodyfatnu(double cannang, double sodovong2){//cong thuc nu
return (-76.76 + (4.15 *sodovong2) - (0.082 * cannang))/cannang;
}
Bài liên quan
là
gioitinh
chứ không phải làgioitinh[0]
nhé.Bạn đưa phần title của câu hỏi vào trên vần code để mình sửa lại title cho gọn hơn nhé.
Đầu tiên là ở việc bạn khai báo
char gioitinh[0]
. Bạn khai báo như thế này thì không nên vì'nam'
là 3 kí tự,'nu'
là 2 kí tự thì bạn khai báo ít nhất phải làchar gioitinh[4];
. Mặc dù bạn khai báo như vậy và vẫn in ra đương, nhưng cũng nên tuân thủ luật lệ.Và sai chính là ở chỗ này
gioitinh[0] == 'nam'
.' '
chỉ nhận 1 kí tự thôi, bạn phải đổi nó lại thành" "
.Uầy, C hay C++ đều không cho phép so sánh kiểu mảng kiểu C với nhau đâu trời (cho dù compile không báo lỗi) vì hiểu theo mức thấp hơn, so sánh hai mảng là so sánh từng phần tử của mảng đó trong khi đại diện cho nó là tên biến - tức là địa chỉ phần tử đầu tiên -> so sánh khập khiễng.
Giải pháp: đổi kiểu
gioitinh
thànhstring gioitinh;
và thay ngơặc đơn thành ngoặc kép :v Lý do màstring
làm được là vì nó có hiện thực hóa (nghe ghê hén - implement) toán tử pằng-pằng==
.P/s: học Rust đi các bạn!
Đừng click vào dòng dưới mình chửi tùm lum ấy!
[spoiler]
bodyfatnam
/bodyfatnu
: wut da hell, man. Tại sao không là man & woman cho rồi, tiếng Anh, tiếng Việt từa lưa. Cố gắng đặt tên biến có ý nghĩa duy nhất, không chung chung và dùng tiếng Anh (nếu không thì tiếng Việt 100%).Thiếu thư viện iostream, không cẩn thận gì cả.
Đã lập trình C++ thì hãy dùng đồ của C++ và hạn chế tối đa đồ của C
Nên khai báo biến đầu hàm, dầu các khối lệnh để dễ chỉnh sửa, gỡ lỗi.
Nên tách các đoạn code có chức năng khác nhau ra (chỉ cần cách 1 dòng là đủ). Chú ý các thụt đầu dòng (indentation) và phong cách code, người gỡ lỗi nhìn ngán là họ lướt đi hết :v
[/spoiler]
cảm ơn anh. những lỗi trên em sẽ khắc phục.