Lỗi nhập dữ liệu khi sử dụng gotoxy

#include <iostream>
#include <Windows.h>
using namespace std;

void gotoxy(int x, int y)
{
	static HANDLE h = NULL;
	if (!h)
		h = GetStdHandle(STD_OUTPUT_HANDLE);
	COORD c = { x, y };
	SetConsoleCursorPosition(h, c);
}
void check(int &nN, int col, int row);
void Enter_date(int &nD);

int main()
{
	int nD = 0;
	Enter_date(nD);

	system("pause");
	return 0;
}

void check(int &nN, int col, int row)
{
	float fCheck = 0;
	do
	{
		gotoxy(col, row);
		cin >> fCheck; //Cái này em dùng để đưa con trỏ về sau chữ "Month: " 
		cout << endl;
		if (fCheck <= 0 || fCheck - (int)fCheck != 0)// em check xem có phải số nguyên dương hay không
		{
			cout << "You enter fail. Please enter again." << endl;
			for (int i = 0; i <= 34; i++) // 0 -> 34 là nơi em muốn xóa dòng chữ này
			{
				gotoxy(i, row + 1);
				cout << " ";
			}
		}
	} while (fCheck <= 0 || fCheck - (int)fCheck != 0);
	nN = fCheck;
}

void Enter_date(int &nD)
{
	cout << "Enter date." << endl;
	cout << "Month: ";
	check(nD, 7, 1);
}

Khi chạy chương trình em gặp nhiều vấn đề là:

  • Khi nhập số cho month em gặp sự cố là nhập số nhưng nó thành chữ việt có dấu.

  • Khi em enter chạy thử thì nó cứ lặp đi lặp lại, em không thể cin>> thêm lần nào.(Mọi người có thể chạy và xem thử).

Mong mọi người giúp em giải đáp những thắc mắc. Cảm ơn mọi người

Bạn có thấy chữ VIE góc dưới, bên phải (gần khung hiển thị thời gian) ở thanh tác vụ không (taskbar)?
Bạn đang gõ tiếng Việt kiểu VNI.

7 Likes

Bạn nhấn tổ hợp phím Windows + Space để đổi lại bình thường

4 Likes

wwaoo. Được rồi anh ạ. Mà em có thắc mắc là những chương trình khác em k gặp vấn đề này nhưng tới khi bài này em lại gặp. Anh có hiểu vì sao k ạ?

Em cảm ơn anh. :heart_eyes: :heart_eyes: :heart_eyes:

À nhiều khả năng là em đã vô tinh nhấn tổ hợp phím Windows + Space

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?