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