Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++
C++
  1. Inheritance และ Friendship ใน C++

    Friendship ใน C++ ไม่ถูกสืบทอด (not inherited) หาก Base class มี friend function Derived class จะไม่ได้รับสิทธิ์ friend นั้น ตัวอย่าง Error class Base { protected: int x; public: Base() : x(20) {} friend void display(); // friend ของ Base }; class Derived : public Base { private: int y; public: Der

  2. การซ่อน Overloaded Methods ของ Base Class ใน C++

    ใน C++ หาก Derived class override overload หนึ่งฟังก์ชันของ Base class ทุก overload อื่นของฟังก์ชันชื่อเดียวกันจะถูกซ่อน (hidden) ไม่สามารถเรียกผ่าน Derived class ได้ ตัวอย่าง class Base { public: void func() { cout << Base::func()\n; } void func(int x) { cout << Base::func(int)\

  3. fesetround() และ fegetround() ใน C++

    ฟังก์ชันใน <cfenv> สำหรับควบคุมและตรวจสอบโหมดการปัดเศษ floating point fesetround(round) ตั้งค่า rounding mode คืนค่า 0 หากสำเร็จ โหมดที่รองรับ: FE_TONEAREST - ปัดไปค่าที่ใกล้ที่สุด FE_DOWNWARD - ปัดลง (toward -∞) FE_UPWARD - ปัดขึ้น (toward +∞) FE_TOWARDZERO - ปัดเข้าศูนย์ (truncate) fegetro

  4. โปรแกรม C++ เรียงลำดับด้วย B-Tree

    ใช้ B-Tree (ในที่นี้ max 5 keys per node) เพื่อเรียงลำดับข้อมูล แทรกค่าเข้า B-Tree แล้ว inorder traversal จะได้ลำดับจากน้อยไปมาก โครงสร้างหลัก Node: data[5], child_ptr[6], leaf flag, count n split_node(): แยก node เมื่อเต็ม 5 keys insert(): แทรกค่า พร้อม split และ sort ภายใน node (bubble sort เพราะ

  5. ตรวจสอบ Eulerian Cycle ใน Undirected Graph ด้วย C++

    Eulerian Cycle (Circuit) ในกราฟไม่มีทิศทาง เงื่อนไขเข้มงวดกว่า Path: กราฟต้อง connected ทุก vertex ต้องมี degree เป็นเลขคู่ (oddDegree = 0) โค้ดสำคัญ int hasEulerianCircuit() { if (!isConnected()) return 0; vector<int> degree(NODE, 0); int oddDegree = 0; for (int i=0; i

  6. ตรวจสอบ Eulerian Path ใน Undirected Graph ด้วย C++

    Eulerian Path ในกราฟไม่มีทิศทาง (Undirected Graph) เงื่อนไข: กราฟต้อง connected ไม่มี vertex คี่เลย = Euler Circuit (ซึ่งก็เป็น Euler Path) มี vertex คี่เพียง 2 จุด = Euler Path มากกว่า 2 จุด = ไม่มี Euler Path อัลกอริทึม DFS เช็ค connectivity นับ degree ของแต่ละ vertex นับจำนวน vertex ที่มี degr

  7. ตรวจสอบ Eulerian Path ใน Directed Graph ด้วย C++

    Eulerian Path ในกราฟมีทิศทาง (Directed Graph) ต้องเงื่อนไข: กราฟต้อง connected (ทุก vertex ไปถึงกันได้) มี vertex แค่ 1 จุดที่ out-degree = in-degree + 1 (จุดเริ่ม) มี vertex แค่ 1 จุดที่ in-degree = out-degree + 1 (จุดสิ้นสุด) vertex ที่เหลือต้องมี in-degree = out-degree อัลกอริทึม DFS ตรวจสอบ c

  8. แสดงรายการไฟล์ที่แก้ไข เก่า และใหม่ที่สุดบน Linux ด้วย C++

    ใช้คำสั่ง Linux ls -lt (เรียงตามเวลาล่าสุดก่อน) และ ls -ltr (เรียงตามเวลาสุดท้ายก่อน) ผ่านฟังก์ชัน system() ใน C++ โค้ดตัวอย่าง #include <iostream> #include <cstdlib> using namespace std; int main() { cout << Files List (Newest first):\n; system(ls -lt); cout <<

  9. โปรแกรม C++ หาจำนวน Permutation ของสตริง

    นับจำนวน permutation (การเรียงสลับ) ของสตริง โดยพิจารณาตัวอักษรซ้ำ หากสตริงมีความยาว n และตัวอักษรบางตัวซ้ำกัน จำนวน permutation = n! / (Π freq[i]!) โค้ดตัวอย่าง long fact(long n) { return (n 1) res /= fact(f); return res; } int main() { string s; cin >> s; cout << Perm

  10. Templates ใน C++ เทียบกับ Generics ใน Java

    ทั้ง C++ Templates และ Java Generics ใช้สำหรับ generic programming (เขียนโค้ดไม่ขึ้นกับชนิดข้อมูล) แต่มีความแตกต่างทางการทำงานพื้นฐาน C++ Templates Compiler สร้างโค้ดใหม่สำหรับแต่ละชนิดข้อมูล (code generation / monomorphization) รองรับ primitive types (int, double) และ user-defined types รองรับ tem

  11. Template Specialization ใน C++

    Template Specialization ช่วยให้เราสร้าง template ทั่วไปสำหรับทุกชนิดข้อมูล แล้วสร้างเวอร์ชันเฉพาะสำหรับชนิดข้อมูลบางชนิดได้ Function Template Specialization template<typename T> void my_function(T x) { cout << General: << x << endl; } template<> void my_function(c

  12. โปรแกรม C++ คำนวณพื้นที่สามเหลี่ยมด้วย Determinant

    คำนวณพื้นที่สามเหลี่ยมในพื้นที่ 2D โดยใช้ determinant ของเมทริกซ์ 3x3 จัดจุด (x, y) ใส่คอลัมน์แรกและสอง คอลัมน์ที่สามเป็น 1 พื้นที่ = ½ × |determinant| สูตร: Area = ½ × |det([x1 y1 1; x2 y2 1; x3 y3 1])| โค้ดตัวอย่าง double det(double M[3][3]) { double t1 = M[1][1]*M[2][2] - M[1][2]*M[2][1];

  13. โปรแกรม C++ หาจำนวนวิธีการเขียนเลขเป็นผลรวมของเลขที่เล็กกว่า

    โปรแกรมนับจำนวน partition (การแยกส่วน) ของจำนวนเต็ม n โดยใช้ผลรวมของจำนวนเต็มบวกที่เล็กกว่า n เอง อัลกอริทึม partitionCount(n) สร้างอาร์เรย์ p ขนาด n, เริ่มต้น p[0] = n วนลูปสร้าง partition ใหม่ๆ โดยลดค่าลงทีละ 1 และกระจายเศษ นับจำนวน partition จนกว่าจะเหลือแต่ 1 โค้ดตัวอย่าง = 0 && p[k] =

  14. โปรแกรม C++ แสดงตัวเลขขนาดใหญ่ (Zoom Digits)

    โปรแกรมนี้แสดงวิธี ซูม ตัวเลขโดยพิมพ์ขนาดใหญ่ด้วยอักขระ (เช่น #) ตรรกะสร้างตัวเลข 0-9 ในรูปแบบ 5x5 แล้วประกอบตามตัวเลขที่รับเข้ามา โครงสร้างโค้ด ฟังก์ชัน print_zero() ถึง print_nine() สำหรับวาดแต่ละหลัก ฟังก์ชัน zoom_digit() แปลงตัวเลขเป็นสตริง แล้วเรียกฟังก์ชันวาดตามลำดับ ใช้ stringstream แปลง int

  15. C++ Tricks สำหรับการแข่งขันเขียนโปรแกรม

    รวมเทคนิค C++ ที่ช่วยเพิ่มความเร็วในการเขียนโค้ดสำหรับการแข่งขัน (Competitive Programming) คล้ายกับบทความ Hidden features of C++ แต่เน้นบริบทการแข่งขัน เทคนิคสำคัญ ตรวจสอบคู่/คี่: (n & 1) != 0 ใช้ bitwise AND คูณ/หาร 2n: Shift left/right (x << n, x >> n) Swap โดยไม่ใช้ temp: XOR swa

  16. Undefined Behavior ใน C++ ที่โปรแกรมเมอร์ควรรู้

    ใน C++ มี undefined behaviors (พฤติกรรมไม่ได้กำหนด) หลายกรณีที่โปรแกรมเมอร์ควรระวัง ไม่มีนิยามชัดเจนแต่เกิดจากการเขียนโค้ดบางรูปแบบ นี่คือตัวอย่างที่พบบ่อย: 1. หารศูนย์ (Divide by Zero) int x = 10, y = 0; int z = x / y; // Runtime error 2. ใช้ตัวแปรที่ยังไม่ได้ initialize bool x; if (x == true) ...

  17. C++ Equivalent ของ instanceof ใน Java

    C++ ไม่มีวิธีตรวจสอบว่า object เป็น instance ของคลาสหนึ่งโดยตรงเหมือน Java แต่ใน C++11 มี is_base_of<Base, T> เพื่อตรวจสอบว่า Base เป็นคลาสฐานของ T หรือไม่ แต่ไม่ตรวจสอบการใช้งานฟังก์ชัน วิธีที่ใกล้เคียง instanceof มากที่สุดคือใช้ dynamic_cast<new-type>(expression) ซึ่งพยายามแปลงค่าเป็นช

  18. การพิมพ์ทศนิยมที่ถูกต้องด้วย cout ใน C++

    บทความนี้示範วิธีพิมพ์ตัวเลขจุดลอยตัวให้แสดงทศนิยมตามจำนวนที่กำหนด โดยใช้ setprecision ร่วมกับ cout ซึ่งอยู่ใน header <iomanip> โค้ดตัวอย่าง #include <iostream> #include <iomanip> using namespace std; int main() { double x = 2.3654789; cout << Print up to 3 decimal pla

  19. Inline Variables ใน C++17 ทำงานอย่างไร?

    ใน C++ เราใช้คีย์เวิร์ด inline สำหรับฟังก์ชันมาแล้ว แต่ใน C++17 ได้นำแนวคิด inline variables มาใช้งาน Inline variable อนุญาตให้กำหนดค่า (define) ใน translation units หลายแห่งพร้อมกัน และปฏิบัติตาม One Definition Rule (ODR) หากถูกกำหนดซ้ำ คอมไพเลอร์จะรวม (merge) ทั้งหมดเป็นอ็อบเจกต์เดียวในโปรแกรมสุดท

  20. ฟีเจอร์แฝงของ C++ ที่ควรทราบ

    บทความนี้จะนำเสนอเทคนิคและฟีเจอร์พิเศษของ C++ ที่ช่วยเพิ่มประสิทธิภาพการเขียนโค้ด โดยเฉพาะสำหรับการแข่งขันเขียนโปรแกรม (Competitive Programming) ซึ่งช่วยลดเวลาในการเขียนโค้ดได้อย่างมาก มาดูตัวอย่างแต่ละข้อกัน 1. ตรวจสอบเลขคู่/คี่ โดยไม่ใช้ % ใช้บิตวайส์ AND กับ 1 หากผลลัพธ์ไม่เป็นศูนย์ = เลขคี่ มิฉะ

Total 6007 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:62/301  20-คอมพิวเตอร์/Page Goto:1 56 57 58 59 60 61 62 63 64 65 66 67 68