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

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

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

Массив. Вставить в него элемент k (задать условие) - C++

04.04.2013, 00:44. Просмотров 305. Ответов 2
Метки нет (Все метки)

У меня есть масив,допутим из 10 значений,пусть будет 1...10,мне нужно вставить в него елемент k,и получаеться такая проблема если я ввожу позицию <=0 и >+11 то вставляет 0,а нужно как то задать условие что б такого не было. Как это зделать?


вот сам код может поможет)

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
#include <iostream>
#include <windows.h>
#include <stdlib.h>
#include <time.h>
#include <iomanip>
using namespace std;
 
void delet_element (int* mass,int n );
void insert(int* mass,int n);
void sort(int* mass,int* mass1,int n);
void search(int* mass,int n);
void insertion_sort(int* mass,int* mass1,int n);
void swap(int n,int k);
void print_arr(int n);
void gen_arr(int n);
 
int arr[50];
 
void main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
cout<<"Введите розмер масива: ";
int a;
cin>>a;
gen_arr(a);
print_arr(a);
search(arr,a);
insert(arr,a);
a++;
print_arr(a);
cin.get();
}
 
void gen_arr(int n){
    srand((unsigned)time(NULL) );
    for(int i=0;i<n;i++)
        arr[i]=-50+rand()%100;
 
}
 
 
 
void insert(int* mass,int n){
int k;
cout<<"Введите елемент \"k\": ";
cin>>k;
cout<<"Введите позицию елемента \"k\":"<<endl; 
int j;
cin>>j;
if (j<=n) 
j--;
 
for(int i=n;i>j;i--){
    arr[i]=arr[i-1];
    }
arr[j]=k;
}
void print_arr(int n)
{
for(int i=0;i<n;i++) 
    cout<<setw(4)<<arr[i];
cout <<endl;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.04.2013, 00:44
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Массив. Вставить в него элемент k (задать условие) (C++):

Найти минимальный элемент стека, вставить после него 0 - C++
найте минимальный элемент стека , е поставить после него 0 Добавлено через 50 минут уже нашел

Найти минимальный элемент стека и вставить после него 0 - C++
Найти минимальный элемент стека и вставить после него 0: вот программа но работает не корректно: #include &lt;iostream&gt; using...

Найти минимальный элемент стека и вставить после него 0 - C++
 ребят помогите сделать задачу, не понимаю как делать. Ввести символы, формируя из них стек.Найти минимальный элемент и вставить после...

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

Дан двумерный массив размером 5 * 8, заполненный случайным образом. Вставить перед всеми строками, первый элемент которых делится на3,вставить.... - C++
Дан двумерный массив размером 5 * 8, заполненный случайным образом. Вставить перед всеми строками, первый элемент которых делится на 3,...

Если встречается нечетный элемент, то перед ним и после него вставить новые элементы со значением 0 - C++
Здравствуйте! Подскажите пожалуйста в чем ошибка! Задание: Если встречается нечетный элемент, то перед ним и после него вставить новые...

2
matepuhko
20 / 20 / 6
Регистрация: 05.06.2011
Сообщений: 119
04.04.2013, 01:48 #2
1) Создать новый массив из n + 1 чисел, туда скопировать старый добавив 1-н елемент в начале или в конце.
2) Использывать realloc, но ето си а не плюсы.
3) Заменить старое число новыс, типу a[11] = a[10]
4) Использывать динамические массивы типу
C++ (Qt)
1
std::vector
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
04.04.2013, 04:37 #3
Недопустить использования неверной позиции можно, например, так:
C++
1
2
3
4
5
6
7
8
while (true)
{
          cout << "Введите позицию елемента \"k\":"<<endl; 
    
          cin >> j;
          if (j >= 0 && j < n) break;
          cout << "Недопустимая позиция!" << endl;
}
Но проблема в том, что у вас в коде выход за пределы массива, при записи в arr[n]:
C++
1
2
3
4
5
for(int i=n;i>j;i--)
{
    arr[i]=arr[i-1];
}
arr[j]=k;
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.04.2013, 04:37
Привет! Вот еще темы с ответами:

Списки. Если встречается нечетный элемент, то перед ним и после него вставить новые элементы со значением 0 - C++
Ребята, простите за глупость, но объясните пожалуйста, как реализовать такое задание: Если встречается нечетный элемент, то перед ним и...

Дан массив. Удалить из него нули и после каждого числа, оканчивающегося на 5, вставить 1 - C++
Задание: Дан массив. Удалить из него нули и после каждого числа, оканчивающегося на 5, вставить 1. Нули из массива удалила, и теперь...

Вставить в массив элемент - C++
Вставить в массив число 10 после m-го элемента

«Сожмите» массив, выбросив из него каждый второй элемент - C++
Дан целочисленный массив с количеством элементов п. «Сожмите» массив, выбросив из него каждый второй элемент. Примечание. Дополнительный...


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

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

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