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

เขียนโปรแกรมย้อนกลับอาร์เรย์หรือสตริงใน C++


ที่นี่เราได้รับอาร์เรย์หรือสตริงของอักขระ เราจะสร้างโปรแกรมเพื่อย้อนกลับองค์ประกอบของอาร์เรย์หรือสตริง

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

อินพุต

array = {2, 5, 7, 1, 9}

ผลลัพธ์

{9, 1, 7, 5, 2}

อินพุต

string = “Hello!”

ผลลัพธ์

!0lleH

ในการสร้างโปรแกรม เราจะวนรอบองค์ประกอบของอาร์เรย์/สตริง (ทั้งสองทำงานในลักษณะเดียวกัน) รับตัวแปรหนึ่งตัวสำหรับการเริ่มต้นและอีกตัวหนึ่งจากจุดสิ้นสุด และสลับองค์ประกอบทั้งสอง เพิ่มตัวแปรเริ่มต้นและลดตัวแปรสิ้นสุด การสลับจะดำเนินต่อไปจนกว่าค่าของตัวแปรเริ่มต้นจะน้อยกว่าตัวแปรสิ้นสุด

โปรแกรมสามารถสร้างขึ้นได้สองวิธี แบบหนึ่งเป็นแบบวนซ้ำ และอีกแบบเป็นแบบเรียกซ้ำ เราจะสร้างโปรแกรมที่จะสาธิตการทำงานของทั้งสองวิธี

ตัวอย่าง

วิธีที่ 1:วิธีการทำซ้ำ

Program :
#include <iostream>
using namespace std;
void revereseArrayIt(int arr[], int start, int end){
   while (start < end){
      int temp = arr[start];
      arr[start] = arr[end];
      arr[end] = temp;
      start++;
      end--;
   }
}
int main() {
   int arr[] = {6, 9, 1, 4, 0, 5};
   int n = sizeof(arr) / sizeof(arr[0]);
   cout<<"Orignal Array : ";
   for (int i = 0; i < n; i++)
      cout<<arr[i]<<" ";
   cout<<endl;
      revereseArrayIt(arr, 0, n-1);
      cout << "Reversed array : ";
      for (int i = 0; i < n; i++)
         cout<<arr[i]<<" ";
   cout<<endl;
   return 0;
}

ผลลัพธ์

Orignal Array : 6 9 1 4 0 5
Reversed array : 5 0 4 1 9 6

ตัวอย่าง

วิธีที่ 2 :วิธีการแบบเรียกซ้ำ

#include <iostream>
using namespace std;
void revereseArrayRec(int arr[], int start, int end){
   if(start >= end)
      return;
   int temp = arr[start];
   arr[start] = arr[end];
   arr[end] = temp;
   revereseArrayRec(arr,start+1, end-1);
}
int main() {
   int arr[] = {6, 9, 1, 4, 0, 5};
   int n = sizeof(arr) / sizeof(arr[0]);
   cout<<"Orignal Array : ";
   for (int i = 0; i < n; i++)
      cout<<arr[i]<<" ";
   cout<<endl;
      revereseArrayRec(arr, 0, n-1);
      cout << "Reversed array : ";
      for (int i = 0; i < n; i++)
         cout<<arr[i]<<" ";
   cout<<endl;
   return 0;
}

ผลลัพธ์

Orignal Array : 6 9 1 4 0 5
Reversed array : 5 0 4 1 9 6