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

    บทนำ ในปัญหานี้ เราได้รับต้นไม้นิพจน์ (Expression Tree) ที่ประกอบด้วยการดำเนินการทางคณิตศาสตร์แบบทวิภาค เช่น +, -, *, / เป้าหมายคือการประเมินค่าของต้นไม้นิพจน์และส่งคืนผลลัพธ์ ต้นไม้นิพจน์ (Expression Tree) คืออะไร? ต้นไม้นิพจน์เป็นชนิดหนึ่งของต้นไม้แบบทวิภาค (Binary Tree) ที่แต่ละโหนดจะเป็นตัวดำเ

  2. ประเมินความเสี่ยงในการลงทุน (Evaluation of Risk in Investments) ใน C++

    โจทย์ ได้รับแผนลงทุน 2 แผน แต่ละแผนมีชุดของ (Outcome, Probability) ทางเราต้อง ประเมินความเสี่ยงและเลือกแผนที่ดียิ่งกว่า สถิติที่ใช้ Mean (Expected Value): Σ(Outcome × Probability) Standard Deviation (S.D.): √[Σ(Outcome - Mean)² × Probability] Coefficient of Variation (CV): S.D. / Mean (ความเ

  3. ลำดับการประเมิน Operands ใน C++

    ลำดับการประเมิน Operands (Evaluation Order) ใน C++ ลำดับการประเมิน operand ของตัวดำเนินการส่วนใหญ่ไม่ได้ถูกกำหนด (Unspecified) ยกเว้นบางตัวดำเนินการ (&&, ||, ?, ,) คอมไพเลอร์อาจเลือกประเมินซ้าย-ขวา, ขวา-ซ้าย, หรือแบบอื่น ขึ้นอยู่กับการปรับปรุง (Optimization) ตัวอย่างแสดงความไม่แน่นอน #include <i

  4. จัดเรียงเลขคู่ที่ดัชนีคู่ และเลขคี่ที่ดัชนีคี่ใน C++

    โจทย์ ได้รับอาร์เรย์ arr[] ขนาด n (n เป็นเลขคู่) ประกอบด้วย n/2 ตัวเลขคู่ และ n/2 ตัวเลขคี่ ทางเราต้อง จัดเรียงใหม่ให้เลขคู่อยู่ที่ดัชนีคู่ และเลขคี่อยู่ที่ดัชนีคี่ ตัวอย่าง Input: arr[] = {5, 1, 6, 4, 3, 8} Output: {6, 1, 5, 4, 3, 8} (หรือลำดับอื่นที่ถูกต้อง เช่น {4, 1, 6, 5, 8, 3}) แนวทางแก้ปัญห

  5. นับซับต้นไม้ขนาดคู่ใน N-ary Tree ใน C++

    โจทย์ ได้รับ Adjacency List แทน N-ary Tree ทางเราต้อง นับจำนวนซับต้นไม้ (Subtree) ที่มีขนาดเป็นเลขคู่ ตัวอย่าง Input: Tree ตามภาพ (รูท=7, มีโหนด 0,1,2,3,5,7,8,9) Output: 4 อธิบาย: ซับต้นไม้ที่มีขนาดคู่: รูท 7, 2, 0, 3 แนวทางแก้ปัญหา ใช้ DFS แบบ Post-order คำนวณขนาดซับต้นไม้ของแต่ละโหนด: ขนาดโหน

  6. Even-Odd Turn Game กับสองจำนวนเต็มใน C++

    โจทย์ ได้รับ A, B, T ทางเราเล่นเกม T รอบ: รอบที่เลขคี่: A = A * 2 รอบที่เลขคู่: B = B * 2 หาค่า max(A, B) / min(A, B) หลังจบเกม ตัวอย่าง Input: A=3, B=4, T=3 Output: 1 อธิบาย: 12/4=3 (โค้ดตัวอย่างมีข้อผิดพลาด ผลลัพธ์ควรเป็น 3) แนวทางแก้ปัญหา (O(1)) สังเกตรูปแบบ: อัตราส่วนไม่เปลี่ยน = max

  7. Evil Number และ Odious Number ใน C++

    นิยาม Evil Number: จำนวนบวกที่มีจำนวนบิต 1 ในรูปแบบไบนารีเป็น เลขคู่ (เช่น 5=101₂, 17=10001₂) Odious Number: จำนวนบวกที่มีจำนวนบิต 1 ในรูปแบบไบนารีเป็น เลขคี่ (เช่น 4=100₂, 6=110₂) ตัวอย่าง Input: N = 65 Output: Evil Number อธิบาย: คู่) แนวทางแก้ปัญหา นับจำนวนบิต 1 (Population Count / Hammin

  8. แสดงจำนวนคี่เป็นผลรวมของจำนวนเฉพาะใน C++

    ในปัญหานี้ กำหนดให้มีจำนวนคี่ N ภารกิจคือ แสดงจำนวนคี่เป็นผลรวมของจำนวนเฉพาะ จำนวนเฉพาะที่ใช้ได้สูงสุด 3 จำนวน ตัวอย่าง Input: N = 55 Output: 53 + 2 แนวทางแก้ปัญหา จำนวนคี่สามารถแสดงเป็นผลรวมของจำนวนเฉพาะได้ 3 กรณี: กรณี 1: ถ้า n เป็นจำนวนเฉพาะ → แสดงเป็น n เพียงตัวเดียว กรณี 2: ถ้า (n - 2) เป

  9. Expression Tree (ต้นไม้นิพจน์) ใน C++

    Expression Tree คืออะไร? Expression Tree เป็น Binary Tree พิเศษที่: Leaf Nodes = Operand (ตัวถูกดำเนินการ เช่น ตัวเลข, ตัวแปร) Internal Nodes = Operator (ตัวดำเนินการ เช่น +, -, *, /) ตัวอย่าง นิพจน์: (a + b) * (c - d) Expression Tree: * / \ + - / \ / \ a b c

  10. ทฤษฎีบท Extended Midy ใน C++

    ทฤษฎีบท Midy และ Extended Midy Midys Theorem: สำหรับเศษส่วน n/p (p เป็นเฉพาะ) ถ้าทศนิยมซ้ำมีความยาวเป็นเลขคู่ ผลรวมของครึ่งแรกและครึ่งหลัง = 999...9 Extended Midys Theorem: แบ่งส่วนที่ซ้ำเป็นกลุ่มทุก m หลัก ผลรวมของแต่ละกลุ่มจะหารด้วย 10^m - 1 ลงตัว ตัวอย่าง 1/17 = 0.0588235294117647... (ซ้ำ 16 หลั

  11. Extended Operators ใน Relational Algebra ใน C++

    Extended Operators ใน Relational Algebra นอกจาก Basic Operators (Selection, Projection, Union, Set Difference, Cartesian Product, Rename) แล้ว มี Extended Operators 3 กลุ่มหลัก: 1. Intersection (∩) คืน Tuple ที่ปรากฏใน ทั้งสอง Relation (R1 ∩ R2) 2. Join Operators Conditional Join (θ-Join): S.B)

  12. External Sorting (การจัดเรียงภายนอก) ใน C++

    External Sorting คืออะไร? External Sorting คืออัลกอริทึมจัดเรียงสำหรับข้อมูลขนาดใหญ่ที่ไม่สามารถโหลดเข้า RAM ได้ทั้งหมด ต้องเก็บใน Secondary Storage (Hard Disk) หลักการคล้าย Merge Sort แบ่ง 2 ขั้นตอน: Sort Phase: เขียนกลับดิสก์ Merge Phase: รวมชิ้นที่เรียงแล้วด้วย K-way Merge (ใช้ Min Heap) อ

  13. หาค่าเฉลี่ยของสองจำนวนโดยไม่ใช้การหารใน C++

    โจทย์ ได้รับตัวเลข A และ B ทางเราต้อง หาค่าเฉลี่ยโดยไม่ใช้ตัวดำเนินการหาร ตัวอย่าง Input: A = 34, B = 54 Output: 44 แนวทางแก้ปัญหา ค่าเฉลี่ยปกติคือ (A+B)/2 การหาร 2 เทียบเท่ากับ 1) ในระบบฐานสอง สูตร: 1 ข้อควรระวัง: ใช้กับ Signed Integer ได้ถ้าไม่มี Overflow และค่าบวก (Arithmetic Shift รักษา Sign

  14. Fast Inverse Square Root ใน C++

    Fast Inverse Square Root อัลกอริทึมที่มีชื่อเสียงในการคำนวณ 1/√x ประมาณการอย่างรวดเร็ว ใช้ในกราฟิก 3D และเกม (เช่น Quake III Arena) ขั้นตอนของอัลกอริทึม แปลง float เป็น integer (bit representation) ใช้ Magic Number 0x5f3759df และ Right Shift 1 bit แปลงกลับเป็น float ปรับปรุงความแม่นยำด้วย

  15. ปัญหาของ Federated Database Management System ใน C++

    Federated Database Management System (FDBS) ระบบจัดการฐานข้อมูลแบบรวม (Federated) คือระบบที่ผสานหลายฐานข้อมูลอิสระ (Autonomous Databases) ให้ดูเหมือนเป็นฐานข้อมูลเดียว ปัญหาหลักของ FDBS ความแตกต่างของ Data Models: ฐานข้อมูลแต่ละอันอาจใช้โมเดลต่างกัน (Relational, Object-oriented, NoSQL, ฯลฯ) การแ

  16. ทฤษฎีบทเฟอร์ม่าสุดท้าย (Fermat's Last Theorem) ใน C++

    ทฤษฎีบทเฟอร์ม่าสุดท้าย สำหรับจำนวนเต็ม 2 ไม่มีจำนวนเต็มบวก a, b, c ที่ทำให้ a^n + b^n = c^n สำหรับ n = 2 มีคำตอบมากมาย (Pythagorean Triples) เช่น 3,4,5 โจทย์ ได้รับช่วง [L, R] และกำลัง power ตรวจสอบว่ามีคำตอบในช่วงนั้นหรือไม่ ตัวอย่าง พบ 5,12,13 ไม่พบ แนวทางแก้ปัญหา ไม่มีคำตอบ (ตามทฤษฎี

  17. ทฤษฎีบทเฟอร์ม่าเล็ก (Fermat's Little Theorem) ใน C++

    ทฤษฎีบทเฟอร์ม่าเล็ก สำหรับจำนวนเฉพาะ p และจำนวนเต็ม a: a^p ≡ a (mod p) ถ้า a ไม่หาร p ลงตัว: a^(p-1) ≡ 1 (mod p) โจทย์ ได้รับ a และ p ตรวจสอบว่าทฤษฎีบทเป็นจริงหรือไม่ ตัวอย่าง Input: a = 3, p = 7 Output: True อธิบาย: 3^6 = 729, 729 - 1 = 728, 728 / 7 = 104 (ลงตัว) โปรแกรมตัวอย่าง #include &

  18. หาค่ารากที่ 5 แบบ Floor ของตัวเลขใน C++

    โจทย์ ได้รับจำนวน N ทางเราต้อง หาค่า Floor ของรากที่ 5 ของ N (ค่าจำนวนเต็มที่มากที่สุดที่ยกกำลัง 5 ไม่เกิน N) ตัวอย่าง Input: N = 325 Output: 325) แนวทางแก้ปัญหา วิธี 1: Linear Search= N แล้วคืน i-1 วิธี 2: Binary Search (เร็วกว่า) ค้นหาในช่วง [1, N] หาค่าที่มากที่สุดที่ i^5 ≤ N โปรแกรมตัวอย่าง (

  19. File Globbing (Path Name Expansion) ใน Linux ด้วย C++

    File Globbing คืออะไร? File Globbing หรือ Path Name Expansion คือการขยายรูปแบบตัวอักษรแทน (Wildcard Patterns) ให้กลายเป็นรายชื่อไฟล์ที่ตรงกันใน Linux Wildcard Patterns หลัก Patternความหมายตัวอย่างที่ตรง *0 หรือมากกว่าตัวอักษรใดๆ file, files, file2, file.txt ?ตัวอักษรใดๆ เพียง 1 ตัว file1, fi

  20. โหมดการเปิดไฟล์ r และ r+ ใน C++

    การจัดการไฟล์ใน C++ การเปิดไฟล์ก่อนทำงานเป็นสิ่งจำเป็น โหมดการเปิดกำหนดสิทธิ์การเข้าถึง โหมด r (Read Only) เปิดไฟล์เพื่อ อ่านอย่างเดียว คืนค่า NULL ไม่สามารถเขียนได้ โหมด r+ (Read/Write) เปิดไฟล์เพื่อ อ่านและเขียน ไฟล์ต้องมีอยู่แล้ว (ไม่สร้างใหม่) Pointer เริ่มต้นที่จุดแรกของไฟล์

Total 6007 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:246/301  20-คอมพิวเตอร์/Page Goto:1 240 241 242 243 244 245 246 247 248 249 250 251 252