Có thể là do chỗ này.Code:(SINHVIEN HOSO[150],int &n)
Và chố nàyCode:printf("Ma SV: "); gets(HOSO[i].masv); printf("Ho Va Ten: "); gets(HOSO[i].hoten);
mình đang làm struct quản lý sinh viên
đơn giản chỉ là nhập sinh viên và sau đó tìm kiếm sinh viên dựa vào mã sv
mình biên dịc thì nó ko báo lổi nhưng khi chạy thì ko đúng yêu cầu
mình nhập vào mã sinh viên cần tìm mà nó ko ra gì hết
các bạn xem dùm mình nha
đây là code của mình
Code:#include <stdio.h> #include <conio.h> struct sinhvien { char masv[8]; char hoten[30]; char gioitinh[5]; char diachi[50]; char timsv[8]; float toan; float anhvan; float van; float dia; float su; float ly; }; typedef struct sinhvien SINHVIEN; void NhapSv(SINHVIEN HOSO[150],int &n) { printf("Ban muon nhap bao nhieu sinh vien: "); scanf("%d",&n); fflush(stdin); for(int i=1;i<=n;i++) { printf("\n"); printf("Ma SV: "); gets(HOSO[i].masv); printf("Ho Va Ten: "); gets(HOSO[i].hoten); printf("Gioi Tinh: "); gets(HOSO[i].gioitinh); printf("Dia Chi: "); gets(HOSO[i].diachi); printf("Diem Mon Hoc.\n"); printf("Toan: "); scanf("%f",&HOSO[i].toan); printf("Anh Van: "); scanf("%f",&HOSO[i].anhvan); printf("Van: "); scanf("%f",&HOSO[i].van); printf("Dia: "); scanf("%f",&HOSO[i].dia); printf("Su: "); scanf("%f",&HOSO[i].su); printf("Ly: "); scanf("%f",&HOSO[i].ly); fflush(stdin); } } void XuatSv(SINHVIEN HOSO[150],int i) { printf("\n"); printf(HOSO[i].masv); printf("\n"); printf(HOSO[i].hoten); printf("\n"); printf(HOSO[i].gioitinh); printf("\n"); printf(HOSO[i].diachi); printf("\n"); printf("%1.2f",HOSO[i].toan); printf("\n"); printf("%1.2f",HOSO[i].anhvan); printf("\n"); printf("%1.2f",HOSO[i].van); printf("\n"); printf("%1.2f",HOSO[i].dia); printf("\n"); printf("%1.2f",HOSO[i].su); printf("\n"); printf("%1.2f",HOSO[i].ly); printf("\n"); } void TimSv(SINHVIEN HOSO[150],int n) { char timsv[8]; printf("Nhap Ma SV Can Tim: "); gets(timsv); for(int i=1;i<=n;i++) if(timsv==HOSO[i].masv) XuatSv(HOSO,i); } void main() { int n; SINHVIEN sv[150]; NhapSv(sv,n); TimSv(sv,n); getch(); }
Có thể là do chỗ này.Code:(SINHVIEN HOSO[150],int &n)
Và chố nàyCode:printf("Ma SV: "); gets(HOSO[i].masv); printf("Ho Va Ten: "); gets(HOSO[i].hoten);
http://student.hedspi.hut.edu.vn/
--Welcome--
Dùng compiler nào ? Error đâu cậu ?
C Code:
#include <stdio.h> #include <conio.h> struct sinhvien { char masv[8]; char hoten[30]; char gioitinh[5]; char diachi[50]; char timsv[8]; float toan; float anhvan; float van; float dia; float su; float ly; }; typedef struct sinhvien SINHVIEN; void NhapSv(SINHVIEN HOSO[150],int &n) { for(int i=1;i<=n;i++) { } } void XuatSv(SINHVIEN HOSO[150],int i) { } void TimSv(SINHVIEN HOSO[150],int n) { char timsv[8]; for(int i=1;i<=n;i++) if(timsv==HOSO[i].masv) XuatSv(HOSO,i); } void main() { int n; SINHVIEN sv[150]; NhapSv(sv,n); TimSv(sv,n); getch(); }
Mình nhớ là đối với kiểu dữ liệu số thì ngoại trừ kiểu số nguyên ra , các kiểu còn lại ( số thực , ... ) ko được trực tiếp nhập vào một cấu trúc . Phải thông qua một biến trung gian . Bạn thử sửa lại là :
C Code:
float toan; HOSO[i].toan=toan;
Mình còn lưu ý bạn chỗ này :
Bạn ko nên so sánh 2 chuỗi như vậy mà nên dùngC Code:
if(timsv==HOSO[i].masv) XuatSv(HOSO,i);C Code:
mình dùng vc++2006
cái này ko có error RR à
nhưng mà khi chạy nó chó nhập dữ liệu vào
nhập xong thì nó hiện lên dòng
Nhập mã sinh vien cần tìm
nhưng mà khi mình nhập vào mã sinh viên để tìm thì nó ko hiện ra cái gì cả
tức là nó ko tìm dc thông tin của sinh viên mặc dù nhập đúng
hình như dòng này của mình bị saiCode:void TimSv(SINHVIEN HOSO[150],int n) { char timsv[8]; printf("Nhap Ma SV Can Tim: "); gets(timsv); for(int i=1;i<=n;i++) if(timsv==HOSO[i].masv) XuatSv(HOSO,i); }
vì khi mình thử lại kiểu dữ liệu cho mã sinh viên của cả bài la là kiểu int thì nó lại tìm dc
Code:int timsv; printf("Nhap Ma SV Can Tim: "); scanf("%d",&timsv);
Có rất nhiều chỗ cậu mix giữa scanf và gets(), dễ làm trôi buffer lắm. Vì khi nhập int phím enter sẽ dính lại. Nên tập làm quen với cấu trúc này :
Không nên xài void main(), dẹp nó đi, dùng int main().C Code:
Và chỗ quan trọng thì con bé pro-evolution nó nói ở trên rùi đó
C Code:
thank RR và sieuphuong nha
mình làm ok rồi
Thứ nhất mình góp ý như sau: hàm tìm và tất cả các hàm khác ngoài hàm main ko nên để làm nhiều công việc như vậy! Tìm là chỉ tìm ko nên viết gì trong đó cả, viết là việc của hàm Xuat, gọi là việc của hàm main.
Thứ hai tìm kiếm nên trả về vị trí ko nên trả về giá trị.
Thứ ba hình như hàm tìm của bạn thiếu {}
Biến n bạn khai báo ở hàm main mà! Sao lại gọi ở hàm nhập vậy, khi ra ngoài thì n bằng bao nhiêu! Bạn để nhập n ở hàm main đi!