Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Viết chương trình đảo ngược mảng hoặc chuỗi C++

Cho một mảng hoặc chuỗi ký tự. Tạo chương trình đảo ngược thứ tự phần tử của mảng hoặc chuỗi.

Ví dụ:

Input

mảng = {2, 5, 7, 1, 9}

Output

{9, 1, 7, 5, 2}

Input

chuỗi = "Hello!"

Output

!olleH

Cách làm: dùng hai biến start và end, hoán đổi phần tử tại hai vị trí, tăng start, giảm end. Lặp cho đến khi start >= end.

Có hai cách: lặp (iterative) và đệ quy (recursive).

Phương pháp 1: Lặp (Iterative)

#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 << "Mảng gốc: ";
    for (int i = 0; i < n; i++) cout << arr[i] << " ";
    cout << endl;
    
    revereseArrayIt(arr, 0, n-1);
    
    cout << "Mảng đã đảo: ";
    for (int i = 0; i < n; i++) cout << arr[i] << " ";
    cout << endl;
    
    return 0;
}

Kết quả

Mảng gốc: 6 9 1 4 0 5
Mảng đã đảo: 5 0 4 1 9 6

Phương pháp 2: Đệ quy (Recursive)

#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 << "Mảng gốc: ";
    for (int i = 0; i < n; i++) cout << arr[i] << " ";
    cout << endl;
    
    revereseArrayRec(arr, 0, n-1);
    
    cout << "Mảng đã đảo: ";
    for (int i = 0; i < n; i++) cout << arr[i] << " ";
    cout << endl;
    
    return 0;
}

Kết quả

Mảng gốc: 6 9 1 4 0 5
Mảng đã đảo: 5 0 4 1 9 6