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

Hiệu tuyệt đối của các phần tử chỉ số chẵn và lẻ trong mảng (C++)?

Chúng ta sẽ xem cách lấy hiệu tuyệt đối của các phần tử ở chỉ số chẵn và lẻ trong mảng. Hiệu tuyệt đối nghĩa là nếu hiệu của một cặp là âm, sẽ lấy giá trị tuyệt đối. Ví dụ: mảng {1, 2, 3, 4, 5, 6, 7, 8, 9}. Các phần tử vị trí chẵn (bắt đầu từ 0) là 1, 3, 5, 7, 9; vị trí lẻ là 2, 4, 6, 8. Hiệu cho vị trí chẵn: |1-3|=2, |2-5|=3, |3-7|=4, |4-9|=5. Tương tự cho vị trí lẻ cũng là 4.

Thuật toán

offEvenDiff(arr, n)

bắt đầu
  even := 0
  odd := 0
  for i := 0 đến n-1, thực hiện
    nếu i là chẵn thì
      even := |even – arr[i]|
    ngược lại
      odd := |odd – arr[i]|
  done
  trả về (odd, even)
kết thúc

Ví dụ

#include <iostream>
#include <cmath>
using namespace std;

void oddEvenDiff(int arr[], int n, int &o, int &e) {
  int even = 0;
  int odd = 0;
  for (int i = 0; i < n; i++) {
    if (i % 2 == 0) {
      even = abs(even - arr[i]); // lấy hiệu chẵn
    } else {
      odd = abs(odd - arr[i]);
    }
  }
  e = even;
  o = odd;
}

int main() {
  int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
  int n = sizeof(arr) / sizeof(arr[0]);
  int odd, even;
  oddEvenDiff(arr, n, odd, even);
  cout << "The odd and even differences are: " << odd << " and " << even;
  return 0;
}

Kết quả

The odd and even differences are: 4 and 5