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

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

Войти
Регистрация
Восстановить пароль
 
Oseg
0 / 0 / 0
Регистрация: 25.05.2014
Сообщений: 18
#1

Перед указанным элементом массива вставить новый элемент - C++

06.06.2014, 13:50. Просмотров 978. Ответов 10
Метки нет (Все метки)

Дан массив размера N и целое число K (1 ≤ K ≤ N). Перед элемен-
том массива с порядковым номером K вставить новый элемент с нулевым
значением.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.06.2014, 13:50
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перед указанным элементом массива вставить новый элемент (C++):

Перед элементом массива с порядковым номером K вставить новый элемент - C++
Дан массив размера N и целое число K (1 ≤ K ≤ N). Перед элементом массива с порядковым номером K вставить новый элемент с нулевым...

Удалить первый положительный элемент массива; вставить новый элемент перед первым максимальным элементом - C++
Дан целочисленный массив размера N. Как удалить первый положительный элемент ? Как вставить новый элемент перед первым максимальным...

Перед элементом массива с порядковым номером K вставить новый элемент с нулевым значением - C++
Дан массив размера N и целое число K (1 ≤ K ≤ N). Перед элементом массива с порядковым номером K вставить новый элемент с нулевым...

Перед указанным элементом массива вставить все элементы другого массива - C++
Даны одномерные массивы a и b, и число р. Вставить в массив a перед элементом с индексом р все элементы массива b. Добавлено через...

Вставить в вектор новый элемент перед элементом с заданным индексом - C++
Здравствуйте. У меня следующая проблема: Мне в программе нужно в вектор вставить в определенное место элемент. Лучше всего мне походит...

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

10
D_Ok
44 / 33 / 12
Регистрация: 11.02.2014
Сообщений: 134
06.06.2014, 14:22 #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
35
36
37
#include <iostream>
using namespace std;
int main()
{
    int n, k;
    cin >> n;
    int *arr = new int [n];
    for (int i = 0; i < n; ++i)
        arr[i] = i+1;
    for (int i = 0; i < n; ++i)
    {
        cout << "["<<i+1<<"] - "<< arr[i] << endl; 
    }
    cin >> k;
    ++n;
    int * temp = new int [n];
    for(int i = 0; i < n; ++i)
    {
        if (i < k-1)
            temp[i] = arr[i];
        else if(i==k-1)
            temp[i] = 0;
        else 
            temp[i] = arr[i-1];
    }
    delete [] arr;
    *arr = *temp;
    for ( int i = 0; i < n; ++i)
        arr[i] = temp[i];
    delete []temp;
    cout << endl;
    for (int i = 0; i < n; ++i)
    {
        cout << "["<<i+1<<"] - "<< arr[i] << endl; 
    }
return 0;
}
0
Kuzia domovenok
2062 / 1907 / 176
Регистрация: 25.03.2012
Сообщений: 6,572
Записей в блоге: 1
06.06.2014, 14:31 #3
D_Ok, ну и зачем тебе тут понадобилась строчка *arr=*temp ?
0
D_Ok
44 / 33 / 12
Регистрация: 11.02.2014
Сообщений: 134
06.06.2014, 14:37 #4
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
ну и зачем тебе тут понадобилась строчка *arr=*temp ?
ну вроде, для того что бы создать массив arr
0
SatanaXIII
Супер-модератор
Эксперт С++
5643 / 2678 / 252
Регистрация: 01.11.2011
Сообщений: 6,574
Завершенные тесты: 1
06.06.2014, 14:45 #5
Цитата Сообщение от D_Ok Посмотреть сообщение
для того что бы создать массив arr
Kuzia domovenok имеет в виду, что приваивание первого элемента массива не создаст весь массив. Если вы хотели чтобы массив arr указывал на область массива temp, то надо было так и написать:
C++
1
arr = temp;
0
D_Ok
44 / 33 / 12
Регистрация: 11.02.2014
Сообщений: 134
06.06.2014, 14:48 #6
а ну да, каюсь((
тогда там надо так

26 delete [] arr;
27 arr = new int[n];

ато жуки могут вылезти
0
Kuzia domovenok
2062 / 1907 / 176
Регистрация: 25.03.2012
Сообщений: 6,572
Записей в блоге: 1
06.06.2014, 14:55 #7
Нифига ты его не создал - ты его удалил строчкой ранее! А то, что я указал - попытка присвоить нулевому элементу массива арр - значение нулевого элемента массива тмп! Мало того, что она бессмысленна (все элементы арр и так будут копироваться в след. Строке). Так ещё и память под новый арр так и не выделилась как ты хотел!
Надо арр = new int [n+1]
либо вообще арр=temp (без звёзд)
0
D_Ok
44 / 33 / 12
Регистрация: 11.02.2014
Сообщений: 134
06.06.2014, 15:03 #8
Kuzia domovenok, согласен же, что так не создал, написал же. А насчет того что (все элементы арр и так будут копироваться в след. Строке) элементы куда будут копироваться, память то я почистил а новую перед тем не выделил, и арр=temp тоже не поможет, темп ведь тоже чистится, надо арр = new int [n], (n уже был там увеличен)
0
Kuzia domovenok
2062 / 1907 / 176
Регистрация: 25.03.2012
Сообщений: 6,572
Записей в блоге: 1
06.06.2014, 15:21 #9
Цитата Сообщение от D_Ok Посмотреть сообщение
темп ведь тоже чистится,
а ты не чисти!
0
D_Ok
44 / 33 / 12
Регистрация: 11.02.2014
Сообщений: 134
06.06.2014, 15:22 #10
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
а ты не чисти!
нас учат убирать за собой
0
Kuzia domovenok
2062 / 1907 / 176
Регистрация: 25.03.2012
Сообщений: 6,572
Записей в блоге: 1
06.06.2014, 17:01 #11
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
D_Ok, так нафига чистить то, что тебе нужно-то?! Ты выделил новый массив, скопировал в него данные, всё! Освобождай память лишь в конце работы!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int* array=new int[N];
//работаем
int* tmp=new int[N+1];
//копируем
for(int i = 0; i < n; ++i)
 if (i < k-1)
//...
delete[] array;//чистим старый
array=tmp;
//зачем делать delete[] temp, блин?
//снова работаем, до конца программы 
//конец программы
delete[] array;
Что не так-то? Ты ещё хочешь что-то чистить?
1
06.06.2014, 17:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.06.2014, 17:01
Привет! Вот еще темы с ответами:

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

Удалить первый элемент с заданным объемом информации, добавить элемент перед элементом с указанным номером - C++
Структура &quot;Информация&quot;: - носитель; - объем; - название; - автор. Удалить первый элемент с заданным объемом информации, добавить...

Доработка структуры (удалить первый элемент с заданным объемом информации, добавить элемент перед элементом с указанным номером) - C++
//--------------------------------------------------------------------------- ЗАДАНИЕ:Создать двоичный файл из элементов , заданных...

Вставить новый элемент, перед всеми нечётными элементами одномерного массива - C++
Вставить новый элемент, перед всеми нечётными элементами одномерного массива.


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

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

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