ปัญหา
เขียนโปรแกรมเพื่อหาผลรวมขององค์ประกอบกำลังสองสมบูรณ์ในอาร์เรย์โดยใช้พอยน์เตอร์
กำหนดจำนวนองค์ประกอบในอาร์เรย์เป็นอินพุต และผลรวมของกำลังสองสมบูรณ์ขององค์ประกอบเหล่านั้นที่มีอยู่ในอาร์เรย์จะเป็นเอาต์พุต
วิธีแก้ปัญหา
ตัวอย่างเช่น
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