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

    บทนำ Anonymous Class คือคลาสที่ไม่มีชื่อ ไม่มี Constructor (แต่มี Destructor) และไม่สามารถใช้เป็นพารามิเตอร์หรือคืนค่าของฟังก์ชันได้ Syntax class { // data members // member functions } obj1, obj2; // ประกาศออบเจกต์ทันที คุณสมบัติ ไม่มีชื่อคลาส → ไม่มี Constructor มี Destructor สำหรับปล่

  2. จัดสรรหน้าหนังสือให้นักเรียนน้อยที่สุด (Allocate Minimum Pages) ใน C++

    บทนำ โจทย์: กำหนดจำนวนหน้าของหนังสือ n เล่ม (เรียงจากน้อยไปมาก) และ m นักเรียน ต้องจัดสรรหนังสือติดต่อกันให้แต่ละนักเรียน โดยต้องการให้ จำนวนหน้าสูงสุดที่นักเรียนคนใดคนหนึ่งต้องอ่าน น้อยที่สุด ตัวอย่าง books[] = {13, 43, 65, 87, 92}, m = 2 → Output: 179 การวิเคราะห์กรณี (m=2) [13] , [43,65,87,92

  3. Almost Perfect Number (จำนวนเกือบสมบูรณ์) ใน C++

    บทนำ Almost Perfect Number (หรือ Least Deficient Number) คือจำนวนที่ผลรวมตัวหารทั้งหมด (รวม 1 และตัวมันเอง) เท่ากับ 2n - 1 ตัวอย่าง 16: ตัวหาร = 1,2,4,8,16 → ผลรวม = 31, 2×16-1 = 31 → YES 12: ตัวหาร = 1,2,3,4,6,12 → ผลรวม = 26, 2×12-1 = 23 → NO อัลกอริทึม คำนวณผลรวมตัวหารของ n คำนวณ val = 2n -

  4. สร้างจำนวนใหม่จากบิตสลับกันของสองจำนวน ใน C++

    บทนำ สร้างจำนวนใหม่โดยนำบิตมาจากสองจำนวนสลับกัน: บิตที่ 1 (LSB) จากจำนวนที่ 2, บิตที่ 2 จากจำนวนที่ 1, บิตที่ 3 จากจำนวนที่ 2, ... ตัวอย่าง n=6 (0110), m=10 (1010) → เรียงบิตสลับ: 0(from m), 1(from n), 0(from m), 1(from n) → 0101? Wait, ตัวอย่างในต้นฉบับให้ 0010 = 2 อธิบาย: ใช้บิตคู่ของ n (even b

  5. การจัดเรียงสตริงสลับตัวพิมพ์ใหญ่-เล็ก (Alternate Lower Upper Sort) ใน C++

    บทนำ จัดเรียงสตริงที่มีตัวพิมพ์ใหญ่และเล็กผสมกัน ให้เรียงตัวพิมพ์ใหญ่แยกกัน ตัวพิมพ์เล็กแยกกัน แล้วนำมารวมกันสลับกัน ตัวอย่าง Input: aFegrAfStRzsV Uppercase สorted: A, F, R, S, V Lowercase สorted: a, e, f, g, r, s, t, z Output: AaFeRfSgVrstz (สลับ Upper-Lower) อัลกอริทึม นับความถี่ตัวพิมพ์ใหญ่ (

  6. จัดเรียงโหนดคี่-คู่สลับกันใน Singly Linked List ใน C++

    บทนำ จัดเรียง Singly Linked List ให้สลับระหว่างเลขคี่และเลขคู่ (Odd-Even Alternating) มี 2 รูปแบบ: เริ่มด้วยเลขคู่: Even, Odd, Even, Odd, ... เริ่มด้วยเลขคี่: Odd, Even, Odd, Even, ... ตัวอย่าง Input: 45→21→2→213→3→34→78→12 → Output: 45→2→21→34→213→78→3→12 แนวคิด (ใช้ Stack) สร้าง stack สองอ

  7. การจัดเรียงสลับกันของ Linked List ใน C++

    บทนำ จัดเรียง Linked List แบบ Alternate: โหนดแรก = ค่าน้อยสุด, โหนดที่สอง = ค่ามากสุด, โหนดที่สาม = ค่าน้อยสุดอันดับ 2, ... ตัวอย่าง Input: 3→4→21→67→1→8 → Sorted: 1→3→4→8→21→67 → Alternate: 1→67→3→21→4→8 อัลกอริทึม เรียง Linked List ด้วย Merge Sort แบ่งเป็นสองครึ่ง (Front/Back split) กลับด้านคร

  8. การจัดเรียงสลับกัน (Alternative Sorting) ใน C++

    บทนำ จัดเรียงอาร์เรย์จำนวนเต็มแบบ: ตัวแรก = ค่าสูงสุด, ตัวที่สอง = ค่าต่ำสุด, ตัวที่สาม = ค่าสูงสุดอันดับ 2, ตัวที่สี่ = ค่าต่ำสุดอันดับ 2, ... ตัวอย่าง Input: 4 1 8 2 9 3 7 → Sorted: 1 2 3 4 7 8 9 → Alternative: 9 1 8 2 7 3 4 อัลกอริทึม เรียงอาร์เรย์จากน้อยไปมาก สร้าง pointer สองตัว: i=0 (หน้า)

  9. หาพื้นที่วงกลมล้อมรอบสี่เหลี่ยมจัตุรัส (Circumscribed Circle) ใน C++

    บทนำ หาพื้นที่วงกลมที่ล้อมรอบสี่เหลี่ยมจัตุรัส (สัมผัสจุดโค้งทั้ง 4) เมื่อทราบความยาวด้านสี่เหลี่ยม ความสัมพันธ์ทางเรขาคณิต เส้นทแยงมุมของสี่เหลี่ยม = เส้นผ่านศูนย์กลางของวงกลม เส้นทแยงมุม = a√2 (a = ความยาวด้าน) รัศมี r = (a√2) / 2 = a/√2 สูตรพื้นที่ Area = πr² = π(a/√2)² = πa²/2 ตัวอย่างโค้ด

  10. หาพื้นที่รูปหลายเหลี่ยมปกติ n ด้าน ที่กำหนดความยาวด้าน ใน C++

    บทนำ หาพื้นที่รูปหลายเหลี่ยมปกติ (Regular Polygon) n ด้าน ที่ด้านทุกด้านเท่ากัน ความยาวด้าน = a การหาสูตร แบ่งรูปเป็น n สามเหลี่ยมเท่ากัน แต่ละสามเหลี่ยมมีฐาน a และมุมยอด 180/n องศา ความสูง h = a × tan(180/n) พื้นที่สามเหลี่ยมหนึ่งรูป = ½ × a × h = a² / (4 × tan(180/n)) พื้นที่รูปหลายเหลี่ยม = n ×

  11. หาพื้นที่รูปหลายเหลี่ยมจากจุดกำหนด n จุด ใน C++

    บทนำ หาพื้นที่รูปหลายเหลี่ยม (Polygon) เมื่อทราบพิกัดจุดโค้ง n จุดตามลำดับ สูตรพื้นที่ (Shoelace Formula) Area = ½ |(x₁y₂ + x₂y₃ + ... + xₙy₁) - (x₂y₁ + x₃y₂ + ... + x₁yₙ)| ตัวอย่างโค้ด C++ #include <iostream> #include <math.h> using namespace std; double areaOfPolygon(double x[], do

  12. แบ่งอาร์เรย์เป็นสองส่วนที่ผลรวมเท่ากันตามเงื่อนไขเฉพาะ ใน C++

    บทนำ กำหนดอาร์เรย์ arr ต้องการตรวจสอบว่าสามารถแบ่งเป็นสอง sub-array ได้หรือไม่ โดย: ผลรวมทั้งสองส่วนเท่ากัน จำนวนที่หาร 5 ลงตัว → อยู่กลุ่มซ้าย จำนวนที่หาร 3 ลงตัวแต่ไม่ใช่ 5 → อยู่กลุ่มขวา จำนวนอื่น → ใส่ได้ทั้งสองกลุ่ม ตัวอย่าง arr = {1, 4, 3} → แบ่งได้: {1,3} sum=4 และ {4} sum=4 (3 หาร 3 ลงต

  13. หาจำนวนศูนย์ติดต่อกันสูงสุดในสตริงไบนารีที่ต่อกัน k ครั้ง ใน C++

    บทนำ กำหนดสตริงไบนารีความยาว n และค่า k ต่อสตริง k ครั้ง แล้วหาจำนวน 0 ติดต่อกันสูงสุด ตัวอย่าง: str=0010010, k=2 → 00100100010010 → 0 ติดต่อกันสูงสุด = 3 แนวคิด ถ้าสตริงทั้งหมดเป็น 0 → คำตอบ = n × k มิฉะนั้น คำตอบคือค่าสูงสุดระหว่าง: ความยาว substring 0 ติดต่อกันสูงสุดในสตริงเดิม 1)

  14. หา GCD สูงสุดจากผลคูณของจำนวนที่ไม่ทราบค่า ใน C++

    บทนำ โจทย์เดียวกับ ID 1004081890 แต่ใช้วิธีการแยกตัวประกอบเฉพาะแบบไม่ใช้ hashmap กำหนด N และ P (ผลคูณของ N จำนวน) หา GCD สูงสุดที่เป็นไปได้ ตัวอย่าง N=3, P=24 → กลุ่มที่เป็นไปได้: {1,1,24}, {1,2,12}, {1,3,8}, {1,4,6}, {2,2,6}, {2,3,4} → GCD สูงสุด = 2 แนวคิด แยกตัวประกอบเฉพาะของ P แล้วแต่ละตัวปร

  15. โปรแกรม C++ แปลงเมทริกซ์ให้เป็นเมทริกซ์แบบเฉียง (Diagonal Matrix)

    บทนำ กำหนดเมทริกซ์ n×n ต้องการแปลงเป็น Diagonal Matrix ซึ่งเป็นเมทริกซ์ที่สมาชิกนอกเส้นทแยงมุมเป็น 0 ทั้งหมด ส่วนเส้นทแยงมุมคงค่าเดิม ตัวอย่าง Input: {{1,2,3}, {4,5,6}, {7,8,9}} → Output: {{1,0,3}, {0,5,0}, {7,0,9}} แนวคิด วนลูปทุกตำแหน่ง (i,j) ถ้า i ≠ j และ i+j+1 ≠ n (ไม่อยู่เส้นทแยงมุมหลักและรอ

  16. โปรแกรม C++ แปลงกิโลไบต์ (KB) เป็นไบต์ (Bytes) และบิต (Bits)

    บทนำ แปลงค่ากิโลไบต์ (KB) เป็นไบต์และบิต หน่วยความจำ 1 Bit = 0 หรือ 1 (หน่วยเล็กที่สุด) 1 Byte = 8 Bits 1 KB = 1024 Bytes 1 MB = 1,048,576 Bytes 1 GB = 1,073,741,824 Bytes สูตร Bytes = KB × 1024 Bits = KB × 8192 (เพราะ 1024 × 8) ตัวอย่าง 10 KB → 10,240 Bytes, 81,920 Bits 1 KB → 1,024 Bytes,

  17. โปรแกรม C++ แปลงที่อยู่ IP Address เป็นเลขฐานสิบหก (Hexadecimal)

    บทนำ แปลงที่อยู่ IP Address (IPv4) เป็นค่า Hexadecimal IP Address คืออะไร? หมายเลขระบุตัวตนอุปกรณ์บนเครือข่าย รูปแบบ IPv4: 4 กลุ่มตัวเลขคั่นด้วยจุด เช่น 151.101.65.121 ตัวอย่าง 127.0.0.1 → 0x7f000001 172.31.0.2 → 0xac1f0002 ตัวอย่างโค้ด C++ (ใช้ <arpa/inet.h>) #include <arpa/inet.h>

  18. โปรแกรม C++ แปลงเลขฐานสอง (Binary) เป็นฐานสิบ (Decimal)

    บทนำ แปลงเลขฐานสอง (Base 2) เป็นฐานสิบ (Base 10) ขั้นตอน อ่านบิตจากขวาไปซ้าย (LSB ไป MSB) คูณแต่ละบิตด้วย 2^position รวมผลคูณ ตัวอย่าง 1010 = 0×2⁰ + 1×2¹ + 0×2² + 1×2³ = 0 + 2 + 0 + 8 = 10 ตัวอย่างโค้ด C++ = 0; i--) { if (str[i] == 1) val += temp; temp *= 2; }

  19. โปรแกรม C++ แปลงเลขฐานสิบ (Decimal) เป็นฐานสอง (Binary)

    บทนำ แปลงเลขฐานสิบ (Base 10) เป็นฐานสอง (Base 2, ใช้ 0 และ 1) ขั้นตอน หารตัวเลขด้วย 2 เก็บเศษ (0 หรือ 1) หารผลหารด้วย 2 ซ้ำจนกว่าจะหารไม่ลง อ่านเศษจากล่างขึ้นบน ตัวอย่าง 42 → 101010 ตัวอย่างโค้ด C++ (ใช้ Bitwise) i; if (k & 1) cout << 1; else cout

  20. โปรแกรม C++ แปลงเลขฐานสิบ (Decimal) เป็นฐานสิบหก (Hexadecimal)

    บทนำ แปลงเลขฐานสิบ (Base 10) เป็นฐานสิบหก (Base 16) โดยใช้ A-F แทน 10-15 ขั้นตอน หารตัวเลขด้วย 16 เก็บเศษ (0-9 เก็บไว้, 10-15 แปลงเป็น A-F) หารผลหารด้วย 16 ซ้ำจนกว่าจะหารไม่ลง อ่านเศษจากล่างขึ้นบน (reverse) ตัวอย่าง 6789 ÷ 16 = 424 เศษ 5 → 424 ÷ 16 = 26 เศษ 8 → 26 ÷ 16 = 1 เศษ 10(A) → 1 ÷ 16 =

Total 6007 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:78/301  20-คอมพิวเตอร์/Page Goto:1 72 73 74 75 76 77 78 79 80 81 82 83 84