Gavuon Tiểu học
Tổng số bài gửi : 5 Điểm : 64 Số lần được cảm ơn : 2 Sinh nhật : 01/01/1992 Ngày gia nhập : 18/04/2010 Tuổi : 32 Đến từ : Làng Trăng
| Tiêu đề: Lỗi nhập mssv Sun Apr 18, 2010 3:33 pm | |
| Chào các bạn, mình đang viết chương trình C++ (Code ben duoi), chương trình danh sách sinh viên. Nhưng khi mình run chương trình thì không cách nào nhập được MSSV, bạn nào biết chỉ mình với. - Code:
-
#include <iostream> #include <stdio.h> #include <conio.h> #include <string.h> using namespace std; typedef struct{ char mssv[8]; char hoten[35]; char lop[9]; char namsinh[8]; float dtb; char xl[10]; }SinhVien; SinhVien* ds;
void Nhap(SinhVien *ds, int n){ for(int i=0;i<n;i++){ cout <<"Nhap vao thong tin sinh vien thu "<< i+1 <<"\nNhap vao MSSV: "; cin.getline(ds[i].mssv,8); cout <<"Nhap vao ho va ten sinh vien: "; cin.getline(ds[i].hoten,34); cout <<"Nhap vao lop cua sinh vien: "; cin.getline(ds[i].lop,9); cout <<"Nhap vao nam sinh: "; cin.getline(ds[i].namsinh,8); cout << "Nhap vao diem trung binh cua sinh vien: "; cin >> ds[i].dtb; } } void in(SinhVien *ds, int n){ cout <<"\t\t\tDANH SACH SINH VIEN\n"; cout << " MSSV | Ho va Ten | Lop | Nam sinh |Diem trung binh| Xep Loai\n"; for(int i=0;i<n;i++){ cout <<ds[i].mssv<<" |" ; cout <<ds[i].hoten<<" |"; cout <<ds[i].lop<<" |"; cout <<ds[i].namsinh<<" |"; cout <<ds[i].dtb<<" |"; cout <<ds[i].xl<<" |\n"; } }
int main(){ int n; char inds[2]; cout<<"Nhap so luong sinh vien can nhap thong tin: "; cin>> n; SinhVien *ds = new SinhVien[n]; Nhap(ds,n); cout <<"Ban co muon in danh sach ra man hinh khong(y/n)?"; cin.getline(inds,2); if(strcmp(inds ,"y")==0 or strcmp(inds,"Y")==0){ in(ds,n); } else cout <<"Inputing is ended, please press enter to quit!"; getch(); return 0; }
|
|
ddtan90 Trung học
Tổng số bài gửi : 32 Điểm : 198 Số lần được cảm ơn : 15 Sinh nhật : 01/01/1990 Ngày gia nhập : 02/03/2010 Tuổi : 34 Đến từ : Soc Trang
| Tiêu đề: Re: Lỗi nhập mssv Mon Apr 26, 2010 5:58 pm | |
| Xin lỗi bạn GaVuon vi lâu quá không có lên diễn đàn nên không trả lời câu hỏi của bạn được. Lỗi chương trình của bạn cũng là lỗi thường thấy của dân lập trình và nó cũng đã khiến biết bao nhiêu người phải ôm đầu. Giải thuật không sai, mọi thứ khác đều ok trừ 1 điều, sau khi bạn nhập xong số lượng sinh viên sẽ nhập vào thì số lượng sẽ được gán cho số_lượng còn phím enter thì vẫn còn đó trong bộ nhớ đệm. do đó nó sẽ được gán cho MSSV. Bạn chỉ cần thêm vào trong chương trình một dòng lệnh để xóa bộ nhớ đệm đi. - Trích dẫn :
- void Nhap(SinhVien *ds, int n){
for(int i=0;icout <<"Nhap vao thong tin sinh vien thu "<< i+1 <<"\nNhap vao MSSV: "; fflush(stdin); cin.getline(ds.mssv,; cout <<"Nhap vao ho va ten sinh vien: "; cin.getline(ds.hoten,34); cout <<"Nhap vao lop cua sinh vien: "; cin.getline(ds.lop,9); cout <<"Nhap vao nam sinh: "; cin.getline(ds.namsinh,; cout << "Nhap vao diem trung binh cua sinh vien: "; cin >> ds.dtb; } |
|