Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
igorbogdanov
0 / 0 / 1
Регистрация: 25.05.2015
Сообщений: 25
1

Перед элементом массива с порядковым номером K вставить новый элемент с нулевым значением

27.05.2015, 19:53. Просмотров 607. Ответов 6
Метки нет (Все метки)

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


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <cstdlib>
#include <iostream>
 
using namespace std;
int main()
{
    int n, k;
    cin >> n;
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[] array;
cout << endl;
    for (int i = 0; i < n; ++i)
    {
        cout << "["<<i+1<<"] - "<< arr[i] << endl; 
    }
return 0;
}
Подскажите пожалуйста в чём ошибка, ругается на строчку: cout << "["<<i+1<<"] - "<< arr[i] << endl;
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.05.2015, 19:53
Ответы с готовыми решениями:

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

Вставить перед каждым элементом массива элемент с нулевым значением
Дан целочисленный массив размера N. Вставить перед каждым его элементом элемент...

Перед каждым положительным элементом массива вставить элемент с нулевым значением
Дан массив размера N. Перед каждым положительным элементом массива вставить...

Перед каждым положительным элементом массива вставить элемент с нулевым значением, перезаписать эти элементы во второй массив
Условие: дано массив размера N. Перед каждым положительным элементом массива...

Однонаправленный связанный список (Вставить новый узел с нулевым значением перед первым отрицательным элементом...)
Помогите выполнить задание: Тип информационной части узла списка - INT Вид...

6
cooller
565 / 533 / 280
Регистрация: 25.12.2013
Сообщений: 1,456
28.05.2015, 01:57 2
igorbogdanov,
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include<iostream>
#include<vector>
#include<iterator>
 
int main()
{
    const size_t K = 4;
    std::vector<int> ivec = {1,2,5,1,5,2,6,8,10};
    ivec.insert(ivec.begin() + K-1,0);
    std::copy(ivec.begin(),ivec.end(),std::ostream_iterator<int>(std::cout," "));
    return 0;
}
Добавлено через 1 минуту
Цитата Сообщение от igorbogdanov Посмотреть сообщение
Подскажите пожалуйста в чём ошибка, ругается на строчку: cout << "["<<i+1<<"] - "<< arr[i] << endl;
потому что у вас массив объявлен как array, а выводите вы arr
0
igorbogdanov
0 / 0 / 1
Регистрация: 25.05.2015
Сообщений: 25
28.05.2015, 05:50  [ТС] 3
Это поменял, но в итоге программа работает неправильно
0
zss
Модератор
Эксперт С++
7462 / 6838 / 4317
Регистрация: 18.12.2011
Сообщений: 18,090
Завершенные тесты: 1
28.05.2015, 07:01 4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int main()
{
    int n, k;
    cin >> n>>k;
   int* arr=new int[n+1];
   for(int i = n; i > k; --i)
        arr[i]=arr[i-1]; // сдвигаем вправо на 1 позицию
   arr[k]=0;   
   for (int i = 0; i < n+1; ++i)
        cout << "["<<i+1<<"] - "<< arr[i] << endl; 
   delete[] arr;
   system("pause");
   return 0;
}
0
igorbogdanov
0 / 0 / 1
Регистрация: 25.05.2015
Сообщений: 25
28.05.2015, 11:17  [ТС] 5
всё равно неправильно считает, он берет числа из предыдущего, лучше было бы сделать двумя отдельными массивами, вот только не могу понять как

Добавлено через 1 час 13 минут
Вообщем решением данной задачи будет вот этот код:
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
#include <cstdlib>
#include <iostream>
 
using namespace std;
int main()
{
    int n, k, i;
    cout << "n=";
    cin >> n;
    cout << "k=";
    cin >> k;
   int *a, *b;
   a=new int [n];
   b=new int [n+1];
   
   for (i=0; i<k; i++) {b[i]=a[i]; }
   b[i]=0;
   for (i=k+1; i<n; i++)
   b[i]=a[i-1];
   for(i=0;i<=n;i++)
   cout << b[i] << endl;
   system("pause");
   return 0;
}
0
XZentus
201 / 199 / 65
Регистрация: 06.10.2013
Сообщений: 552
28.05.2015, 11:23 6
Почему, собственно, vector, массивы? Тут двусвязный список напрашивается исходя из условия задачи.
0
igorbogdanov
0 / 0 / 1
Регистрация: 25.05.2015
Сообщений: 25
30.05.2015, 08:40  [ТС] 7
Потому что по условию нужно было решить именно с использованием векторов и массивов
0
30.05.2015, 08:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.05.2015, 08:40

Перед каждым положительным значением массива вставить элемент с нулевым значением
Дан массив размера N. Перед каждым положительным значением массива вставить...

Перед каждым положительным элемент массива вставить элемент с нулевым значением
6)Дан массив размера N. Перед каждым положительным элемент массива вставить...

Вставить перед каждой серией массива элемент с нулевым значением.
Дан целочисленный массив размера N. Вставить перед каждой его серией элемент с...


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

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

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