30/09/2018, 16:16

lỗi dính câu lệnh khi chạy chương trình

mình đã code bài này khi chạy thì phần nhập điểm nó bị dính vào nhau luôn không nhập được dù đã sử dụng câu lệnh cin.ignore();

#include<iostream>
#include<fstream>
#include<cstdio>
using namespace std;

 class hocsinh{
     string hoten;
     string lop;
     float dt,dl,dh;
public:
    string getten(){
        return hoten;
    }
    string getlop(){
        return lop;
    }
    float getdt(){
        return dt;
    }
    float getdl(){
        return dl;
    }
    float getdh(){
        return dh;
    }
    void nhap(){
        cout<<"nhap vao ten:";
        getline(cin,hoten);
        cin.ignore();
        cout<<"nhap vao lop:";
        getline(cin,lop);
        cin.ignore();
        cout<<"nhap vao diem toan,li,hoa:";
        cin>>dt;
        cin>>dl;
        cin>>dh;
    }
    void xuat(){
        cout<<"ten:"<<hoten<<endl;
        cout<<"lop:"<<lop<<endl;
        cout<<"diem:"<<dt<<" "<<dl<<" "<<dh<<endl;
    }
    float diemtb(){
        return (dt+dl+dh)/3;
    }
 };
 main(){
     
     int n;
     cout<<"nhap vao so hoc sinh:";cin>>n;
     hocsinh hs[n];
     for(int i=0;i<n;i++){
         hs[i].nhap();
     }
     for(int i=0;i<n;i++){
         hs[i].xuat();
     }
     char tenf[100];
     gets(tenf);
     ofstream f(tenf,ios::out);
     while(!f.fail()){
     cout<<"file loi hoac khong ton tai,moi ban nhap lai ten file:"<<endl;
     gets(tenf);
     }
     for(int i=0;i<n;i++){
         f<<hs[i].getten()<<hs[i].getlop()<<hs[i].getdt()<<hs[i].getdl()<<hs[i].getdh()<<hs[i].diemtb();
     }
 }
X viết 18:27 ngày 30/09/2018

xem dưới hàm main()
sau khi nhập n thì bn dùng fflush(stdin);
vì sau đó bn phải nhập họ tên (kiểu string)

Thực tế khắc nghiệt viết 18:30 ngày 30/09/2018

nhập tên với mã học sinh dùng fflush() rồi còn lại xài bt mà Huy nói quá chhuẩn. bạn bị sao nói rõ ra đi thử debugging xem

BaoLe viết 18:23 ngày 30/09/2018

Mình xin góp một vài ý về code của bạn như sau:
1/ Đây là một mảng tỉnh thì n phải là 1 const

hocsinh hs[n];

2/ Mở file để ghi muk không đóng lại khi kết thúc việc ghi.
3/ Khi dùng ofstream thì chỉ cần ofstream f(tenf); là đủ rồi.
4.Chưa khai báo thư viện string mà đã sử dụng.

Bài liên quan
0