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