Почему не выводится результат
По заданию пользователь задает массив А, В и С. В массиве С содержаться индексы элементов, которые нужно поменять местами в А и В. Результат не выводится, пишет, что не заданы 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 шт):
Вы объявляете переменные 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;