Почему не выводится результат

По заданию пользователь задает массив А, В и С. В массиве С содержаться индексы элементов, которые нужно поменять местами в А и В. Результат не выводится, пишет, что не заданы i и j, хотя они заданы, в чем ошибка?

#include <iostream>
#include <vector>

using namespace std;
int main() {
    setlocale(LC_ALL, "RU");
    size_t size1, size2, size3;

    // Массив А
    cout << "Введите размер массива А: ";
    cin >> size1;
    vector<int> A(size1);
    cout << "Введите значения " << size1 << " массива А: ";
    for (size_t i = 0; i < size1; i++) {
        cin >> A[i];
    }

    // Массив В
    cout << "Введите размер массива В: ";
    cin >> size2;
    vector<int> B(size2);
    cout << "Введите значения " << size2 << " массива В: ";
    for (size_t j = 0; j < size2; j++) {
        cin >> B[j];
    }

    // Массив С
    cout << "Введите размер массива С: ";
    cin >> size3;
    vector<int> C(size3);
    if (size3 <= size1 && size3 <= size2)
    {   
        cout << "Введите значения " << size3 << " массива С: \n";
        for (size_t k = 0; k < size3; k++) {
            cin >> C[k];
        }
    }
    else
    {
        cout << "Массив С не должен быть больше массивов А и В, попробуйте ещё раз";
    }

    for (size_t i = 0; i < size1; i++){
        for (size_t j = 0; j < size2; j++) {
            for (size_t k = 0; k < size3; k++) {
                if (i = C[k]) {
                    int t = A[i];
                    A[i] = B[j];
                    B[j] = t;
                }
            }
        }

    }
    
    
    return A[i];
    return B[j];

}

Ответы (1 шт):

Автор решения: Cеньер Помидор

Вы объявляете переменные i и j внутри циклов for, соответственно для остальной программы они недоступны. Просто объявите их заранее в начале программы или непосредственно перед циклами:

size_t i;
size_t j;
for (i = 0; i < size1; i++){
        for (j = 0; j < size2; j++) {
            for (size_t k = 0; k < size3; k++) {
                if (i = C[k]) {
                    int t = A[i];
                    A[i] = B[j];
                    B[j] = t;
                }
            }
        }

    }

И

return A[i];
return B[j];

не выводит результат, это только возвращает результат работы функции (при чем отработает только первый return) Если вы хотите вывести i-ю и j-ю позицию массивов, то используйте

cout << A[i];
cout << B[j];

для вывода результата в консоль, но при этом вы выведите результат только для последнего действия. Я догадываюсь, что вы хотите увидеть результат работы всей программы. Для этого вы можете вывести оба массива и посмотреть, изменились ли их ячейки. Например:

for(int i = 0; i < size1; i++) {
   cout << A[i] << ' ';
} cout << endl;

for(int i = 0; i < size2; i++) {
   cout << B[i] << ' ';
} cout << endl;
→ Ссылка