โจทย์
เขียนโปรแกรมหาผลรวมสมาชิกที่เป็นกำลังสองสมบูรณ์ในอาร์เรย์ โดยใช้ pointers
Input: จำนวนสมาชิก และค่าสมาชิก Output: ผลรวมกำลังสองสมบูรณ์
วิธีแก้
เช่น Input = 1, 2, 3, 4, 5, 9, 10, 11, 16
กำลังสองสมบูรณ์คือ 1, 4, 9, 16 → Sum = 30
อัลกอริทึม
ขั้นตอน 1 - อ่านจำนวนสมาชิกอาร์เรย์
ขั้นตอน 2 - ป้อนค่าสมาชิก
ขั้นตอน 3 - กำหนด sum = 0
ขั้นตอน 4 - ประกาศตัวแปร pointer
ขั้นตอน 5 - ตรวจสอบสมาชิกเป็นกำลังสองสมบูรณ์ด้วย pointer
ขั้นตอน 6 - ถ้าใช่ sum = sum + ค่านั้น
ขั้นตอน 7 - คืนค่า sum
ตัวอย่าง
โปรแกรม C หาผลรวมกำลังสองสมบูรณ์ด้วย pointers:
#include<stdio.h> #include<stdlib.h> #include<math.h> int sumPositive(int n,int *a){ int i,sum=0,m; for(i=0;i<n;i++){ m=sqrt(*(a+i)); if(pow(m,2)==*(a+i)){ sum+=*(a+i); } } return sum; } int main(){ int i,*a,n; printf("Enter the size of array:\n"); scanf("%d",&n); a=(int*)malloc(n*sizeof(int)); printf("Enter the elements of array:\n"); for(i=0;i<n;i++){ scanf("%d",a+i); } printf("Sum of positive square elements is %d",sumPositive(n,a)); return 0; }
ผลลัพธ์
Enter the size of array: 10 Enter the elements of array: 1 2 3 4 5 6 7 8 9 10 Sum of positive square elements is 14