0

Задан массив из k символов. Вычислить сумму S первых 20 отрицательных элементов массива, кратных 5. Удалить из массива элементы, значения которых равны по абсолютному значению S.

Вот версия программы, которая выполняет нахождение суммы и ищет элементы, по модулю равные S, но 29 строке нет никакого тела после if, потому что не представляю, как удалить из array.

#include <iostream>
#include <array>
#include <cstdlib>

using namespace std;

int main(){

    setlocale (0,"Rus");
    int i,j=0,sum=0;
    const int k=40;
    array <int, k> arr={};                      // Создается массив, все элементы которого инициализированы нулями


    for(i=0;i<k;i++){
        arr[i]=-200+rand()%300;                 
        cout<<arr[i]<<endl;
    }


    for(i=0;i<k,j<20;i++){
        if(arr[i]<0&&arr[i]%5==0)
            sum+=arr[i];                    //  Сумма 20 отрицательных элементов
            j++;
    }

    for(i=0;i<k;i++){
        if(arr[i]==sum||arr[i]==-sum)
        //    arr[i]
    }


    return 0;
}
KoVadim
  • 112,121
  • 6
  • 94
  • 160
  • Пожалуйста, добавьте в вопрос свои попытки решить задачу. Аргументация, почему это нужно. Спасибо. – Саша Черных May 23 '18 at 14:05
  • Контейнер array имеет фиксированный размер, задающийся на этапе компиляции, и не поддерживает операцию удаления. Если надо удалять, то используйте vector. – user7860670 May 23 '18 at 18:38
  • очень жаль( в лабораторной сказано выполнить вышеуказанное задание, используя последовательный контейнер array. А может есть хитрый способ как-то обойти это? не совсем удалить как-нибудь, может удалить в тайне. Ну очень нужно сделать так, как в задании – Бритва разума May 23 '18 at 18:43
  • в условии задачи сказано использовать std::array или там просто сказано использовать массив? – KoVadim May 24 '18 at 07:01
  • в условии сказано выполнить задание, используя последовательный контейнер array – Бритва разума May 24 '18 at 14:38
  • тогда пишите using seq_array = std::vector<int>; и дело в шляпе. – KoVadim May 25 '18 at 06:59

0 Answers0