Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
5 / 4 / 1
Регистрация: 14.02.2018
Сообщений: 580
1

Удалите элементы, индексы которых делятся на B[0] и т.д. до B[m]

05.09.2019, 22:01. Показов 736. Ответов 12
Метки нет (Все метки)

помогите пожалуйста выполнить удаление элементов ?
Есть две последовательности чисел:
1. A[0], A[1], ..., A[n] .
2. B[0], B[1], ... ,B[m] .
Выполните следующие операции с последовательностью A :
1. Удалите элементы, индексы которых делятся на B[0] .
2. В оставшихся пунктах уберите те, чьи индексы делятся на B [1] .
3. Повторите этот процесс до B[m] .
4. Вывести пункты, наконец, осталось.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <vector>
 
using namespace std;
 
int main() {
    vector<int> A, B;
    int val{};
    while (cin >> val && val != -1)
        A.push_back(val);
    while (cin >> val && val != -1)
        B.push_back(val);
 
    
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.09.2019, 22:01
Ответы с готовыми решениями:

Выбросить из матрицы элементы, индексы которых делятся на четыре, и заменить их максимальным элементом
Данный массив m * n . Выбросить из массива те элементы , индексы которых делятся на четыре и...

Заменить в массиве V те элементы, индексы которых делятся на четыре, наименьшим элементом массива
Помогите с заданием,пожалуйста и как можно скорее. 2. Заменить в массиве V те элементы, индексы...

Выбросить из массива те элементы, индексы которых делятся на четыре и заменить их масимальным элементом
Данный массив m * n. Выбросить из массива те элементы, индексы которых делятся на четыре и заменить...

С++ Вычислить сумму элементов массива, которые делятся на 3 и индексы которых есть нечетные числа
Вычислить сумму элементов массива, которые делятся на 3 и индексы которых есть нечетные числа

12
5 / 4 / 1
Регистрация: 14.02.2018
Сообщений: 580
06.09.2019, 10:41  [ТС] 2
подскажите пожалуйста ?
0
6447 / 4385 / 2512
Регистрация: 18.12.2017
Сообщений: 13,705
06.09.2019, 14:36 3
Цитата Сообщение от ElKros Посмотреть сообщение
1. Удалите элементы, индексы которых делятся на B[0]
без остатка.
интересная задачка
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <vector>
using namespace std;
 
int main()
{
    srand((int)time(0));
    size_t n, m, k;
    cout << "n="; cin >> n;
    cout << "m="; cin >> m;
    
    vector <int> A, B;
    
    cout << "A: ";
    for (size_t i = 0; i < n+1 ; i++)
    {
        A.push_back(rand()%9 + 1);       
        cout << A.at(i) << " ";          
    }     
    
    cout << "\nB: ";
    for (size_t i = 0; i < m+1 ; i++)
    {
        B.push_back(rand()%9 + 1);       
        cout << B.at(i) << " ";          
    }
    cout << "\n";
    
    size_t size=A.size();
    
    for (size_t i = 0; i < m+1; i++)
    {
    k=0;    
    for (size_t j = 0; j < size; j++)       
        if(j%B[i]==0) A.erase(A.begin()+j-k++);     
    size=A.size();
    cout << i+1 << ": ";
    for (size_t j = 0; j < size; j++)      
      cout << A.at(j) << " ";
    cout << "\n";    
    } 
    
system("pause");
return 0;
}
0
5 / 4 / 1
Регистрация: 14.02.2018
Сообщений: 580
06.09.2019, 14:59  [ТС] 4
Yetty, у вот такой вариант, но он не выводит верный ответ
Например
A: 1 2 4 3 6 5
B: 2
2 3 5

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int main() {
    vector<int> A, B;
    int val{};
    while (cin >> val && val != -1)
        A.push_back(val);
    while (cin >> val && val != -1)
        B.push_back(val);
 
    for (int i = 0; i < B.size(); i++)
    {
        int k = 0;
        for (int j = 0; j < A.size(); j++)
            if (j % B[i]==0) A.erase(A.begin() + j - k++);
        for (int j = 0; j < A.size(); j++)
            cout << A[j] << " ";
    }
        
    
    
    return 0;
}
0
6447 / 4385 / 2512
Регистрация: 18.12.2017
Сообщений: 13,705
06.09.2019, 15:01 5
возможно, что все операции нужно проводить с первоначальной последовательностью (в предложенном коде операции проводятся последовательно с полученными последовательностями)
0
5 / 4 / 1
Регистрация: 14.02.2018
Сообщений: 580
06.09.2019, 15:02  [ТС] 6
Yetty, а как оставить первоначальную ?
0
6447 / 4385 / 2512
Регистрация: 18.12.2017
Сообщений: 13,705
06.09.2019, 15:04 7
Цитата Сообщение от ElKros Посмотреть сообщение
он не выводит верный ответ
всё нормально выводит. на 2 без остатка делятся индексы 0, 2, 4. они соответствуют числам 1, 4, 6 именно эти числа и удаляются.
0
5 / 4 / 1
Регистрация: 14.02.2018
Сообщений: 580
06.09.2019, 15:10  [ТС] 8
Yetty, у меня выводит 2 3 6 5

Добавлено через 1 минуту
Yetty, не все элементы удаляются, которые нужно

Добавлено через 1 минуту
Yetty, и для чего элемент к при удалении элементов ?
0
6447 / 4385 / 2512
Регистрация: 18.12.2017
Сообщений: 13,705
06.09.2019, 15:32 9
Цитата Сообщение от ElKros Посмотреть сообщение
как оставить первоначальную ?
подумайте и напишите.
не применяйте выход по -1 (в условии такого нет). значение -1 вполне может быть обычным элементом последовательности

Добавлено через 3 минуты
Цитата Сообщение от ElKros Посмотреть сообщение
Yetty, не все элементы удаляются, которые нужно
я не знаю что там не удаляется в Ваших вариантах. Вы в моём коде напишите что не так. первый ввод-вывод, который Вы считаете неправильным
A: 1 2 4 3 6 5
B: 2
2 3 5
работает корректно, смотрите объяснение в моём предыдущем сообщении.

Добавлено через 18 минут
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <vector>
using namespace std;
 
int main()
{
    srand((int)time(0));
    size_t n=5, m=0, k; 
    
    vector <int> A, B;
    A={1,2,4,3,6,5};
    B={2}; 
    
    cout << "A: ";
    for (size_t i = 0; i < n+1; i++)
    cout << A.at(i) << " ";
    cout << "\n"; 
    
    cout << "B: ";
    for (size_t i = 0; i < m+1; i++)
    cout << B.at(i) << " ";
    cout << "\n";
    
    size_t size=A.size();
    
    for (size_t i = 0; i < m+1; i++)
    {
    k=0;    
    for (size_t j = 0; j < size; j++)       
        if(j%B[i]==0) A.erase(A.begin()+j-k++);     
    size=A.size();
    cout << i+1 << ": ";
    for (size_t j = 0; j < A.size(); j++)      
      cout << A.at(j) << " ";
    cout << "\n";    
    } 
    
system("pause");
return 0;
}
0
5 / 4 / 1
Регистрация: 14.02.2018
Сообщений: 580
06.09.2019, 15:36  [ТС] 10
Yetty, спасибо )
0
6447 / 4385 / 2512
Регистрация: 18.12.2017
Сообщений: 13,705
06.09.2019, 15:48 11
ElKros, пожалуйста
Цитата Сообщение от ElKros Посмотреть сообщение
для чего элемент к при удалении элементов ?
к - это переменная, которая учитывает что массив сдвигается (например Вы удалили второй элемент, и если нужно удалить ещё четвёртый, то удаляем третий, т.к. массив сдвинулся при удалении второго и так для всех последующих)

у Вас не работало, потому что нельзя менять size на A.size() (иначе будет меняться граница цикла)
C++
1
2
for (size_t j = 0; j < size; j++) 
    if(j%B[i]==0) A.erase(A.begin()+j-k++);
при удалении элемента
0
5 / 4 / 1
Регистрация: 14.02.2018
Сообщений: 580
06.09.2019, 15:53  [ТС] 12
Yetty, спасибо за объяснение ) вы очень помогли )
0
6447 / 4385 / 2512
Регистрация: 18.12.2017
Сообщений: 13,705
06.09.2019, 15:59 13
ElKros, Вы бы написали код для работы с первоначальной последовательностью (подсказка - создайте вектор A1 - копию вектора A)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.09.2019, 15:59

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Вычислить сумму отрицательных элементов массива, которые делятся на 5 и индексы которых есть нечетные числа
Вычислить сумму отрицательных элементов массива, которые делятся на 5 и индексы которых есть...

Удалите из массива все элементы, первые цифры которых четные.
Удалить из массива все элементы, первые цифры которых четные.(на С++)


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.