Kiểm tra giúp code C++ bị in thừa chữ

#include <iostream>
#include <windows.h>
#include <conio.h>
#include  <stdio.h>
void gotoxy(int x, int y)
{
    static HANDLE h = NULL;  
    if(!h)
	
        h = GetStdHandle(STD_OUTPUT_HANDLE);
    COORD c = { x, y };  
    SetConsoleCursorPosition(h,c);
}
using namespace std;

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main() {int x=10 , y, a;
a=0;
y=0;
	 while(x>0){
	 
	 	while (a==0){Sleep(1000);
		  
			 /*if(kbhit()){
			 	char i = getch();
			 	if(i==87){
			 		a=1;
				 }
			 }8*/ 
	 		if (y>4)
	 		{ a=1;
			 break;
			 }
	 		 y++;
		  
		 gotoxy(x, y-1);
		 cout << "    ";
	 		gotoxy(x, y);
	 		cout << "chay";
		 }	 	while (a==1){Sleep(1000);
		  
	 		if (y<0)
	 		{	a=0;
	 		 
			 break;
			 }y--;
		 gotoxy(x, y+1);
		 cout << "    ";
	 		gotoxy(x, y);
	 		cout << "chay";
			 /*if(kbhit()){
			 	char i = getch();
			 	if(i==83){
			 		a=0;
				 }
			 }*/
	 		 
		 }	 
	  
}
    system ("pause");
	return 0;
}


tui viết cái dòng lệnh thế này để cho chữ ‘chay’ nó đi lên đi xuống nhưng khi chạy chương trình thì tới vòng thứ 2 nó lại in thừa 1 chữ ‘chay’, mấy bác có thể giải thích cho tui tại sao lại thế được không (tui sài dev c++)

Viết mã cũng “đường nét uốn lượn” quá, chắc có hoa tay.
Bạn định dạng mã lại cho dễ nhìn được không?


In thừa như thế nào? Hình đâu?

1 Like

tui mới học code, viết sao cho tui dễ hiểu thôi
ảnh thì tui không biết chèn vào, nói chung là như này

        chaychay

chữ chay bên trái thì đi lên đi xuống như tui muốn còn chữ chay bên phải thì cứ đứng yên một chỗ, cứ xong mỗi một vòng lặp while là nó tự in ra chữ chay thừa bên phải tại tọa độ y=0

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