Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.58
Alex0007
1 / 1 / 0
Регистрация: 19.10.2010
Сообщений: 8
19.10.2010, 09:45     Удаление N элементов, начиная с номера K #1
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]<<" ";
Пока ждал, придумал такое. Будет ли это считаться удалением?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.10.2010, 09:45     Удаление N элементов, начиная с номера K
Посмотрите здесь:

Функция Delete(s,n,l) Назначение: удаление из строки s подстроки, начиная с позиции n, длиной l C++
C++ Указатели . Удалить из одномерного массива элемент с заданным номером, добавить К элементов, начиная с заданного номера
C++ Задача.Добавить в одномерный массив N элементов, начиная с номера К
C++ Количество элементов последовательности, начиная с третьего, среднее арифметическое элементов
C++ Удалить из списка элемент с заданным номером и добавить элементфы, начиная с заданного номера.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dihlofos
Бродяга
 Аватар для dihlofos
302 / 256 / 17
Регистрация: 27.08.2010
Сообщений: 553
19.10.2010, 09:59     Удаление N элементов, начиная с номера K #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]<<' ';
Только по хорошему ещё надо проверку сделать, чтобы за пределы массива не вылазить.
Alex0007
1 / 1 / 0
Регистрация: 19.10.2010
Сообщений: 8
19.10.2010, 10:19  [ТС]     Удаление N элементов, начиная с номера K #3
i<k+kolvo
я поставил скобки, ибо что-то не работало. Заработало, спасибо
Да и косяк к вам вкрался, так что вы должны быть довольны
dihlofos
Бродяга
 Аватар для dihlofos
302 / 256 / 17
Регистрация: 27.08.2010
Сообщений: 553
19.10.2010, 10:30     Удаление N элементов, начиная с номера K #4
Ппц, сам запутался) Всё же правильней будет такой цикл:
C++
1
for(i=k; i<n-kolvo; i++)
Teranvl
0 / 0 / 0
Регистрация: 09.02.2014
Сообщений: 5
22.02.2014, 15:00     Удаление N элементов, начиная с номера K #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;
}
Yandex
Объявления
22.02.2014, 15:00     Удаление N элементов, начиная с номера K
Ответ Создать тему
Опции темы

Текущее время: 00:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru