Computer >> Máy Tính >  >> Lập trình >> lập trình C

Cộng các phần tử của mảng đã cho với các ràng buộc đã cho?

Đối với vấn đề này, để thêm các phần tử của hai mảng đã cho, chúng ta có một số ràng buộc dựa trên đó giá trị thêm vào sẽ bị thay đổi. tổng của hai mảng a [] &b [] đã cho được lưu trữ vào mảng thứ ba c [] theo cách mà chúng cho một số phần tử ở dạng chữ số duy nhất. và nếu số chữ số của tổng lớn hơn 1, thì phần tử của mảng thứ ba sẽ tách thành hai phần tử có một chữ số. Ví dụ:nếu tổng xảy ra là 27, mảng thứ ba có lưu trữ nó là 2,7.

Input: a[] = {1, 2, 3, 7, 9, 6}
       b[] = {34, 11, 4, 7, 8, 7, 6, 99}
Output: 3 5 1 3 7 1 4 1 7 1 3 6 9 9

Giải thích

Xuất mảng và chạy một vòng lặp từ chỉ số thứ 0 của cả hai mảng. Đối với mỗi lần lặp của vòng lặp, chúng tôi xem xét các phần tử tiếp theo trong cả hai mảng và thêm chúng. Nếu tổng lớn hơn 9, chúng tôi đẩy các chữ số riêng lẻ của tổng sang đầu ra mảng khác, chúng tôi đẩy tổng của chính nó. Cuối cùng, chúng tôi đẩy các phần tử còn lại của mảng đầu vào lớn hơn sang mảng đầu ra.

Ví dụ

#include <iostream>
#include<bits/stdc++.h>
using namespace std;
void split(int n, vector<int> &c) {
   vector<int> temp;
   while (n) {
      temp.push_back(n%10);
      n = n/10;
   }
   c.insert(c.end(), temp.rbegin(), temp.rend());
}
void addArrays(int a[], int b[], int m, int n) {
   vector<int> out;
   int i = 0;
   while (i < m && i < n) {
      int sum = a[i] + b[i];
      if (sum < 10) {
         out.push_back(sum);
      } else {
         split(sum, out);
      }
      i++;
   }
   while (i < m) {
      split(a[i++], out);
   }
   while (i < n) {
      split(b[i++], out);
   }
   for (int x : out)
   cout << x << " ";
}
int main() {
   int a[] = {1, 2, 3, 7, 9, 6};
   int b[] = {34, 11, 4, 7, 8, 7, 6, 99};
   int m =6;
   int n = 8;
   addArrays(a, b, m, n);
   return 0;
}