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

Chênh lệch tuyệt đối giữa phần tử chỉ số chẵn/lẻ trong mảng C++


Cho mảng, tính chênh lệch tuyệt đối giữa các phần tử liên tiếp ở chỉ số chẵn, và riêng cho chỉ số lẻ.

  • Chỉ số chẵn: 0, 2, 4, ...
  • Chỉ số lẻ: 1, 3, 5, ...
  • Sai số tuyệt đối: |a[i] - a[j]|

Ví dụ

arr = {1, 2, 4, 5, 8}
Chỉ số chẵn: 1, 4, 8 → |4-1|=3, |8-4|=4
Chỉ số lẻ: 2, 5 → |5-2|=3

Chương trình C++ (sửa lỗi logic code gốc)

#include <bits/stdc++.h>
using namespace std;

int main() {
    vector<int> arr = {1, 5, 8, 10, 15, 26};
    int n = arr.size();
    
    cout << "Mang: ";
    for (int x : arr) cout << x << " ";
    
    // Tách phần tử chỉ số chẵn/lẻ
    vector<int> even_idx, odd_idx;
    for (int i = 0; i < n; i++) {
        if (i % 2 == 0) even_idx.push_back(arr[i]);
        else odd_idx.push_back(arr[i]);
    }
    
    // Tính sai số tuyệt đối liên tiếp
    auto calcDiff = [](const vector<int>& v) {
        if (v.size() < 2) return 0;
        int sum = 0;
        for (size_t i = 1; i < v.size(); i++)
            sum += abs(v[i] - v[i-1]);
        return sum;
    };
    
    cout << "\nTong sai so tuyet doi chi so chan: " << calcDiff(even_idx);
    cout << "\nTong sai so tuyet doi chi so le: " << calcDiff(odd_idx);
    return 0;
}

Kết quả

Mang: 1 5 8 10 15 26
Tong sai so tuyet doi chi so chan: 25
Tong sai so tuyet doi chi so le: 21