Подскажите почему это так не работает [закрыт]

152
03 ноября 2019, 19:30

Я новичок и должен разобратся в массивах более детально. Смотрел на многие варианты, остановился на этом. Скорее всего так и нужно сделать, но чего-то в нем не хватает. Подскажите пожалуйста(

      /*Напишите функцию, которая на вход принимает два массива одинаковой длинны 
    + параметр, описывающий собственно их длинну; и модифицирует их таким образом, 
    что в первом массиве в каждой i-той ячейке находится разница этой ячейки и 
    соответствующей i-той ячейки второго массива, 
    а во втором массиве в каждой i-той ячейке находится сумма этой ячейки и 
    соответствующей i-той ячейки первого массива.*/
    #include <stdio.h>
    #include <iostream> 
    using namespace std; 
    int main (){
    int x;
    cout << "Please imput the length of the arrays" << endl;
    cin >> x ;
    int arr1 [x] {5,4,3,2};
    int arr2 [x] {2,3,4,5};
    for (int i = 0; i<=x; i++) 
    {
    arr1 [i] - arr2 [i];
    arr2 [i] + arr1 [i];
    }
    cout << "Result is " << arr1 << endl;
    }
Answer 1

Просто вы напрочь игнорируете здравый смысл и правила C++.

int arr1 [x] {5,4,3,2};
int arr2 [x] {2,3,4,5};

В С++ размер массива определяется во время компиляции, а не во время работы. Если уж указываете конкретные значения массива - то просто пишите

int arr1[] = {5,4,3,2};
int arr2[] = {2,3,4,5};

и получите два массива по 4 элемента.

В массиве из x элементов их и в самом деле x - от нулевого до x-1, так что

for (int i = 0; i<=x; i++) 

тут вы просто выходите за рамки массива.

Значения вы какие-то вычисляете, но никак их не используете:

arr1 [i] - arr2 [i];
arr2 [i] + arr1 [i];

Да и выводите

cout << "Result is " << arr1 << endl;

просто адрес, где в памяти находится массив...

От вас хотели вот этого:

void func(int* a1, int * a2, int sz)
{
    for(int i = 0; i < sz; ++i)
    {
        int a1i = a1[i];
        a1[i] -= a2[i];
        a2[i] += a1i;
    }
}

Разберитесь, как работает этот код, ну и подумайте, как его верно вызвать.

Без этого усилия - ваш вопрос тянет на закрытие со стандартной формулировкой

Учебные задания допустимы в качестве вопросов только при условии, что вы пытались решить их самостоятельно перед тем, как задать вопрос.

Поэтому я оставляю вам часть решения для самостоятельной работы...

READ ALSO
Перевод String в double и наоборот

Перевод String в double и наоборот

Есть строчный массив, нужно с него получить значение и перевести его в double вот так: "12s" = 1

151
Параметризированные типы и мой пример

Параметризированные типы и мой пример

Я не пойму почему при вызове метода print куда мы ложим sArray строковый массив, когда в самом методе указано, что он будет принимать Integer массив,...

125
Настройка Netbeans для JDK 11

Настройка Netbeans для JDK 11

В Netbeans 10 при открытии проекта показывает синтаксические ошибки:

145