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

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

Войти
Регистрация
Восстановить пароль
 
Mar-12
-21 / 5 / 1
Регистрация: 14.03.2013
Сообщений: 130
#1

почему не добавляет элемент? - C++

01.06.2013, 01:13. Просмотров 362. Ответов 8
Метки нет (Все метки)

insert() должен добавить один элемент,но он неправильно работает,где ошибка?
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
#include "stdafx.h"
#include <iostream>
using namespace std;
void Insert(const int index,const int value,int * arr,const int size);
int _tmain(int argc, _TCHAR* argv[])
{
    int * arr=new int[10];
    for(int i=0;i<10;i++)
    {
        arr[i]=i;
        cout<<arr[i]<<'\t';
    }
    cout<<endl;
    Insert(2,21,arr,10);
    for(int i=0;i<10;i++)
    {
        cout<<arr[i]<<'\t';
    }
    return 0;
}
void Insert(const int index,const int value,int * arr,const int size)
{
    int *p_arr=new int[size];
    for(int i=0;i<size;i++)
    {
        p_arr[i]=arr[i];
    }
    arr=new int[size+1];
    int j=0;
    int i=0;
    while(i<=size)
    {
        if(i!=index)
        {
            arr[i]=p_arr[j];
            j++;
        }
        else
        { 
           arr[i]=value;
        }
        i++;
        
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.06.2013, 01:13     почему не добавляет элемент?
Посмотрите здесь:

Есть функция которая добавляет элемент типа int в конец массива. Как ее переделать через шаблон - C++
Есть функция которая добавляет элемент типа int в конец массива. Как ее переделать через шаблон, чтобы можно было добавлять элементы в...

Почему не добавляется элемент в вектор? - C++
продолжение этой темы, но с другой проблемой. http://www.cyberforum.ru/cpp-beginners/thread927463.html Пишу программу, которая принимает...

Почему функция не удаляет минимальный элемент - C++
Вот кусок функции void second::Udal_Min() { for(int i=0;i&lt;n;i++)\ { if (*(x+i)==min) {if (i==(n-1)) { ...

Почему выводит не первый повторяющияся элемент? - C++
Написать функцию для поиска первого повторяющиегося элемента #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; char...

Почему мы не разыменовываем указатель на элемент массива? - C++
int *ptrarray = new int ; for (int i = 0; i &lt; 10; i++) { ptrarray = i; cout &lt;&lt; ptrarray &lt;&lt; &quot; &quot;; } ...

Почему я не могу создать статический элемент класса fstream? - C++
Ошибка: Код: #include &lt;iostream&gt; using namespace std; #include &lt;fstream&gt; const int MAX = 30; class worker {

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Olivеr
412 / 408 / 13
Регистрация: 06.10.2011
Сообщений: 831
01.06.2013, 01:33     почему не добавляет элемент? #2
что вы хотели сделать в той функции - вообще не понятно
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
#include "stdafx.h"
#include <iostream>
 
using namespace std;
 
int* Insert(const int index, const int value, const int *arr, const int size);
 
int _tmain(int argc, _TCHAR* argv[])
{
    int * arr = new int[10];
    for(int i = 0; i != 10; ++i) {
        arr[i] = i;
        cout << arr[i] << ' ';
    }
    cout << endl;
    arr = Insert(2, 21, arr, 10);
    for(int i = 0; i != 11; ++i) {
        cout << arr[i] << ' ';
    }
    delete[] arr;
    return 0;
}
 
int* Insert(const int index, const int value, const int *arr, const int size)
{
    int *p_arr=new int[size + 1];
    for(int i = 0; i != index; ++i)
            p_arr[i] = arr[i];
    p_arr[index] = value;
    for (int i = index + 1; i != size + 1; ++i)
        p_arr[i] = arr[i - 1];
    delete[] arr;
    return p_arr;
}
Mar-12
-21 / 5 / 1
Регистрация: 14.03.2013
Сообщений: 130
01.06.2013, 09:11  [ТС]     почему не добавляет элемент? #3
Olivеr,Что делает эта строка?
C++
1
2
for (int i = index + 1; i != size + 1; ++i)
        p_arr[i] = arr[i - 1];
уже все понятно,спасибо большое
Mar-12
-21 / 5 / 1
Регистрация: 14.03.2013
Сообщений: 130
01.06.2013, 18:11  [ТС]     почему не добавляет элемент? #4
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
#include <iostream>
using namespace std;
 
void Insert(const int index,const int value,int * m_pArr,int m_size);
 
int main()
{
    int arr[5]={2,7,4,3,5};
    for(int i=0;i<5;i++)
    {
        cout<<arr[i]<<'\t';
    }
    cout<<endl;
    Insert(2,21,arr,5);
    for(int i=0;i<5;i++)
    {
        cout<<arr[i]<<'\t';
    }
    cout<<endl;
   return 0;
}  
void Insert(const int index,const int value,int * m_pArr,int m_size)
{
    int* p=new int[m_size];
    for(int i=0;i!=m_size;i++)
    {
        p[i]=m_pArr[i];
    }
    m_pArr=new int[m_size+1];
    for(int i=0;i!=index;++i)
    {
        m_pArr[i]=p[i];
    }
    m_pArr[index]=value;
    for(int i=index+1;i!=m_size+1;++i)
    {
        m_pArr[i]=p[i-1];
    }
    
        
}
Croessmah
Модератор
Эксперт CЭксперт С++
13051 / 7314 / 814
Регистрация: 27.09.2012
Сообщений: 18,051
Записей в блоге: 3
Завершенные тесты: 1
01.06.2013, 18:19     почему не добавляет элемент? #5
А как Вы узнаете, что он не добавляет?

Добавлено через 12 секунд
Вы же выводите только исходный массив
Mar-12
-21 / 5 / 1
Регистрация: 14.03.2013
Сообщений: 130
01.06.2013, 18:22  [ТС]     почему не добавляет элемент? #6
Croessmah, ну я же в исходном массиве добавляю элемент, m_pArr исходный массив,я же передаю по указателю
Croessmah
Модератор
Эксперт CЭксперт С++
13051 / 7314 / 814
Регистрация: 27.09.2012
Сообщений: 18,051
Записей в блоге: 3
Завершенные тесты: 1
01.06.2013, 18:27     почему не добавляет элемент? #7
Цитата Сообщение от Mar-12 Посмотреть сообщение
ну я же в исходном массиве добавляю элемент
Фокус:
C++
1
2
3
4
5
6
void Insert(const int index,const int value,int * m_pArr,int m_size)
{
//...
m_pArr=new int[m_size+1];
//...
}
Mar-12
-21 / 5 / 1
Регистрация: 14.03.2013
Сообщений: 130
01.06.2013, 18:29  [ТС]     почему не добавляет элемент? #8
Croessmah, а тогда как сделать чтобы в исходном массиве место стало больше на один элемент?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.06.2013, 18:35     почему не добавляет элемент?
Еще ссылки по теме:

Элемент массива внезапно меняет свое значение, почему? - C++
Пишу программу кое-какую..и в одной функции происходит такая вот фигня: void screening_to_D3() { int i; int j=0; float lol; ...

Первый элемент массива равен 1 а остальные почему-то нулю - C++
Здраствуйте есть вопрос к задаче: дана программу реализовывающую вычисление последовательности Фиббоначи до определённого номера...

Найти максимальный элемент массива: неправильный результат, почему? - C++
Почему выдает такой макс?? #include &lt;iostream&gt; #include &lt;windows.h&gt; #include &lt;ctime&gt; #include &lt;iomanip&gt; using namespace std; ...

Объяснить почему выводит на экран не тот элемент массива, который ожидается - C++
#include &lt;iostream&gt; using namespace std; int main() { int mas = { 1, 0, 1, 0, 1, 0, 1, 0, 1, 0 }; cout &lt;&lt; mas &lt;&lt; endl; cout...


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

Или воспользуйтесь поиском по форуму:
Croessmah
Модератор
Эксперт CЭксперт С++
13051 / 7314 / 814
Регистрация: 27.09.2012
Сообщений: 18,051
Записей в блоге: 3
Завершенные тесты: 1
01.06.2013, 18:35     почему не добавляет элемент? #9
Цитата Сообщение от Mar-12 Посмотреть сообщение
чтобы в исходном массиве место стало больше на один элемент?
Никак.
C++
1
int arr[5]={2,7,4,3,5};
место под такой массив выделяется на этапе компиляции.

Можно сделать массив сразу большего размера, а можно выделить его в куче
Yandex
Объявления
01.06.2013, 18:35     почему не добавляет элемент?
Ответ Создать тему
Опции темы

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