Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

หาเลขคู่เลขคี่ในชุดข้อมูลแบบ Dynamic Memory Allocation ใน C


โจทย์

คำนวณผลรวมเลขคู่และเลขคี่ในชุดข้อมูล โดยใช้ Dynamic Memory Allocation

ตรรกะการคำนวณ


// Even
if (*(p + i) % 2 == 0)
    even += *(p + i);

// Odd
else
    odd += *(p + i);

ตัวอย่างโปรแกรมสมบูรณ์

#include <stdio.h>
#include <stdlib.h>

int main() {
    int n, *p, i, even = 0, odd = 0;
    
    printf("Enter number of elements: ");
    scanf("%d", &n);
    
    // จอง Memory
    p = (int *)malloc(n * sizeof(int));
    if (p == NULL) {
        printf("Memory allocation failed\n");
        return 1;
    }
    
    // รับข้อมูล
    printf("Enter %d elements:\n", n);
    for (i = 0; i < n; i++)
        scanf("%d", p + i);
    
    // คำนวณ
    for (i = 0; i < n; i++) {
        if (*(p + i) % 2 == 0)
            even += *(p + i);
        else
            odd += *(p + i);
    }
    
    printf("Sum of even numbers: %d\n", even);
    printf("Sum of odd numbers: %d\n", odd);
    
    free(p);
    return 0;
}

ผลลัพธ์:


Enter number of elements: 5
Enter 5 elements:
34 23 12 11 45
Sum of even numbers: 46
Sum of odd numbers: 79

การเข้าถึง Array ผ่าน Pointer

NotationEquivalentคำอธิบาย
p[i]*(p + i)Element ที่ i
&p[i]p + iAddress ของ Element i
*(p + i)p[i]Dereference

ข้อดีของ Dynamic Array

  • ขนาด Array ไม่ต้องกำหนดตอน Compile
  • ผู้ใช้กำหนดขนาดได้ตอน Run
  • ประหยัด Memory (จองแค่ที่ต้องการ)
  • สามารถ Resize ได้ด้วย realloc()