30/09/2018, 18:02

Hỏi về lỗi code C++

Cho mình hỏi là cái code C++ này bị lỗi gì mà mình cũng không thể hiểu nổi…

#include <iostream>
#include <math.h>
using namespace std;
#define Pi 3.14

int Tinh(int chuVi, int dienTich, int banKinh)
{
	chuVi = banKinh * 2 * Pi;
	dienTich = banKinh*banKinh*Pi;
	return dienTich;
}
int main(){
	int a, b, c;
	cout << "Nhap vao banKinh cua hinh tron:" << " ";
	cin >> c;
	cout<<Tinh(a, b, c);
	cout << endl;
	system("pause");
}
Son Hoai viết 20:05 ngày 30/09/2018

Có thể nói rõ cho mình hiểu được không…và khi chạy thì báo lỗi ở dòng Tinh(a, b, c);

Hoang Ha Vu viết 20:02 ngày 30/09/2018

mình đã thử viết lại code của bạn mà nó vẫn chạy bình thường mà

Son Hoai viết 20:15 ngày 30/09/2018

Mình viết trên visual studio nó không chạy

Nguyễn Trọng Phương viết 20:12 ngày 30/09/2018

cin >> c;

Bạn nhập chỉ nhập vào c mà không nhập a, b thì nó sẽ lấy giá trị ngẫu nhiên cho a, b nên bị sai.

*grab popcorn* viết 20:04 ngày 30/09/2018

Code này sẽ chạy nhưng ra kq sai thôi chứ nhỉ :?
VS của bạn có hú lỗi gì ko?

Son Hoai viết 20:16 ngày 30/09/2018

Bạn nhập chỉ nhập vào c mà không nhập a, b thì nó sẽ lấy giá trị ngẫu nhiên cho a, b nên bị sai.

Nhưng cái này nhập bán kính vô thôi mà

Son Hoai viết 20:18 ngày 30/09/2018

Code này sẽ chạy nhưng ra kq sai thôi chứ nhỉ :?VS của bạn có hú lỗi gì ko?

ko biết cái VS nó sao nữa, Dev C thì chạy

Nguyễn Trọng Phương viết 20:18 ngày 30/09/2018

À hiểu ý bạn rồi. Vậy bạn coi lại cái VS xem nó có báo lỗi gì không?
Nếu vẫn không chạy thì có thể bạn tạo nhầm project rồi thường thì dễ bị nhầm giữa project application vs controler

Son Hoai viết 20:13 ngày 30/09/2018

À hiểu ý bạn rồi. Vậy bạn coi lại cái VS xem nó có báo lỗi gì không?Nếu vẫn không chạy thì có thể bạn tạo nhầm project rồi thường thì dễ bị nhầm giữa project application vs controler

loi nay nè bạn…
https://googledrive.com/host/0B2KK2LUNmdmYcm43NWNjWGM2RjA

Nguyễn Trọng Phương viết 20:08 ngày 30/09/2018

Lỗi do không sử dụng biến a, b.
Thường thì cái này không quan trọng trong một số trình biên dịch bạn có thể viết nó theo cách khác mà không dùng tới 2 biến này không?

Bảo Ngọc viết 20:03 ngày 30/09/2018

Anh boychip xin cho em hỏi là: Hàm bạn này làm ra là để nhập bán kính vào để tính ra chu vi và diện tích lên hiển nhiên là không có chu vi và diện tích để nhập vào rồi ạ, Em nghĩ ý tưởng bạn đấy là nhập a,b tổng quát sau đó nhập số c dựa vào lệnh trong hàm tính ra a và b. Nhưng em không biết là hàm khi thực hiện nó sẽ phải có đủ các tham số đầu vào xong nó mới thực hiện(a,b) hay chỉ cần tham số c sau đó dựa vào các lệnh thực thi trong hàm nó =>> giá trị a và b ạ?

Minh Hoàng viết 20:15 ngày 30/09/2018

Bạn chỉ cần cho a và b một giá trị nào đó trước khi truyền vào hàm, bằng 0 chẳng hạn.
Nhưng với cách truyền này thì a và b sau khi ra khỏi hàm ko thay đổi giá trị đâu. Cần phải truyền pointer hoặc reference vào.
Cách tốt nhất là viết một hàm tính chu vi, 1 hàm tính diện tích riêng. Mỗi hàm chỉ có 1 tham số là bán kính. Best Way.

Minh Hoàng viết 20:11 ngày 30/09/2018

A post was merged into an existing topic: Duplicate posts will be moved here

Nguyễn Trọng Phương viết 20:03 ngày 30/09/2018

Đúng rồi bạn. Chỉ cần nhập vào 1 biến thôi. 2 biến kia mình tính dựa trên biến c nên không cần khai báo trong hàm main cũng được. Chỉ khi nào mình cần sử dụng lại giá trị cần tính thì mới dùng 1 biến lưu lại giá trị đó.

Bảo Ngọc viết 20:15 ngày 30/09/2018

Nhưng sao bạn ấy dùng nhập c để tính a và b lại ra kết quả sai ạ?

Nguyễn Trọng Phương viết 20:04 ngày 30/09/2018

Sai là đúng rồi. Chu vi, diện tích thì kiểu dữ liệu phải là số thực chứ đâu phải số nguyên em

Bảo Ngọc viết 20:14 ngày 30/09/2018

Anh ơi em đổi sang float trong C sao lại thế này ạ?

Nguyễn Trọng Phương viết 20:03 ngày 30/09/2018

Em nên tách ra làm 2 hàm con để tính chu vi và diện tích riêng. Mỗi hàm sẽ trả về kết quả riêng, rồi mới lấy kết quả đó in ra nha em.
Vd:

float TinhChuVi(float bankinh)
{
    float chuvi = bankinh * 2 * Pi;
    return chuvi;
}

Trong hàm main chỉ cần gọi

float chuvi = TinhChuVi(c);

Hàm kia em cũng làm tương tự.

Bảo Ngọc viết 20:04 ngày 30/09/2018

vâng nếu làm em cũng làm như anh ạ, Nhưng em đang muốn hiểu nếu làm như bạn ấy thì chương trình sẽ thực hiện như thế nào? Mong anh hiểu thì nói “thông” giúp em ạ.

Nguyễn Trọng Phương viết 20:15 ngày 30/09/2018

Hàm của bạn ấy trả về 0. Nghĩa là mọi phép tính thực hiện chỉ có hiệu lực trong hàm. Ra khỏi hàm nó sẽ không còn giá trị nữa mà nó sẽ cho giá trị là 0. Nếu muốn làm như bạn ấy thì chỉ cần in kết quả trong hàm con luôn, nhưng như vậy xuống hàm main sẽ không còn giá trị đó nữa. Còn nếu em muốn dùng lại kết quả thì làm như cái anh vừa mới chỉ đó.

Bài liên quan
0