Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++
C++
  1. โปรแกรม C++ อัลกอริทึมสร้างตัวเลขสุ่ม Park-Miller

    อัลกอริทึมสร้างตัวเลขสุ่ม Park-Miller อัลกอริทึมสร้างตัวเลขสุ่ม Park-Miller เป็นอีกวิธีหนึ่งในการสร้างตัวเลขสุ่ม สูตรทั่วไปของตัวสร้างตัวเลขสุ่ม (RNG) ประเภทนี้คือ: X_{k+1} = g X(k) mod n โดยที่ modulus n เป็นจำนวนเฉพาะหรือกำลังของจำนวนเฉพาะ ตัวคูณ g เป็นสมาชิกที่มีออเดอร์การคูณสูง modulo n และ s

  2. โปรแกรม C++ นำฟังก์ชันสุ่มปลอม Naor-Reingold ไปใช้ (Naor-Reingold Pseudo Random Function)

    ฟังก์ชันสุ่มปลอม Naor-Reingold ฟังก์ชันสุ่มปลอม Naor-Reingold เป็นอีกวิธีหนึ่งในการสร้างตัวเลขสุ่ม Moni Naor และ Omer Reingold อธิบายการสร้างที่มีประสิทธิภาพสำหรับ primitive ทางเข้ารหัสลับต่างๆ ในคีย์ส่วนตัว (private key) และการเข้ารหัสลับแบบสาธารณะ (public-key cryptography) ในปี 1997 ให้ p และ l

  3. โปรแกรม C++ สร้างตัวเลขสุ่มด้วยวิธี Multiply with Carry (MWC)

    วิธี Multiply-with-Carry (MWC) วิธี Multiply-with-Carry เป็นรูปแบบหนึ่งของตัวสร้าง Add-with-Carry ที่ Marsaglia และ Zaman 提出 เมื่อปี 1991 ข้อดีหลักของวิธีนี้คือ ใช้คณิตศาสตร์จำนวนเต็มของคอมพิวเตอร์ที่เรียบง่าย และนำไปสู่การสร้างลำดับตัวเลขสุ่มที่รวดเร็วมาก มีช่วงเวลา (periods) ยาวมาก ตั้งแต่ประมาณ

  4. โปรแกรม C++ จำลองการทอยลูกเต๋า N ลูก (N Dice Roller)

    นี่คือโค้ดสำหรับจำลองการทอยลูกเต๋า N ลูก สามารถทำได้โดยการสร้างตัวเลขสุ่มระหว่าง 1-6 อัลกอริทึม เริ่มต้น ประกาศ n อ่าน n For i = 0 ถึง n-1 สร้างลำดับด้วย rand() mod 6 + 1 พิมพ์ลำดับ สิ้นสุด โค้ดตัวอย่าง #include <iostream> using namespace std; int main(int argc, char **argv)

  5. โปรแกรม C++ การถาลล้อ (Wheel Sieve) สร้างจำนวนเฉพาะในช่วงที่กำหนด

    การถาลล้อ (Wheel Sieve) วิธีการถาลล้อใช้หาจำนวนเฉพาะในช่วงที่กำหนด การแยกตัวประกอบล้อ (Wheel factorization) เป็นวิธีทางกราฟิกสำหรับการทำขั้นตอนเตรียมการแบบมืออาชีพสำหรับการถาลเอราโทสเตนีส ที่แยกจำนวนเฉพาะออกจากตัวเลขประกอบ (composites) ในวิธีนี้ จำนวนเฉพาะในวงในสุดจะมีพหุคูณในตำแหน่งที่คล้ายกันเหม

  6. โปรแกรม C++ การถาลเอราโทสเตนีส (Sieve of Eratosthenes) สร้างจำนวนเฉพาะ

    การถาลเอราโทสเตนีส (Sieve of Eratosthenes) นี่คือโปรแกรม C++ สำหรับการนำการถาลเอราโทสเตนีสมาใช้สร้างจำนวนเฉพาะในช่วงที่กำหนด ในวิธีนี้ ใช้อาร์เรย์จำนวนเต็มที่เริ่มต้นทุกองค์ประกอบเป็นศูนย์ วิธีนี้ทำงานโดยทำเครื่องหมายดัชนีขององค์ประกอบที่ไม่ใช่จำนวนเฉพาะเป็น 1 ภายในลูปซ้อน (nested loops) จำนวนเฉพา

  7. ทำไม iostream::eof ในเงื่อนไขลูปจึงถือว่าผิดใน C++

    การใช้ iostream::eof ในลูปถือว่าผิด เพราะเรายังไม่ได้ถึง EOF (End of File) การที่ eof() คืนค่า true ไม่ได้หมายความว่าการอ่านครั้งต่อไปจะสำเร็จ เมื่อเราต้องการอ่านไฟล์โดยใช้ไฟล์สตรีม (file streams) ใน C++ และใช้ลูปในการเขียนไฟล์ หากเราตรวจสอบ end of file โดยใช้ stream.eof() เรากำลังตรวจสอบว่าไฟล์ถึ

  8. วิธีทำโปรไฟล์ (Profile) โค้ด C++ บน Linux

    ในแพลตฟอร์ม Linux มีเครื่องมือโปรไฟล์ (profiling tools) หลายตัวที่ยอดเยี่ยมสำหรับโปรแกรม C++ Valgrind เป็นหนึ่งในนั้น ใช้กันอย่างแพร่หลาย เป็นเครื่องมือเขียนโปรแกรมสำหรับการดีบักหน่วยความจำ (memory debugging), การตรวจจับการรั่วไหลของหน่วยความจำ (memory leak detection), และการโปรไฟล์ เราสามารถใช้ Va

  9. Copy Elision และ Return Value Optimization ใน C++ คืออะไร

    Copy Elision หรือ Copy Omission เป็นหนึ่งในเทคนิคการเพิ่มประสิทธิภาพของคอมไพเลอร์ (compiler optimization technique) เทคนิคนี้หลีกเลี่ยงการคัดลอกออบเจกต์ที่ไม่จำเป็น คอมไพเลอร์เกือบทุกตัวในปัจจุบันใช้เทคนิค Copy Elision นี้ ลองดูวิธีการทำงานผ่านโค้ดตัวอย่างต่อไปนี้ โค้ดตัวอย่าง #include <iostre

  10. โปรแกรม C++ การถาลแอตкин (Sieve of Atkin) สร้างจำนวนเฉพาะในช่วงที่กำหนด

    การถาลแอต킨 (Sieve of Atkin) นี่คือโปรแกรม C++ สำหรับการนำการถาลแอตкинมาใช้สร้างจำนวนเฉพาะในช่วงที่กำหนด การถาลแอตкинเป็นอัลกอริทึมสมัยใหม่สำหรับหาจำนวนเฉพาะทั้งหมดจนถึงจำนวนเต็มที่กำหนด อัลกอริทึม เริ่มต้น สร้างรายการผลลัพธ์ เติมด้วย 2, 3, และ 5 เริ่มต้นอาร์เรย์ถาล (sieve array) ด้วยค่า false

  11. โปรแกรม C++ การถาลแบ่งส่วน (Segmented Sieve) สร้างจำนวนเฉพาะในช่วงที่กำหนด

    การถาลแบ่งส่วน (Segmented Sieve) นี่คือโปรแกรม C++ สำหรับการนำการถาลแบ่งส่วนมาใช้สร้างจำนวนเฉพาะในช่วงที่กำหนด การถาลแบ่งส่วนใช้การถาลง่าย (Simple Sieve) หาจำนวนเฉพาะที่น้อยกว่าหรือเท่ากับ √n ก่อน แนวคิดของอัลกอริทึมนี้คือการแบ่งช่วง [0 ... n-1] ออกเป็นส่วนๆ ต่างๆ และคำนวณจำนวนเฉพาะในแต่ละส่วนทีละส

  12. ทำไมลำดับการลิงก์ไลบรารีใน GCC จึงทำให้เกิดข้อผิดพลาดบางครั้ง

    ข้อผิดพลาดประเภทนี้มักเกิดจากลิงก์เกอร์ (linker) ในขั้นตอนการคอมไพล์ พฤติกรรมเริ่มต้นของลิงก์เกอร์คือการนำโค้ดจากไลบรารีแบบอาร์ไคฟ (archive libraries) เมื่อโปรแกรมปัจจุบันต้องการ เพื่อให้ทำงานได้อย่างถูกต้อง ไลบรารีต้องอยู่ในลำดับที่ถูกต้อง เราสามารถพูดได้ว่า ต้องอยู่ในรูปแบบ caller before callees

  13. เมื่อไหร่ควรใช้ static_cast, dynamic_cast, const_cast และ reinterpret_cast ใน C++

    const_cast ใช้เพื่อลบหรือเพิ่ม const ให้กับตัวแปร สามารถใช้ได้เมื่อจำเป็นต้องเพิ่ม/ลบความเป็น const จากตัวแปร static_cast ใช้สำหรับการแปลงชนิดข้อมูลทั่วไป (normal/ordinary type conversion) นี่คือการแปลงที่รับผิดชอบในการแปลงชนิดโดยอัตโนมัติ (implicit type coercion) และสามารถเรียกใช้งานได้อย่างชัดเจ

  14. ทำไมไม่ควรใช้ #include <bits/stdc++.h> ใน C++

    <bits/stdc++.h> เป็นไฟล์หัวข้อ (header file) ที่รวมไลบรารีมาตรฐานทั้งหมด เข้าด้วยกัน บางครั้งในการแข่งขันเขียนโปรแกรม (coding contests) ที่ต้องการประหยัดเวลา การใช้ไฟล์หัวข้อนี้จึงมีประโยชน์ แต่ในแนวทางวิศวกรรมซอฟต์แวร์ เราควรลดการรวมไฟล์ (include) ให้น้อยที่สุด การใช้ไฟล์หัวข้อนี้จะทำให้รวม

  15. ความแตกต่างระหว่าง #include <filename> และ #include "filename" ใน C++

    ความแตกต่างระหว่างสองรูปแบบนี้อยู่ที่ตำแหน่งที่พรีโพรเซสเซอร์ (preprocessor) ค้นหาไฟล์ที่จะรวมเข้าไป #include <filename> พรีโพรเซสเซอร์จะค้นหาในลักษณะที่ขึ้นอยู่กับการใช้งาน (implementation-dependent) โดยจะค้นหาในไดเรกทอรีที่คอมไพเลอร์กำหนดไว้ล่วงหน้า วิธีนี้มักใช้สำหรับรวมไฟล์หัวข้อ (header

  16. โปรแกรม C++ ทดสอบเฉพาะจำนวนด้วยการทดสอบราบิน-มิลเลอร์ (Rabin-Miller Primality Test)

    การทดสอบเฉพาะจำนวนแบบราบิน-มิลเลอร์ การทดสอบเฉพาะจำนวนแบบราบิน-มิลเลอร์ (Rabin-Miller Primality Test) ใช้ตรวจสอบว่าตัวเลขที่กำหนดเป็นจำนวนเฉพาะหรือไม่ คล้ายกับการทดสอบเฉพาะจำนวนแบบเฟอร์มาและโซลอเว-สตราสเซน การทดสอบนี้ค้นพบก่อนหน้านี้โดยนักคณิตศาสตร์รัสเซีย M. M. Artjuhov อัลกอริทึม เริ่มต้น ll m

  17. โปรแกรม C++ หาค่าตัวหารร่วมมาก (GCD) และตัวคูณร่วมน้อย (LCM) ของ n ตัวเลข

    การหา GCD และ LCM นี่คือโค้ดสำหรับหาค่าตัวหารร่วมมาก (GCD) และตัวคูณร่วมน้อย (LCM) ของ n ตัวเลข ตัวหารร่วมมาก (Greatest Common Divisor) ของจำนวนเต็ม 2 ตัวขึ้นไปที่ไม่ใช่ศูนย์ทั้งหมด คือจำนวนเต็มบวกที่มากที่สุดที่หารตัวเลขแต่ละตัวลงตัว GCD ยังเรียกอีกอย่างว่า ตัวหารร่วมมากที่สุด (Greatest Common Fac

  18. โปรแกรม C++ สร้างจำนวนเฉพาะในช่วงที่กำหนดด้วยการถาลซุนดาราม (Sieve of Sundaram)

    การถาลซุนดาราม (Sieve of Sundaram) นี่คือโปรแกรม C++ สำหรับการนำการถาลซุนดารามมาใช้สร้างจำนวนเฉพาะในช่วงที่กำหนด อัลกอริทึมนี้ค้นพบในปี 1934 โดย ซุนดาราม อัลกอริทึม เริ่มต้น printPrimes(n) หาจำนวนเฉพาะที่น้อยกว่า n โดยลด n-2 ลงครึ่งหนึ่ง เรียกว่า New New = (n-2)/2 สร้างอาร์เรย์ marked[n] เพื

  19. โปรแกรม C++ สำหรับการทดสอบเฉพาะจำนวนด้วยวิธีเฟอร์มา (Fermat Primality Test)

    การทดสอบเฉพาะจำนวนแบบเฟอร์มา การทดสอบเฉพาะจำนวนแบบเฟอร์มา (Fermat Primality Test) ใช้ตรวจสอบว่าตัวเลขที่กำหนดเป็นจำนวนเฉพาะหรือไม่ นี่คือโค้ด C++ สำหรับอัลกอริทึมนี้ อัลกอริทึม เริ่มต้น modulo(base, e, mod) a = 1 b = base while (e > 0) if (e mod 2 == 1) a = (a * b) % mod b

  20. โปรแกรม C++ สำหรับการคูณของอัลกอริทึมบูธสำหรับการคูณตัวเลขที่มีเครื่องหมาย 2 ตัว

    อัลกอริทึมบูธ (Booths Algorithm) อัลกอริทึมบูธเป็นอัลกอริทึมการคูณที่คูณตัวเลขไบนารีที่มีเครื่องหมาย 2 ตัวในรูปแบบคอมพลีเมนต์ 2 (2s complement) บูธใช้เครื่องคิดเลขแบบโต๊ะที่มีความเร็วในการเลื่อนบิต (shifting) สูงกว่าการบวก จึงได้สร้างอัลกอริทึมนี้ขึ้นเพื่อเพิ่มความเร็วในการคำนวณ ขั้นตอนของอัลกอริท

Total 6007 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:30/301  20-คอมพิวเตอร์/Page Goto:1 24 25 26 27 28 29 30 31 32 33 34 35 36