Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.58
Alex0007
1 / 1 / 0
Регистрация: 19.10.2010
Сообщений: 8
#1

Удаление N элементов, начиная с номера K - C++

19.10.2010, 09:45. Просмотров 1961. Ответов 4
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
srand((unsigned)time(NULL));
cout<<"n?";cin>>n;
for (i=0;i<n;i++)
{a[i]=rand()%100-50;cout<<a[i]<<" ";};
cout<<"\n1 zadacha\nVVedi K  ";cin>>k;;
cout<<"\n\nUdaliaem elementi, nachinaya s nomera K\n";
for (i=0;i<n;i++)
if (i<k) 
{b[j]=a[i];
cout<<b[j]<<" ";
j++;};cout<<"\n";
Но этот алгоритм удаляет все элементы после номера k, а нужно N элементов.
Знаю только массивы

Добавлено через 9 минут
C++
1
2
3
4
5
6
7
8
9
srand((unsigned)time(NULL));
cout<<"n?";cin>>n; if (n>0) {
for (i=0;i<n;i++)
{a[i]=rand()%100-50;cout<<a[i]<<" ";}
cout<<"\n1 zadacha\nVVedi K  ";cin>>k;cout<<"\nvvedi N\n";cin>>N;
cout<<"\n\nUdaliaem N elementov, nachinaya s nomera K\n";
for (i=0;i<n;i++)
if ((i>=k)&&(i<(k+N))) 
cout<<""; else cout<<a[i]<<" ";
Пока ждал, придумал такое. Будет ли это считаться удалением?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.10.2010, 09:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Удаление N элементов, начиная с номера K (C++):

Добавить К элементов в массив, начиная с номера N - C++
Сформировать динамический одномерный массив, заполнить его случайными числами и вывести на печать. Добавить К элементов, начиная с номера...

Добавить в одномерный массив N элементов, начиная с номера К - C++
1. Сформировать массив из n элементов с помощью датчика случайных чисел (n зада-ется пользователем с клавиатуры). 2. Распечатать...

В динамическом массиве удалить N элементов, начиная с номера K (ошибка) - C++
Помогите, как исправить ошибку? Нужно из массива arr , который перед этим формируется рандомно. удалить N элементов начиная с номера K. у...

Как применяя erase удалить в векторе n элементов, начиная с номера k? - C++
Помогите, как это записать, чтобы не возникало ошибок? arr.erase(arr.begin() + k, arraySize - (arr.begin() + k));

Указатели . Удалить из одномерного массива элемент с заданным номером, добавить К элементов, начиная с заданного номера - C++
Сформировать одномерный массив. Удалить из него элемент с заданным номером, добавить К элементов, начиная с заданного номера

Сформировать одномерный массив. Удалить из него К элементов, начиная с заданного номера, добавить элемент с заданным ключом - C++
Сформировать одномерный массив. Удалить из него К элементов, начиная с заданного номера, добавить элемент с заданным ключом.

4
dihlofos
Бродяга
303 / 257 / 17
Регистрация: 27.08.2010
Сообщений: 553
19.10.2010, 09:59 #2
На скорую руку, проверьте:
C++
1
2
3
4
5
6
7
8
9
10
cout<<"\n1 zadacha\nVVedi K  ";cin>>k;
cout<<"\nVVedi kolvo  ";cin>>kolvo;
cout<<"\n\nUdaliaem "<<kolvo<<" elementov, nachinaya s nomera "<<k<<endl;
 
for(i=k; i<k+kolvo; i++)
    a[i]=a[i+kolvo]; // элемент = элемент+сдвиг
n-=kolvo;           // уменьшть длину на кол-во удаленных
 
for(i=0; i<n; i++) // вывод
    cout<<a[i]<<' ';
Только по хорошему ещё надо проверку сделать, чтобы за пределы массива не вылазить.
1
Alex0007
1 / 1 / 0
Регистрация: 19.10.2010
Сообщений: 8
19.10.2010, 10:19  [ТС] #3
i<k+kolvo
я поставил скобки, ибо что-то не работало. Заработало, спасибо
Да и косяк к вам вкрался, так что вы должны быть довольны
1
dihlofos
Бродяга
303 / 257 / 17
Регистрация: 27.08.2010
Сообщений: 553
19.10.2010, 10:30 #4
Ппц, сам запутался) Всё же правильней будет такой цикл:
C++
1
for(i=k; i<n-kolvo; i++)
1
Teranvl
1 / 1 / 0
Регистрация: 09.02.2014
Сообщений: 5
22.02.2014, 15:00 #5
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
#include<iostream>
#include <iomanip>
#include <math.h>
#include <cmath>
#include <stdio.h>
using namespace std;
 
 
int main()
{
    setlocale(LC_ALL, "russian");
    srand(time(NULL));
 
    int raz, n, k;
    cin >> raz;
    int *mass1 = new int[raz];
    
    for (int i = 0; i < raz; i++)
    {
        mass1[i] = rand() % 200 - 100;
        cout << mass1[i] << " ";
    }
    cout << endl;
    cout << "Введите номер элемента, с которого хотите начать удаление: ";
    cin >> k;
    cout << "Введите количество элементов, которые хотите удалить \n" ;
    cin >> n;
 
    for (int i = k; i < raz - n; i++)
        {   
        mass1[i] = mass1[i + n];
        //raz -= n;
        }
 
    for(int i = 0; i<raz-n; i++)
        cout << mass1[i] << ' ';
 
    system("pause >> void");
    return 0;
}
1
22.02.2014, 15:00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.02.2014, 15:00
Привет! Вот еще темы с ответами:

Удалить из списка элемент с заданным номером и добавить элементфы, начиная с заданного номера. - C++
Помогите написать программу, в которой создаются динамические структуры, я не знаю как :-|:( Записи в линейном списке содержат ключевое...

Сдвинуть все элементы одномерного массива начиная с заданного номера к концу на 1 позицию и записать элемент - C++
Как сдвинуть все элементы начиная с заданного номера к концу на 1 позицию и записать элемент. Одномерный массив. Помогите с листингом,...

Функция Delete(s,n,l) Назначение: удаление из строки s подстроки, начиная с позиции n, длиной l - C++
помогите задачку написать.

Количество элементов последовательности, начиная с третьего, среднее арифметическое элементов - C++
Задача 2. Использование инструкций для организации циклов (обработка вещественных значений) Написать программу, в которой с клавиатуры...


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

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

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