ผม code อันเดิมที่คุณ holeinone9 ผมแก้ code เสียดาย indent ไม่ได้
ถ้าอยากเขียน code ให้เทพนะครับแนะนำว่าให้ indent และเขียน code ให้อ่านง่ายแบ่งเป็นส่วนให้ชัดเจน
ถ้า break เยอะมันจะอ่าน code ยากเท่าครับ ถ้าทำงานด้านนี้จะรู้ว่าไม่ควรเขียน break บ่อยบ่อย
เพราะแทนที่เราจะรุ้ว่าลูปนี้จะทำอะไรเราต้องดูลึกเอาไปในเงื่อนไข ถ้า code ไม่ยาวก็ไม่ฏ้ไม่รู้สึกอะไร
แต่ถ้า code ยาวยาวอ่านเองไม่ออกแล้วจะหนาวครับ ดีไม่ดีถึงกับเขียนใหม่
สิ่งที่ผมแก้เพิ่มให้ก็คือ
1.แก้การเช็คเงื่อนไขที่ซ้ำซ้อนกัน
2.แก้ไขการรับข้อมูลเข้าให้เช็คที่ while แทน if
3.ใช้ฟังก์ชั่นเพื่อให้อ่าน code ได้ง่ายยิ่งขึ้น
(ผมขอใช้ตัวแปล global variable นะครับแม้ว่าจะผิดหลักก็เถอะ)
code นี้ผมได้แก้เพราะเพื่อลดทรัพยากรที่ใช้ด้วยไป 1 คำสั่งต่อการวนลูป 1 ครั้ง
ถามว่าจำเป็นรึเปล่ามันจำเป็นมากเลยครับ ลองคิดดูถ้าวนซัก 1000 รอบก็จะกลายเป็นว่าทำเกินมา 1000 คำสั่ง
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
void input_number() {
printf("Input Number (1 - 10): ");
scanf("%d",&Num);
while(Num < 1 || Num > 10){ /*(ถ้ารับค่าแล้วเป็นเลข 1-10 ก็จะหยุดรับค่า)*/
printf("\n\n\n\n\n\n\n\n\n\t\t\t Not Complete");
printf("\n\n\t\t\tpress ENTER to try agin");
getch(); /*(รับค่า 1 ค่าจากแป้นพิมพ์โดยไม่แสดงอักษร ปกติมักจะใช้เพื่อหยุด)*/
printf("Input Number (1 - 10): ");
scanf("%d",&Num);
system("CLS");
}
}
void proces_snumber() {
printf("Try input number 1-10 (5 Round)\n\n");
while(i<6||Flag==1){ /*(ถ้าสุ่มเลขเกิน 5 หรือทายเลขถูกให้ออกลูป)*/
printf(" Round %d NO. : ",i);
scanf("%d",&Num_User);
if(Num_User >= 1 && Num_User <= 10){ /*(ตวรจว่าเลขนั่นอยู่ในช่วง 1-10 รึเปล่า)*/
i++;
if(Num_User == Num) { /*(ตวรจว่าเลขนั่นทายถูกรึเปล่า)*/
printf(" ERROR! you input number over length press try agin\n\n");
}
}
void display_number() {
if(Flag == 1) { /*(ส่วนแสดงผลตอนท้าย ถ้าชนะแสดงว่า....)*/
printf("\n\n\n\n\n\n\t\t\t You Win");
printf("\n\n\t\t\t Answer %d you have %d time",Num,i);
}
else { /*(ส่วนแสดงผลตอนท้าย ถ้าแพ้แสดงว่า....)*/
printf("\n\n\n\n\n\t\t\t\tGame Over !");
printf("\n\n\t\t\t\tAnswer is %d",Num);
}
getch();
}
void main() {
int Num,Num_User,i=1,Flag=0;
system("COLOR A");
input_number(); /*(เรียกฟังก์ชั่นที่ทำหน้าที่รับข้อมูล)*/
process_number(); /*(เรียกฟังก์ชั่นที่ทำหน้าที่ตรวจสอบข้อมูล)*/
display_number(); /*(เรียกฟังก์ชั่นที่ทำหน้าที่แสดงข้อมูล)*/
}
ไม่รู้ว่าจะช่วยได้มากแค่ไหนผมก็ code ไม่ค่อยเก่งเหมือนกัน ยังได้แค่พื้นพื้นเท่านั้น
ผลลัพธ์ก็ได้เหมือนคนด้านบนนั่นแหละครับ แม้ว่าบรรทัดของผมจะเยอะกว่าแต่ perfomance และ การนำไปใช้ต่อจะดีกว่าครับ