ภาษาซี กับ โจทย์ Loop ในตำนาน (7) รับค่าตัวเลขไปเรื่อยๆจนกว่าจะเจอเลข 0 แล้วจึงหยุดรับค่า พร้อมทั้งนับว่าหารด้วย 5 ลงตัว

ตอบกระทู้

รูปแสดงอารมณ์
:icon_plusone: :like: :plusone: :gfb: :-D :) :( :-o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: :angry: :baa: :biggrin:
รูปแสดงอารมณ์อื่นๆ

BBCode เปิด
[img] เปิด
[url] เปิด
[Smile icon] เปิด

กระทู้แนะนำ
   

มุมมองที่ขยายได้ กระทู้แนะนำ: ภาษาซี กับ โจทย์ Loop ในตำนาน (7) รับค่าตัวเลขไปเรื่อยๆจนกว่าจะเจอเลข 0 แล้วจึงหยุดรับค่า พร้อมทั้งนับว่าหารด้วย 5 ลงตัว

ภาษาซี กับ โจทย์ Loop ในตำนาน (7) รับค่าตัวเลขไปเรื่อยๆจนกว่าจะเจอเลข 0 แล้วจึงหยุดรับค่า พร้อมทั้งนับว่าหารด้วย 5 ลงตัว

โดย Aussadawut » 17/11/2018 6:08 pm

ภาษาซี กับ โจทย์ Loop ในตำนาน

สำหรับหลายๆคนที่เรียนมาแล้วหรือกำลังเรียนสายคอมพิวเตอร์ โปรแกรม จะต้องเจอกับโจทย์ Loop ชวนปวดหัวของอาจารย์อยู่เรื่อยๆ
นั่นก็เพราะว่า เราจะได้ฝึกให้มีความชำนาญในเรื่อง Loop และเข้าใจการทำงานของมันได้ง่ายขึ้นนั่นเอง

Loop คือ การทำงานวนซ้ำๆไปเรื่อยๆ จนกว่าจะถึงจุดที่เรากำหนดไว้

และโพสต์นี้เป็นโพสต์ที่ 7 แล้ว สำหรับ Loop ภาษาซีในตำนาน

โจทย์ : รับค่าตัวเลขไปเรื่อยๆจนกว่าจะเจอเลข 0 แล้วจึงหยุดรับค่า พร้อมทั้งนับว่าหารด้วย 5 ลงตัว มีกี่จำนวน
cintsertmod5.png
cintsertmod5.png (32.75 KiB) Viewed 4890 times

โค้ด: เลือกทั้งหมด

#include<stdio.h>
main(){
        int a=1;
        int num[100],i=0,count=0,j=0;
        while(a=1){	// ให้วน loop ไปเรื่อย ถ้า a=1 อันนี้เป็น infinity loop 
                printf("Enter number : ");	// แสดงข้อความรับค่า
                scanf("%d",&num[i]);	// รับค่าตัวเลขเก็บใน Array
                if(num[i]==0){	// ถ้า Array ในตำแหน่งล่าสุด มีค่าเท่ากับ 0
                        break;	// สั่งให้หยุดการทำงานของ loop นี้
                }
                i++; count++;	// บวกค่าของ i และ count เพิ่มครั้งละ 1 ของแต่ละรอบ ค่า i คือ ตำแหน่ง Array ค่า count จำนวน Array
        }
	// ส่วนของการแสดงผลใน Array 
	int result=0,div5=0; // result ใช้เก็บค่าหลัง modulo และ div ไว้นับจำนวนเลขที่หารด้วย 5 ลงตัว
        for(j=0;j<=count;j++){	// วน loop for ตั้งแต่ j มีค่าเท่ากับ 0 จนถึง j มีค่าเท่ากับ count
                result = num[j]%5;	// นำค่าใน Array modulo ด้วย 5 
                if(result==0){	// ถ้า result เท่ากับ 0 
                        div5 += 1;	// ให้จำนวนที่หารด้วย 5 ลงตัวบวก 1 
                }
        }
        printf("Count Div 5 : %d\n",div5-1);	// แสดงผลจำนวนที่หารด้วย 5 ลงตัวทั้งหมด แต่เนื่องจาก 0 modulo ด้วย 5 เท่ากับ 0 จึงสั่งให้ลบจำนวนนับออก 1 ตัว
}

จริงๆแล้วเราสามารถเขียนให้สั้นลงได้ ถ้าหากเราเข้าใจการทำงานของมันอย่างดีแล้ว
และหวังว่าโพสต์นี้ จะเป็นแนวทางให้กับน้องๆที่อยากเป็นโปรแกรมเมอร์ในอนาคตนะครับ
------------------------------------------------------------------------------------------------------------

ข้างบน