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

ลดอาร์เรย์เป็นองค์ประกอบเดียวด้วยการดำเนินการที่กำหนดใน C++


กำหนดตัวแปรจำนวนเต็ม Number เป็นอินพุต ให้เราพิจารณาอาร์เรย์ที่มีองค์ประกอบในช่วง 1 ถึง Number ตามลำดับ หากเราดำเนินการกับอาร์เรย์ดังกล่าวในแต่ละขั้นตอน องค์ประกอบในตำแหน่งคี่จะถูกลบออก จากนั้นเป้าหมายคือการดำเนินการนี้ จำนวนครั้งจนเหลือเพียงองค์ประกอบเดียว พิมพ์องค์ประกอบนั้นในตอนท้าย

หมายเหตุ-:การวางตำแหน่งขององค์ประกอบทำให้อาร์เรย์ที่ดัชนี 0 อยู่ที่ตำแหน่งที่ 1 เป็นต้น

กรณีทดสอบสำหรับจำนวนองค์ประกอบในอาร์เรย์

อินพุตตัวเลข=1,เอาต์พุต=1

อินพุตตัวเลข=2,เอาต์พุต=2

อินพุตตัวเลข=3,เอาต์พุต=2

อินพุตตัวเลข=4,เอาต์พุต=4

อินพุตตัวเลข=5,เอาต์พุต=4

หมายเลขอินพุต=6, เอาต์พุต =4

อินพุตตัวเลข=7,เอาต์พุต=4

......

อินพุตตัวเลข=12,เอาต์พุต=8

หมายเลขอินพุต=20,เอาต์พุต=16

จากการสังเกตข้างต้น สำหรับช่วงของตัวเลขระหว่าง 2 i ถึง 2 i+1 -1 เอาต์พุตจะเป็น 2 i .

ตัวอย่าง

ป้อนข้อมูล −Number=7

ผลผลิต − องค์ประกอบเดี่ยวหลังการดำเนินการลดคือ :4

คำอธิบาย − องค์ประกอบแรกอยู่ที่ตำแหน่ง 1 เป็นต้น

อาร์เรย์จะเป็น [ 1 2 3 4 5 6 7 ]

หลังปฏิบัติการครั้งที่ 1:[ 2 4 6 ]

หลังการผ่าตัดครั้งที่ 2:[ 4 ]

ป้อนข้อมูล − Number=18

ผลผลิต − องค์ประกอบเดี่ยวหลังการดำเนินการลดคือ :4

คำอธิบาย − องค์ประกอบแรกอยู่ที่ตำแหน่ง 1 เป็นต้น

อาร์เรย์จะเป็น [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ]

หลังปฏิบัติการครั้งที่ 1:[ 2 4 6 8 10 12 14 16 18]

หลังการผ่าตัดครั้งที่ 2:[ 2 8 12 16 ]

หลังปฏิบัติการครั้งที่ 3:[ 8 16 ]

หลังการผ่าตัดครั้งที่ 4 [ 16 ]

แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้

ในแนวทางนี้ เราจะใช้ while loop ในการคำนวณผลลัพธ์สุดท้ายตามสูตรข้างต้น ใช้ค่าเริ่มต้นเป็น 2 และข้ามจนถึง 2*ผลลัพธ์ <=จำนวนอินพุตและเพิ่มค่าเป็นสองเท่าในการวนซ้ำแต่ละครั้ง

  • รับตัวแปรอินพุต Number

  • ฟังก์ชัน getsingleElement(long num) รับหมายเลขอินพุตและพิมพ์ผลลัพธ์ตามสูตรด้านบน

  • ใช้ผลลัพธ์ตัวแปร

  • เริ่มต้นผลลัพธ์ด้วย 2.

  • สำรวจโดยใช้ while วนซ้ำจนถึงผลลัพธ์*2<=num.

  • ผลลัพธ์สองเท่าภายในพินัยกรรม

  • ทันทีที่วง while สิ้นสุด เราก็จะได้ค่าที่ต้องการ

  • ส่งคืนผลลัพธ์

  • พิมพ์ผลลัพธ์ภายใน main.

ตัวอย่าง

#include<bits/stdc++.h>
using namespace std;
long getsingleElement(long num){
   long result;
   result=2;
   while(result*2 <= num){
      result=result*2;
   }
   return result;
}
int main(){
   int Number = 20;
   cout<<"The single element after reduction operation is : "<<getsingleElement(Number) ;
   return 0;
}

ผลลัพธ์

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

The single element after reduction operation is : 16