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

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

Восстановить пароль Регистрация
 
Mar-12
 Аватар для Mar-12
-21 / 5 / 1
Регистрация: 14.03.2013
Сообщений: 131
01.06.2013, 01:13     почему не добавляет элемент? #1
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++;
        
    }
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Olivеr
 Аватар для Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
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
 Аватар для Mar-12
-21 / 5 / 1
Регистрация: 14.03.2013
Сообщений: 131
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
 Аватар для Mar-12
-21 / 5 / 1
Регистрация: 14.03.2013
Сообщений: 131
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
Модератор
Эксперт С++
 Аватар для Croessmah
11809 / 6788 / 767
Регистрация: 27.09.2012
Сообщений: 16,840
Записей в блоге: 2
Завершенные тесты: 1
01.06.2013, 18:19     почему не добавляет элемент? #5
А как Вы узнаете, что он не добавляет?

Добавлено через 12 секунд
Вы же выводите только исходный массив
Mar-12
 Аватар для Mar-12
-21 / 5 / 1
Регистрация: 14.03.2013
Сообщений: 131
01.06.2013, 18:22  [ТС]     почему не добавляет элемент? #6
Croessmah, ну я же в исходном массиве добавляю элемент, m_pArr исходный массив,я же передаю по указателю
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11809 / 6788 / 767
Регистрация: 27.09.2012
Сообщений: 16,840
Записей в блоге: 2
Завершенные тесты: 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
 Аватар для Mar-12
-21 / 5 / 1
Регистрация: 14.03.2013
Сообщений: 131
01.06.2013, 18:29  [ТС]     почему не добавляет элемент? #8
Croessmah, а тогда как сделать чтобы в исходном массиве место стало больше на один элемент?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.06.2013, 18:35     почему не добавляет элемент?
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11809 / 6788 / 767
Регистрация: 27.09.2012
Сообщений: 16,840
Записей в блоге: 2
Завершенные тесты: 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     почему не добавляет элемент?
Ответ Создать тему
Опции темы

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