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

Bài toán mảng tổng trong C++?

Chúng ta sẽ xem một bài toán thú vị liên quan đến mảng. Có một mảng n phần tử. Cần tạo mảng khác n phần tử, trong đó vị trí thứ i của mảng thứ hai chứa tổng tất cả phần tử của mảng thứ nhất trừ phần tử thứ i. Ràng buộc: không được sử dụng phép trừ.

Nếu cho phép trừ, ta dễ dàng giải bằng cách tính tổng tất cả phần tử, sau đó trừ phần tử thứ i của mảng đầu tiên và lưu vào vị trí i của mảng thứ hai.

Ở đây ta giải bằng cách cộng các phần tử mỗi lần, bỏ qua phần tử ở vị trí i, với i từ 0 đến n-1. Xem thuật toán để hiểu rõ hơn.

Thuật toán

sumArray(arr, n)

bắt đầu
  định nghĩa mảng res kích thước n
  với mọi phần tử i trong arr, thực hiện
    sum := 0
    với mọi phần tử j trong arr, thực hiện
      nếu i và j không giống nhau thì
        sum := sum + arr[j]
      kết thúc nếu
    done
    res[i] = sum
  done
  trả về res
kết thúc

Ví dụ

#include <iostream>
using namespace std;

void printArray(int arr[], int n) {
  for(int i = 0; i < n; i++) {
    cout << arr[i] << " ";
  }
  cout << endl;
}

void sumArray(int arr[], int resArr[], int n) {
  for(int i = 0; i < n; i++) {
    int sum = 0;
    for(int j = 0; j < n; j++) {
      if(i != j) {
        sum += arr[j];
      }
    }
    resArr[i] = sum;
  }
}

int main() {
  int myArr[7] = {5, 4, 7, 6, 9, 2, 3};
  int resArr[7];
  cout << "Initial Array: ";
  printArray(myArr, 7);
  sumArray(myArr, resArr, 7);
  cout << "Final Array: ";
  printArray(resArr, 7);
  return 0;
}

Kết quả

Initial Array: 5 4 7 6 9 2 3
Final Array: 31 32 29 30 27 34 33