ปัญหา
เขียนโปรแกรมเพื่อหาผลรวมขององค์ประกอบกำลังสองสมบูรณ์ในอาร์เรย์โดยใช้พอยน์เตอร์
กำหนดจำนวนองค์ประกอบในอาร์เรย์เป็นอินพุต และผลรวมของกำลังสองสมบูรณ์ขององค์ประกอบเหล่านั้นที่มีอยู่ในอาร์เรย์จะเป็นเอาต์พุต
วิธีแก้ปัญหา
ตัวอย่างเช่น
Input= 1, 2, 3, 4, 5, 9,10,11,16 The perfect squares are 1, 4, 9,16. Sum = 1 + 4 + 9 +16 = 30 Output: 30
อัลกอริทึม
อ้างถึงอัลกอริธึมที่ระบุด้านล่างเพื่อค้นหาผลรวมขององค์ประกอบกำลังสองที่สมบูรณ์แบบในอาร์เรย์โดยใช้พอยน์เตอร์
ขั้นตอนที่ 1 − อ่านจำนวนขององค์ประกอบในอาร์เรย์ที่รันไทม์
ขั้นตอนที่ 2 − ป้อนองค์ประกอบ
ขั้นตอนที่ 3 − ประกาศและเริ่มต้น sum=0
ขั้นตอนที่ 4 - ประกาศตัวแปรตัวชี้
ขั้นตอนที่ 5 − ตรวจสอบว่าองค์ประกอบอาร์เรย์เป็นกำลังสองสมบูรณ์หรือไม่โดยใช้ตัวแปรพอยน์เตอร์
ขั้นตอนที่ 6 − หากเป็นกำลังสองสมบูรณ์ ให้คำนวณ sum=sum+number
ขั้นตอนที่ 7 − ผลตอบแทนรวม
ตัวอย่าง
ต่อไปนี้เป็นโปรแกรม C เพื่อค้นหาผลรวมขององค์ประกอบกำลังสองสมบูรณ์ในอาร์เรย์โดยใช้พอยน์เตอร์ -
#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