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

องค์ประกอบเท่ากับผลรวมขององค์ประกอบที่เหลือทั้งหมดใน C++


ในปัญหานี้ เราได้รับอาร์เรย์ arr[] ซึ่งประกอบด้วยค่าบวก n ค่า งานของเราคือการหา องค์ประกอบ เท่ากับผลรวมขององค์ประกอบที่เหลือทั้งหมด ของอาร์เรย์

คำอธิบายโค้ด: เราต้องหาองค์ประกอบที่มีค่าเท่ากับผลรวมขององค์ประกอบทั้งหมดในอาร์เรย์ ยกเว้นองค์ประกอบนั้น

มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน

ป้อนข้อมูล: arr[] ={ 5, 4, 17, 1, 7 }

ผลลัพธ์: 17

คำอธิบาย −

ผลรวมขององค์ประกอบที่เหลือคือ (5 + 4 + 1 + 7 ) =17 ซึ่งเท่ากับองค์ประกอบที่เหลือ 17

แนวทางการแก้ปัญหา -

วิธีแก้ปัญหาอย่างง่ายคือการใช้ข้อเท็จจริงที่ว่าผลรวมขององค์ประกอบทั้งหมดในอาร์เรย์นั้นเป็นสองเท่าขององค์ประกอบที่กำหนด สำหรับสิ่งนี้เราจะทำตามขั้นตอนเหล่านี้

ขั้นตอนที่ 1: หาผลรวมของอิลิเมนต์ทั้งหมดของอาร์เรย์
ขั้นตอนที่ 2: วนซ้ำสำหรับแต่ละองค์ประกอบของอาร์เรย์

ขั้นตอนที่ 2.1: ถ้า arr[i] ==sum/2.

ขั้นตอนที่ 2.1.1: ถ้าเป็นจริง. แฟล็ก =1 หมดห่วง

ขั้นตอนที่ 2.2.1: ถ้าผิดก็ปล่อยไว้

ขั้นตอนที่ 3: ถ้าแฟล็ก ==1 พิมพ์ arr[i]
ขั้นตอนที่ 4: มิฉะนั้น พิมพ์ “ไม่พบองค์ประกอบดังกล่าว ”.

โปรแกรมเพื่อแสดงการทำงานของโซลูชันของเรา

ตัวอย่าง

#include <iostream>
using namespace std;

void findElemenetInArray(int arr[], int n) {
   
   int arraySum = 0;
   int flag = 0, i;
   for (i = 0; i < n; i++)
      arraySum += arr[i];

   for (i = 0; i < n; i++)
      if ( (2*arr[i]) == arraySum ) {
         flag = 1;
         break;
      }
         
   if(flag)
      cout<<arr[i];
   else
      cout<<"No such element is found!";
   
}

int main() {
   int n = 5;
   int arr[n] = { 5, 4, 7, 1, 17 };
   findElemenetInArray(arr, n);
   return 0;
}

ผลลัพธ์

17