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

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

Войти
Регистрация
Восстановить пароль
 
Hrollo
34 / 34 / 6
Регистрация: 05.11.2013
Сообщений: 147
#1

не удаляется элемент из массива - C++

20.12.2013, 22:47. Просмотров 186. Ответов 4
Метки нет (Все метки)

Всем привет. Есть 2 ф-ции одна добавляет в конец массива новый елемент(работает нормально), а вторая должна удалять из массива любой елемент по заданному индексу(не работает).
Вот собственно и эта функция. Кто нибудь знает как надо подправить код?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int *del(int a[],int &n)
{
    int *p = new int[n--];//Массив который меньше исходного на 1 елемент.
    int m,j=0;
    cout<<"Введите индекс элемента который надо удалить:";
    cin>>m;//индекс который надо удалить
    for(int i(0);i<n;i++)
    {
        if(i==m)
            j=1;
        else
            j=0;
        p[i]=a[i+j];
    }
    delete [] a;
    return p;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.12.2013, 22:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос не удаляется элемент из массива (C++):

Написать программу:функция что возвращает элемент массива,и удаляет этот элемент з массива - C++
Написать программу:функция что возвращает элемент массива,и удаляет этот элемент з массива помогите написать!!

Определить, что больше: максимальный элемент массива А[10] или минимальный элемент массива В[7] - C++
Определить, что больше: максимальный элемент массива А или минимальный элемент массива В. Поставить максимальный элемент из них на место...

Заменить последний положительный элемент одномерного массива на второй элемент массива - C++
#include &lt;string&gt; #include&quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;string&gt; using namespace std; ...

Заменить последний положительный элемент массива на второй элемент массива - C++
Заменить последний положительный элемент массива на второй элемент массива. Как вывести еще раз этот же массив только с замененным числом ...

Как умножить элемент двойного массива на элемент одинарного массива - C++
Понимаю, что вопрос кого-то покажется глупым, но подскажите хотя бы как обойти этот момент /*for (int i = 0; i &lt; N; i++) { x = (A...

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

4
Andy_Rusin
26 / 5 / 1
Регистрация: 13.05.2013
Сообщений: 13
21.12.2013, 00:52 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int *del(int a[],int &n)
{
    int *p = new int[n--];//Массив который меньше исходного на 1 елемент.
    int m,j=0;
    cout<<"Введите индекс элемента который надо удалить:";
    cin>>m;//индекс который надо удалить
    for(int i(0);i<n;i++)
    {
        if(i==m)
            j=1; //ты тут присваиваешь j единицу
        else
            j=0; // но после этого она скорее всего пройдет по элементу который подпадает под элсо и j заного обнулится
        p[i]=a[i+j];
    }
    delete [] a; //тут ты вообще удаляешь весь масив
    return p;
}
0
Hrollo
34 / 34 / 6
Регистрация: 05.11.2013
Сообщений: 147
21.12.2013, 03:22  [ТС] #3
Все разобрался) все заработало.
0
alsav22
5428 / 4823 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.12.2013, 05:22 #4
Цитата Сообщение от Hrollo Посмотреть сообщение
int *p = new int[n--];//Массив который меньше исходного на 1 елемент.
Уверены, что меньше?
1
Hrollo
34 / 34 / 6
Регистрация: 05.11.2013
Сообщений: 147
21.12.2013, 12:47  [ТС] #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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
#include <iostream>
#include <conio.h>
#include <ctime>
#include <stdlib.h>
 
using namespace std;
 
void Input(int *arr,int size)
{
    for(int i(0);i<size;i++)
        arr[i]=rand()%20;
}
void Print(int arr[],int size)
{
    for(int i(0);i<size;i++)
        cout<<arr[i]<<"\t";
}
int *Add(int arr[], int &size)
{
    size++;
    int *ptr = new int[size];
    int numb;
    cout<<"Enter element:";
    cin>>numb;
    for(int i(0);i<size-1;i++)
        ptr[i]=arr[i];
    delete[] arr;
    ptr[size-1]=numb;
    return ptr;
}
int *del(int a[],int &n)
{
    n--;
    int *p = new int[n];
    int m,j=0;
    cout<<"\nВведите индекс элемента который надо удалить:";
    cin>>m;
    for(int i(0);i<n;i++)
    {
        if(i==m)
            j=1;
        p[i]=a[i+j];
    }
    delete [] a;
    return p;
}
int *insert(int *a,int &n)
{
    n++;
    int *p = new int[n];
    int m,numb,j=0;
    cout<<"Введите индекс элемента = ";
    cin>>m;
    cout<<"Введите число = ";
    cin>>numb;
    for(int i(0);i<n;i++)
    {
        if(i==m)
        {
            p[m]=numb;
            j=-1;
            continue;
        }
        p[i]=a[i+j];
    }
    delete [] a;
    return p;
}
void menu()
{
    cout<<"Что делаем:"<<endl;
    cout<<"1 add element"<<endl;
    cout<<"2 delete element"<<endl;
    cout<<"3 insert element"<<endl;
}
 
int main()
{
    setlocale(LC_ALL,"Russian");
    srand(time(NULL));
    int size = 10;
    int *A = new int[size];
    Input(A,size);
    Print(A,size);
    cout<<"\n\t\tArray"<<endl;
    char ch;
    int s;
    for(;;)
    {
        menu();
        cout<<"Your choice:";
        cin>>s;
        switch(s)
        {
        case 1:
            A=Add(A,size);
            Print(A,size);
            break;
        case 2:
            A=del(A,size);
            Print(A,size);
            break;
        case 3:
            A=insert(A,size);
            Print(A,size);
            break;
        default:
            cout<<"bye!"<<endl;
            break;
        }
        cout<<"\nContinue:";
        cin>>ch;
        if(ch=='a')
            break;
    }   
    delete [] A;
    _getch();
    return 0;
}
0
21.12.2013, 12:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.12.2013, 12:47
Привет! Вот еще темы с ответами:

Все отрицательные элементы заданного массива L (11) разделить на максимальный элемент этого массива. Вывести максимальный элемент, начальный и преобра - C++
Помогите составить программу на С++

Создать два массива. Вычислить количество тех элементов каждого массива, для которых выполняется неравенство: 2<элемент массива<10 - C++
помогите,пожалуйста! есть вот такие задания...ОЧЕНЬ надо на завтра... Задача 4. Определить два одномерных массива А(19) и В(16);...

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

Определить максимальный по модулю элемент элемент массива и позицию в которой он расположен - C++
Помогите пожалуйста решить задачку по с++; Задан одномерный массив В , состоящий из n вещественных элементов. Определить максимальный...


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

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

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