คำอธิบายปัญหา
สมมติว่าเรามีตัวเลข n เราต้องสร้างอาร์เรย์ขนาด n แบบไดนามิก (Dynamic Memory Allocation) รับค่าองค์ประกอบ n ค่า แล้วหาผลรวม ใช้ malloc() หรือ calloc() จาก stdlib.h ค่า n ก็รับมาจาก stdin เช่นกัน
ตัวอย่าง
หากอินพุตเป็น n = 6 และองค์ประกอบ 9, 8, 7, 2, 4, 3 ผลลัพธ์จะเป็น 33 เพราะ 9+8+7+2+4+3 = 33
ขั้นตอนการแก้ปัญหา
- กำหนด sum = 0
- รับค่า n จากผู้ใช้
- จัดสรรหน่วยความจำให้อาร์เรย์ arr ขนาด n ด้วย malloc()
- วนลูปรับค่าแต่ละองค์ประกอบเก็บใน arr[i]
- วนลูปบวกค่าทุกอย่างใน arr[i] เข้า sum
- พิมพ์ผลรวม
โค้ดตัวอย่าง
#include <stdio.h>
#include <stdlib.h>
int main() {
int *arr;
int n;
int sum = 0;
scanf("%d", &n);
arr = (int*) malloc(n * sizeof(int));
for (int i = 0; i < n; i++) {
scanf("%d", (arr + i));
}
for (int i = 0; i < n; i++) {
sum += arr[i];
}
printf("%d", sum);
free(arr); // ควรคืนหน่วยความจำหลังใช้งาน
return 0;
}
อินพุต
6 9 8 7 2 4 3
เอาต์พุต
33