Программирование на с++, массивы и циклы

У меня есть задание : Заданы два одномерных массива X(n), Y(m). Причем 0 <= Yi < n; m <= n, Yi != Yj. Вычислить сумму тех элементов вектора Х, индексы которых совпадают со значениями элементов массива Y.

В чем заключается ошибка, я понимаю , что она глупая , но я ее не вижу ( мне и нужно сделать через enam, я , вроде бы сделал). Сильно не ругайтесь) Мой код :

#include <iomanip>    
#include <iostream>    
#include <clocale>
#include <string>
using namespace std;

int i, j;    

int main()
{  
    setlocale(LC_ALL, "rus");
    

    int A[5] = {1,2,3,4,5};
    int B[5] = {2,3,4,5,6};

    enum class enmArrayInit
    { Uninited = 0,  WithConst,  WithRand, ByUser, };

    cout << " Выберите тип инициализации:\n"
         <<(int)enmArrayInit::WithConst<< ".константами\n"
         <<(int)enmArrayInit::WithRand<<".случайными числами\n"
         <<(int)enmArrayInit::ByUser   << ".ввести вручную\n";
         cout << "Любая другая кнопка завершит программу\n  Ваш выбор: ";

    int ch = 0;    cin >> ch;

    switch ((enmArrayInit)ch)
    {case enmArrayInit::WithConst:
      {
        for (int i = 0; i < 5; i++) 
       break; 
        for (int j = 0; j < 5; j++) 
       break; 
      }
      break;
      case enmArrayInit::WithRand:
      {
          
        for (int i = 0; i < 5; i++){
            for (int j = 0; j < 5; j++){
                A[i] = rand() % 10;
                B[j] = rand() % 10;
            }
        }    
        break;
      }
      case enmArrayInit::ByUser: 
      {   
        for (int i = 0; i < 5; i++)  
        cin >> A[i];
        for (int j = 0; j < 5; j++)
        cin >> B[j];
        break;
      }
      default:  cout << "Программа завершается" << endl;
        return 0;
    }
    for (int i = 0; i < 5; i++)
    
        cout << setw(3) << A[i];
        cout << endl;
    for (int j = 0; j < 5; j++)
        cout << setw(3) << B[j];
    cout << endl;
    return 0;
   
  int sum;

    if ( 0<=B[j] && B[j]<5)
    {
        if(5<=5)
        {
             if (A[i]==j)
        {
            sum += A[i];
        }
        }

  }    
    
  cout << "sum" << sum <<endl;    
     
}
 

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

Автор решения: vlad9i2

У вас после вывода на экран массивов стоит return 0;. А можете объяснить, что вы пытаетесь сделать после int sum; и зачем вам if(5 <= 5), который всегда верен

Попробуйте для начала обнулить переменную sum

int sum = 0;

Затем пройтись циклом по элементам второго массива и добавлять нужные элементы в сумму

for(j = 0; j < 5; ++j) {
    if(B[j] < 5 && B[j] >= 0) {
        добавить к сумме B[j]-ый элемент из A
    }
}
→ Ссылка