30/09/2018, 23:52

Code C vui nhộn :))

help mình đang code cho vi điều khiển thuần C thôi.có chỗ này muốn hỏi ae.mình có đoạn code sau

unsigned int response;
// 1 hàm để rủ cô gái đi chơi
 unsigned int Girl( char* step ,char* result1, char * result2) {
// cô gái sẽ phản hồi.trong phản hồi đó  có result1 hoặc result 2
 if xuất hiển result1 thì response=1;
if xuất hiện result2 thì response=2;
return response;
}
main(){
// bước 1. mình sẽ lầy cho đến khi cô  ý ok thì thoip
while ( Girl(" minh đi ăn kem nhé","OK ", "EEROR")!=1);
// bước 2
 while(Girl("mình đi bơi nhé","OK","EEROR")!=1);
// bước 3 
 while(Girl(" minh đi xem phim nhé","OK","EEROR")!=1);
//bước 4
while(Girl(" lam bạn gái a nhé"," OK ", " làm bạn nhé")!=1);

giả sử bh đến bước 4, nghĩa là 3 bước kia đều “OK” mà bước 4 e ý trả về là “làm bạn nhé” thì bh mình muố quay lại bước 1 để lại từ đầu thì làm ntn à.

  • mỗi lần rủ đi e chỉ muốn rủ 6 lần nếu quá e lại quay lại step 1 là rủ đi ăn kem trc thì làm ntn a. bác nào gợi ý e cái e cảm ơn
Văn Dương viết 02:05 ngày 01/10/2018

Chưa thấy code VĐK nào như thế này @@

Khánh Nguyễn viết 01:56 ngày 01/10/2018

Bạn thử cách này xem:

main(){

	int accepted = 0; // 0 = not accept, 1 = accept

	while (accepted == 0)
	{
		int tried = 0;

		while (Girl(" minh đi ăn kem nhé","OK ", "EEROR") !=1 && tried < 6)
		{
			++tried;
		}

		if (tried < 6)
		{
			tried = 0;
			while (Girl(" minh đi ăn kem nhé","OK ", "EEROR") !=1 && tried < 6)
			{
				++tried;
			}


			if (tried < 6)
			{
				tried = 0;
				while (Girl(" mình đi bơi nhé","OK ", "EEROR") !=1 && tried < 6)
				{
					++tried;
				}

				if (tried < 6)
				{
					tried = 0;
					while (Girl(" minh đi xem phim nhé","OK ", "EEROR") !=1 && tried < 6)
					{
						++tried;
					}

					if (tried < 6)
					{
						tried = 0;
						while (Girl(" lam bạn gái a nhé"," OK ", " làm bạn nhé") !=1 && tried < 6)
						{
							++tried;
						}
						
						if (tried < 6)
							accepted = 1;

					}

				}


			}


		}


	}


}
*grab popcorn* viết 01:53 ngày 01/10/2018

Bạn có th ể tạo 1 biến state + áp dụng function pointer array

int (*p[4])(char *, char *, char *) = {func1, func2, func3, func4};
ở func 1 nếu input = result1 -> return 1 còn ko return 0
ở func 2 nếu input = result1 -> return 2 còn ko return 1

ở func 4 nếu input = result2 -> return 0 còn ko return 5

từ đó ta được

int state = 0
do {
state = p[state]();
} while(state != 5)
Thế Phan viết 01:57 ngày 01/10/2018

thanks pro nhé có j mình sẽ hỏi tiếp :))

Bài liên quan
0