-
-
-
- Lớp 2
- Tự nhiên và xã hội
- Tiếng việt
- Toán học
- Tiếng Anh
- Đạo đức
- Âm nhạc
- Mỹ thuật
- HĐ trải nghiệm, hướng nghiệp
- Lớp 4
- Khoa học
- Tiếng việt
- Toán học
- Đạo đức
- Tiếng Anh
- Lịch sử và Địa lí
- Công nghệ
- HĐ trải nghiệm, hướng nghiệp
- GD Thể chất
- Âm nhạc
- Lớp 5
- Khoa học
- Toán học
- Tiếng việt
- Tin học
- Tiếng Anh
- Đạo đức
- Lịch sử và Địa lí
- HĐ trải nghiệm, hướng nghiệp
- Lớp 6
- Công nghệ
- Tin học
- Lịch sử và Địa lí
- GDCD
- Ngữ văn
- Toán học
- Khoa học tự nhiên
- Tiếng Anh
- Âm nhạc
- Mỹ thuật
- HĐ trải nghiệm, hướng nghiệp
- Lớp 7
- Tiếng Anh
- GDCD
- Toán học
- Công nghệ
- Tin học
- Ngữ văn
- Lịch sử và Địa lí
- Khoa học tự nhiên
- HĐ trải nghiệm, hướng nghiệp
- Âm nhạc
- Lớp 8
- Tiếng Anh
- GDCD
- Toán học
- Công nghệ
- Ngữ văn
- Khoa học tự nhiên
- Lịch sử và Địa lí
- HĐ trải nghiệm, hướng nghiệp
- GD Thể chất
- Âm nhạc
- Lớp 9
- Tiếng Anh
- GDCD
- Toán học
- Công nghệ
- Tin học
- Ngữ văn
- Khoa học tự nhiên
- HĐ trải nghiệm, hướng nghiệp
- Lịch sử và Địa lí
- Lớp 10
- Hóa học
- Tiếng Anh
- Lịch sử
- Sinh học
- Địa lí
- Vật lí
- Tin học
- Toán học
- GD kinh tế và pháp luật
- Công nghệ
- Ngữ văn
- HĐ trải nghiệm, hướng nghiệp
- GD Thể chất
- GD Quốc phòng và An ninh
- Lớp 11
- Hóa học
- Tiếng Anh
- Vật lí
- Tin học
- Toán học
- Địa lí
- Công nghệ
- Lịch sử
- Ngữ văn
- Sinh học
- GD Thể chất
- GD Quốc phòng và An ninh
- GD kinh tế và pháp luật
- HĐ trải nghiệm, hướng nghiệp
-
-
- ИССЛЕДОВАТЬ
-
-
-
-
-
-
-
-
- FAVORITES
-
- QandAs
- Tin Học
- Grade 9
- Đề: ____________ Hãy viết chương trình làm các nhiệm vụ sau đây: Nhập từ bàn phím ba số thực a, b, c không âm. Kiểm tra xem ba số a, b, c đó có là độ dài ba cạnh của một tam giác hay không Trong trường hợp a, b, c
Đề: ____________ Hãy viết chương trình làm các nhiệm vụ sau đây: Nhập từ bàn phím ba số thực a, b, c không âm. Kiểm tra xem ba số a, b, c đó có là độ dài ba cạnh của một tam giác hay không Trong trường hợp a, b, c
Đề: ____________
Hãy viết chương trình làm các nhiệm vụ sau đây: Nhập từ bàn phím ba số thực a, b, c không âm. Kiểm tra xem ba số a, b, c đó có là độ dài ba cạnh của một tam giác hay không? Trong trường hợp a, b, c là độ dài ba cạnh của một tam giác, chương trình cần thông báo tên của tam giác và diện tích của nó (nếu có).
Input
Một dòng ghi 3 số thực a, b, c (0 < a, b, c <= 10^9) cách nhau một dấu cách trống
Output
Thông báo NO nếu không phải là 3 cạnh của tam giác.
Nếu thỏa mãn là 3 cạnh của tam giác thì:
Dòng 1: ghi tên của tam giác (TAM GIAC VUONG, TAM GIAC DEU, TAM GIAC CAN, TAM GIAC TU, TAM GIAC NHON).
Dòng 2: Ghi diện tích của tam giác, chính xác đến 2 chữ số thập phân
Code bài làm :
#include <bits/stdc++.h>
using namespace std;
int main() {
double a, b, c;
cin >> a >> b >> c;
if (a <= 0 && b <= 0 && c <= 0) {
cout << "NO" << endl;
return 0;
}
if (a + b > c && a + c > b && b + c > a) {
double p = (a + b + c) / 2;
double St = sqrt(p * (p - a) * (p - b) * (p - c));
if (a * a == b * b + c * c || b * b == a * a + c * c || c * c == a * a + b * b) {
cout << "TAM GIAC VUONG" << endl;
cout << setprecision(2) << fixed << St << endl;
}
else if (a == b && b == c) {
cout << "TAM GIAC DEU" << endl;
cout << setprecision(2) << fixed << sqrt(3) / 4 * a * a << endl;
}
else if (a * a > b * b + c * c || b * b > a * a + c * c || c * c > a * a + b * b) {
cout << "TAM GIAC TU" << endl;
cout << setprecision(2) << fixed << St << endl;
}
else if (a == b || b == c || a == c) {
cout << "TAM GIAC CAN" << endl;
cout << setprecision(2) << fixed << St << endl;
}
else {
cout << "TAM GIAC NHON" << endl;
cout << setprecision(2) << fixed << St << endl;
}
} else {
cout << "NO" << endl;
}
return 0;
}
Cho e hỏi sai chỗ nào và cách fix
______Cảm ơn________
This anwser using AI, please
Trong đoạn mã của bạn, có một số vấn đề cần được sửa đổi để chương trình hoạt động chính xác và đầy đủ. Dưới đây là chi tiết các lỗi và cách khắc phục:
1. Kiểm tra giá trị âm:
Bạn đang kiểm tra xem tất cả `a`, `b`, `c` đều không âm bằng điều kiện `if (a <= 0 && b <= 0 && c <= 0)`, điều này là không đúng. Thay vào đó, bạn chỉ cần kiểm tra xem có bất kỳ một cạnh nào là không dương. Sửa lại điều kiện như sau:
```cpp
if (a <= 0 || b <= 0 || c <= 0) {
cout << "NO" << endl;
return 0;
}
```
2. Kiểm tra điều kiện tam giác:
Sau khi xác nhận rằng các cạnh đều dương, bạn cần kiểm tra xem ba số có thỏa mãn điều kiện của một tam giác không. Điều kiện là: `a + b > c && a + c > b && b + c > a`. Bạn đã thực hiện đúng nhưng không rõ ràng và cần phải chắc chắn rằng giá trị các cạnh được kiểm tra đúng.
3. Tính diện tích và phân loại tam giác:
- Việc kiểm tra tam giác vuông, đều, cân, và nhọn/cân dường như đã chính xác tuy vậy cần kiểm tra tất cả các điều kiện một cách rõ ràng hơn.
- Trong trường hợp tam giác, phần tính toán diện tích cần chắc chắn rằng công thức Heron (đã có trong mã) là chính xác. Không có lỗi tại đây, nhưng bạn cần in ra diện tích cho tất cả các loại tam giác, không chỉ cho tam giác vuông và đều.
4. Định dạng đầu ra:
Đảm bảo rằng đáp án diện tích phải được định dạng chính xác đến hai chữ số thập phân.
Dưới đây là đoạn mã sau khi đã sửa lỗi:
```cpp
#include
#include
#include
using namespace std;
int main() {
double a, b, c;
cin >> a >> b >> c;
if (a <= 0 || b <= 0 || c <= 0) {
cout << "NO" << endl;
return 0;
}
if (a + b > c && a + c > b && b + c > a) {
double p = (a + b + c) / 2;
double St = sqrt(p (p - a) (p - b) * (p - c));
if (a a == b b + c c || b b == a a + c c || c c == a a + b * b) {
cout << "TAM GIAC VUONG" << endl;
} else if (a == b && b == c) {
cout << "TAM GIAC DEU" << endl;
St = (sqrt(3) / 4) a a; // Tính diện tích của tam giác đều
} else if (a a > b b + c c || b b > a a + c c || c c > a a + b * b) {
cout << "TAM GIAC TU" << endl;
} else if (a == b || b == c || a == c) {
cout << "TAM GIAC CAN" << endl;
} else {
cout << "TAM GIAC NHON" << endl;
}
cout << fixed << setprecision(2) << St << endl; // In diện tích với 2 chữ số thập phân
} else {
cout << "NO" << endl;
}
return 0;
}
```
### Giải thích:
- Đoạn mã trên đã sửa chữa vấn đề kiểm tra độ dài của tam giác và đảm bảo tính toán diện tích cho tất cả các loại tam giác.
- Kiểm tra đầu vào đã được cải thiện giúp tránh trường hợp các cạnh âm hoặc bằng 0.
- Đầu ra được định dạng chuẩn xác để phù hợp với yêu cầu của đề bài.
1. Kiểm tra giá trị âm:
Bạn đang kiểm tra xem tất cả `a`, `b`, `c` đều không âm bằng điều kiện `if (a <= 0 && b <= 0 && c <= 0)`, điều này là không đúng. Thay vào đó, bạn chỉ cần kiểm tra xem có bất kỳ một cạnh nào là không dương. Sửa lại điều kiện như sau:
```cpp
if (a <= 0 || b <= 0 || c <= 0) {
cout << "NO" << endl;
return 0;
}
```
2. Kiểm tra điều kiện tam giác:
Sau khi xác nhận rằng các cạnh đều dương, bạn cần kiểm tra xem ba số có thỏa mãn điều kiện của một tam giác không. Điều kiện là: `a + b > c && a + c > b && b + c > a`. Bạn đã thực hiện đúng nhưng không rõ ràng và cần phải chắc chắn rằng giá trị các cạnh được kiểm tra đúng.
3. Tính diện tích và phân loại tam giác:
- Việc kiểm tra tam giác vuông, đều, cân, và nhọn/cân dường như đã chính xác tuy vậy cần kiểm tra tất cả các điều kiện một cách rõ ràng hơn.
- Trong trường hợp tam giác, phần tính toán diện tích cần chắc chắn rằng công thức Heron (đã có trong mã) là chính xác. Không có lỗi tại đây, nhưng bạn cần in ra diện tích cho tất cả các loại tam giác, không chỉ cho tam giác vuông và đều.
4. Định dạng đầu ra:
Đảm bảo rằng đáp án diện tích phải được định dạng chính xác đến hai chữ số thập phân.
Dưới đây là đoạn mã sau khi đã sửa lỗi:
```cpp
#include
#include
#include
using namespace std;
int main() {
double a, b, c;
cin >> a >> b >> c;
if (a <= 0 || b <= 0 || c <= 0) {
cout << "NO" << endl;
return 0;
}
if (a + b > c && a + c > b && b + c > a) {
double p = (a + b + c) / 2;
double St = sqrt(p (p - a) (p - b) * (p - c));
if (a a == b b + c c || b b == a a + c c || c c == a a + b * b) {
cout << "TAM GIAC VUONG" << endl;
} else if (a == b && b == c) {
cout << "TAM GIAC DEU" << endl;
St = (sqrt(3) / 4) a a; // Tính diện tích của tam giác đều
} else if (a a > b b + c c || b b > a a + c c || c c > a a + b * b) {
cout << "TAM GIAC TU" << endl;
} else if (a == b || b == c || a == c) {
cout << "TAM GIAC CAN" << endl;
} else {
cout << "TAM GIAC NHON" << endl;
}
cout << fixed << setprecision(2) << St << endl; // In diện tích với 2 chữ số thập phân
} else {
cout << "NO" << endl;
}
return 0;
}
```
### Giải thích:
- Đoạn mã trên đã sửa chữa vấn đề kiểm tra độ dài của tam giác và đảm bảo tính toán diện tích cho tất cả các loại tam giác.
- Kiểm tra đầu vào đã được cải thiện giúp tránh trường hợp các cạnh âm hoặc bằng 0.
- Đầu ra được định dạng chuẩn xác để phù hợp với yêu cầu của đề bài.
Ответить
© 2025 Học Tốt Online - Chia Sẻ Tài Liệu Học Tập và Giải Bài Tập Miễn Phí
Russian
