Chào mọi người em đang là sinh viên năm 2 đang làm bài tập lớn về chương trình thi trắc nghiệm cho sinh viên. Thầy yêu cầu khi sinh viên chọn số phút thi thì phải điền đáp án trong khoảng thời gian đó. Hiện em đang bị lỗi chỗ nếu như để thời gian tự chạy hết thì chương trình đứng và lỗi luôn còn nếu nộp bài trước khi thời gian kết thúc thì hoạt động bình thường thì có cách nào xử lý không ạ. Em cảm ơn ạ.
struct ThoiGian
{
int Gio;
int Phut;
int Giay;
};
void WriteBlockChar(wchar_t* Arraych, int row, int col, int x, int y, int color)
{
CHAR_INFO* charater = new CHAR_INFO[row * col];
for (int i = 0; i < row * col; i++)
{
charater[i].Attributes = color;
charater[i].Char.UnicodeChar = Arraych[i];
}
COORD sizebuff = { col,row };
COORD pos = { 0,0 };
SMALL_RECT earea = { x,y,x + col - 1,y + row - 1 };
WriteConsoleOutput(GetStdHandle(STD_OUTPUT_HANDLE), charater, sizebuff, pos, &earea);
delete[] charater;
}
wchar_t InToA(int k)
{
switch (k)
{
case 0: return L'0';
case 1: return L'1';
case 2: return L'2';
case 3: return L'3';
case 4: return L'4';
case 5: return L'5';
case 6: return L'6';
case 7: return L'7';
case 8: return L'8';
case 9: return L'9';
default: return L' '; // Return a space if not a valid digit
}
}
bool DoiGio(ThoiGian* h)
{
if (h->Giay > 0)
{
--h->Giay;
}
else if (h->Phut > 0)
{
h->Giay = 59;
--h->Phut;
}
else if (h->Gio)
{
--h->Gio;
h->Phut = 59;
h->Giay = 59;
}
else return 0;
return 1;
}
void ThemVaoChuoi(wchar_t* h, ThoiGian* j)
{
int bait = 0;
bait = j->Giay;
h[7] = InToA(bait % 10);
h[6] = InToA(bait /= 10);
bait = j->Phut;
h[4] = InToA(bait % 10);
h[3] = InToA(bait /= 10);
bait = j->Gio;
h[1] = InToA(bait % 10);
h[0] = InToA(bait /= 10);
}
void InDongHo(int phut)
{
ThoiGian h = { 0, phut, 0 };
wchar_t a[8] = { L'0',L'0',L':',L'0',L'0',L':',L'0',L'0' };
while (stop)
{
if (!DoiGio(&h)) stop = 0;
ThemVaoChuoi(a, &h);
WriteBlockChar(a, 1, 8, 70, 3, 0x004);
Sleep(950);
}
return;
}
PHẦN HÀM MAIN:
cout << "Nhap so phut thi: ";
cin >> thoigianthi;
clock = thread(InDongHo, thoigianthi);
stop = true;
for (int i = 0; i < soluongcauhoi; i++)
{
InCauHoiThi(TimCauHoi(ketqua[i]));
}
for (int i = 0; i < soluongcauhoi; i++)
{
cin >> dapansv[i];
if (dapansv[i] == bangbam[ketqua[i]]->Dapan)
{
diemthi += diemthi1cau;
}
}
while (stop) {
if (std::cin.get() == '\n')
{
stop = false;
}
clock.detach();
}