PDA

View Full Version : Cho em hỏi về C



ansobimat
26-04-2009, 16:43
Các bác trên diễn đàn cho em hỏi tý.Chương trình C:
em có khai báo
typedef struct sinhvien
{ char masv[10]
char hoten[30]
int Toan;
int Hoa;
int Ly;
} sinhvien;

struct sinhvien a[100];
bây giờ em có thể khai báo 1 biến là

int dtb;

sau đó em gán dtb=(a[i].Toan+a[i].Hoa+a[i].Ly)/3 và khi in ra em dùng hàm printf("%d",a[i].dtb) như vậy có được không?

Nếu không thì làm thế nào để có biến dtb chứa trong kiểu cấu trúc sinh viên và tính được = tổng 3 điểm /3.
Em mới học C nên còn gà, mong các bác chỉ giúp cho. cám ơn rất nhiều.

binprolab
26-04-2009, 20:29
không phải
printf("%d",a[i].dtb) mà là
printf("%d",dtb)

hoặc nếu khai báo biến dtb trong struct thì bạn có thể tạo thêm 1 hàm
void dtb(){dtb = (toan + ly + hoa)/3} sau đó để tính dtb cho từng sinh viên bạn phải gọi hàm dtb cho từng sinh viên như sau:
for(int i=0; i<100; i++) a[i].dtb();

vanquyenhp
27-04-2009, 09:47
Mình thấy bạn khai báo thế không ổn, phải khai báo lại.
dtb=(a[i].Toan+a[i].Hoa+a[i].Ly)/3 : khi thực hiện phép chia này thì kết quả có phần thập phân nên bạn phải khai báo là float dtb(thay vì int dtb). Sau đó trong lệnh printf("%d",dtb) bạn phải viết lại là printf("%f",dtb).
Còn muốn cho dtb chứa trong kiểu cầu trúc thì bạn đưa luôn khai báo vào trong kiểu cấu trúc. Trong chương trình thì dùng lệnh a[i].dtb=(a[i].Toan+a[i].Hoa+a[i].Ly)/3. Dùng hàm như trên quả thật mình cũng không hiểu.

kimduquan
28-04-2009, 08:54
Mình thấy bạn khai báo thế không ổn, phải khai báo lại.
dtb=(a[i].Toan+a[i].Hoa+a[i].Ly)/3 : khi thực hiện phép chia này thì kết quả có phần thập phân nên bạn phải khai báo là float dtb(thay vì int dtb). Sau đó trong lệnh printf("%d",dtb) bạn phải viết lại là printf("%f",dtb).
Còn muốn cho dtb chứa trong kiểu cầu trúc thì bạn đưa luôn khai báo vào trong kiểu cấu trúc. Trong chương trình thì dùng lệnh a[i].dtb=(a[i].Toan+a[i].Hoa+a[i].Ly)/3. Dùng hàm như trên quả thật mình cũng không hiểu.
trong cấu trúc thì chỉ có thể khai báo định lượng các biến chứ ko thể khai báo định tính ,bạn có thể khai báo trong struct là int dtb nhưng việc gán giá trị cho biến này chỉ có thể thực hiện được trong 1 hàm ở ngoài cấu trúc.