Доброго времени суток.
Задача: сложить одинаковые значения двух массивов в третий. Код ниже показывает три значения (изначально заложенные), но выдает не те цифры. Необходимо найти ошибки.
#include <iostream>
using namespace std;
int main() {
setlocale(LC_ALL, "ru");
const int size1 = 7;
const int size2 = 7;
int arr1[size1] = {1, 3, 5, 7, 8, 2, 43};
int arr2[size2] = {1, 5, 7, 12, 4, 90, 56};
const int size3 = size1;
int arr3[] = {size3};
for (int i = 0; i < size1; i++) {
if (*(arr1 + i) == *(arr2 + i)) {
*(arr1 + i++);
}
cout << *(arr3 + i++) << " ";
}
cout << endl;
return 0;
}
Ошибки:
В строке int arr3[] = {size3}; массив arr3 создается с единственным элементом - size3. Для хранения суммы соответствующих элементов массивов arr1 и arr2 требуется массив такого же размера, то есть arr3 должен быть создан как int arr3[size1];.
В цикле for в строке *(arr1 + i++) переменная i увеличивается дважды, что приводит к пропуску элементов массива. Необходимо исправить ее на *(arr1 + i).
Так как массив arr3 хранит суммы соответствующих элементов массивов arr1 и arr2, необходимо заполнять его суммами этих элементов. Вместо строки cout << *(arr3 + i++) << " "; используйте следующую: