Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรมสำหรับค่าเฉลี่ยของอาร์เรย์ (แบบวนซ้ำและแบบเรียกซ้ำ) ใน C++


จากอาร์เรย์ของจำนวนเต็ม N arr[N] ภารกิจคือการหาค่าเฉลี่ยของ arr[N] เพื่อให้บรรลุผลเราสามารถใช้วิธีวนซ้ำหรือวิธีการแบบเรียกซ้ำ เราจะแสดงทั้งสองอย่างในโซลูชันที่กำหนด

ค่าเฉลี่ยของอาร์เรย์จะเป็นผลรวมขององค์ประกอบทั้งหมดของอาร์เรย์หารด้วยจำนวนองค์ประกอบ

วิธีการวนซ้ำ

ในการวนซ้ำ เราใช้ลูปเช่น for-loop, while-loop หรือ do-while loop ซึ่งดำเนินการคำสั่งจนกว่าเงื่อนไขจะเป็นจริงซึ่งหมายถึง 1

มาดูตัวอย่างกันและอภิปรายว่าจะใช้วิธีการวนซ้ำได้อย่างไร

ป้อนข้อมูล

arr[] = {1, 2, 4, 5, 8}

ผลผลิต

4

คำอธิบาย

sum of all the elements =1+2+4+5+8 = 20,
total number of elements = 5
Average will be = 20/5 = 4

ป้อนข้อมูล

arr[] = {10, 20, 30, 40}

ผลผลิต

25

แนวทางที่ใช้ด้านล่างมีดังต่อไปนี้ในการแก้ปัญหา (Iterative)

  • วนซ้ำแต่ละองค์ประกอบของอาร์เรย์โดยใช้การวนซ้ำ

  • สรุปแต่ละองค์ประกอบของอาร์เรย์จนกระทั่งถึงจุดสิ้นสุดของอาร์เรย์

  • หารผลรวมด้วยจำนวนองค์ประกอบทั้งหมดแล้วส่งคืนค่าเฉลี่ย

อัลกอริทึม

Start
Step 1→ Declare function to calculate average using iterative method
   double avg(int arr[], int size)
      declare int sum = 0
      Loop For int i=0 and i<size and i++
         Set sum += arr[i]
      End
      return sum/size
Step 2→ In main()
   Declare int arr[] = {2,3,1,6,8,10}
   Declare int size = sizeof(arr)/sizeof(arr[0])
   Call avg(arr, size)
Stop

ตัวอย่าง

#include <iostream>
using namespace std;
//calculate average using an iterative method
double avg(int arr[], int size){
   int sum = 0;
   for (int i=0; i<size; i++)
      sum += arr[i];
   return sum/size;
}
int main(){
   int arr[] = {2,3,1,6,8,10};
   int size = sizeof(arr)/sizeof(arr[0]);
   cout<<"average of an array using iterative method : "&l<t;avg(arr, size) << endl;
   return 0;
}

ผลลัพธ์

หากรันโค้ดด้านบน มันจะสร้างผลลัพธ์ต่อไปนี้ -

average of an array using iterative method : 5

วิธีการแบบเรียกซ้ำ

ดังนั้นวิธีการแบบเรียกซ้ำคืออะไร? ในวิธีแบบเรียกซ้ำ เราเรียกฟังก์ชันซ้ำแล้วซ้ำอีกจนกว่าเราจะได้ผลลัพธ์ที่ต้องการ ในแนวทางแบบเรียกซ้ำ ค่าที่ส่งคืนโดยฟังก์ชันจะถูกเก็บไว้ในหน่วยความจำสแต็ก

มาดูตัวอย่างกันและอภิปรายว่าจะใช้วิธีการวนซ้ำได้อย่างไร

ป้อนข้อมูล

arr[] = {2, 4, 6, 8}

ผลผลิต

5

คำอธิบาย

sum of all the elements =2+4+6+8 = 20,
total number of elements = 4
Average will be = 20/4 = 5

ป้อนข้อมูล

arr[] = {12, 23, 45, 15}

ผลผลิต

19

แนวทางที่ใช้ด้านล่างมีดังต่อไปนี้ในการแก้ปัญหา (แบบเรียกซ้ำ

  • เราจะเรียกฟังก์ชันนี้ซ้ำแล้วซ้ำเล่าจนกว่าจะถึงจุดสิ้นสุดของอาร์เรย์

  • เราจะรวมทุกองค์ประกอบของอาร์เรย์ และเมื่อเราไปถึงจุดสิ้นสุดของอาร์เรย์ เราจะคืนค่าค่าเฉลี่ยของอาร์เรย์

อัลกอริทึม

Start
Step 1→ Declare function to calculate average using recursive method
   double recursive(int arr[],int i, int size)
      IF (i == size-1)
         return arr[i]
      End
      IF (i == 0)
         return ((arr[i] + recursive(arr, i+1, size))/size)
      End
      return (arr[i] + recursive(arr, i+1, size))
Step 2→ double avg(int arr[], int size)
   return recursive(arr, 0 , size)
Step 3→ In main()
   Declare int arr[] = {1,5,3,2,6,7}
   Declare int size = sizeof(arr)/sizeof(arr[0])
   Call average(arr, size)
Stop

ตัวอย่าง

#include <iostream>
using namespace std;
//function for calculating average recusively
double recursive(int arr[],int i, int size){
   if (i == size-1)
      return arr[i];
   if (i == 0)
      return ((arr[i] + recursive(arr, i+1, size))/size);
      return (arr[i] + recursive(arr, i+1, size));
}
//function for returning average
double average(int arr[], int size){
   return recursive(arr, 0 , size);
}
int main(){
   int arr[] = {1,5,3,2,6,7};
   int size = sizeof(arr)/sizeof(arr[0]);
   cout<<average of an array using a recursive approach is : "<<average(arr, size) << endl;
   return 0;
}

ผลลัพธ์

หากรันโค้ดด้านบน มันจะสร้างผลลัพธ์ต่อไปนี้ -

average of an array using a recursive approach is : 4