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

Массивы. Включение нового элемента. - C++

Восстановить пароль Регистрация
 
BezymiE
0 / 0 / 0
Регистрация: 21.10.2010
Сообщений: 8
13.12.2010, 13:35     Массивы. Включение нового элемента. #1
Подскажите, пожалуйста, как исправить. Вставляет элемент, вправо сдвигает, но последний элемент затирает.
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
#include <iostream.h>
#include <conio.h>
#include<windows.h>
 
const BUFFLEN = 1000;
char BUFF[BUFFLEN];
int Start;
char* Rus(char* in)
{ int L = strlen(in);  char * B;
  if ( Start + L + 1 < BUFFLEN ) B = BUFF + Start;
  else {Start = 0; B = BUFF;}
  Start += L + 1;
 CharToOem(in, B);  return B;
}
//Вставка нового элемента в упорядоченный массив
 
void main()
{//Ввод произвольного упорядоченного массива
float myMas[5];
int max=5;
cout<<Rus("Введите 5 чисел упорядоченного массива: ")<<endl;
for (int i=0;i<max;i++)
{cout<<Rus("Введите числo ")<<i+1<<": ";
cin>>myMas[i];
}
 
float number;
int pos=0;
//Ввод включаемого в массив числа
cout<<Rus("Введите включаемое в массив число: ");
cin>>number;
//Поиск места включения элемента в массив
for (int i=0;i<max;i++)
    if (myMas[i]>number||myMas[i]==number)
        {pos=i;break;}
//Сдвиг вправо
max++;
for (int j=max-2;j>pos-1;j--)
    {myMas[j+1]=myMas[j];
    }
//Включение элемента
myMas[pos]=number;
//Вывод результата
cout<<Rus("Новый массив: ");
    for(int i=0;i<max;i++)
    {cout<<myMas[i]<<"\t";
    }
getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.12.2010, 13:35     Массивы. Включение нового элемента.
Посмотрите здесь:

Включение нового значения в упорядоченный список C++
Добавление в список нового элемента C++
Вставка нового элемента в ListCtrl C++
Создание нового элемента форма Windows forms C++
C++ Реализовать приложение, содержащее функции добавления нового элемента в массив и удаления элемента из массива. (Имитируется “резиновый” массив)
C++ Добавление нового элемента в VS Express 2013
C++ Вставка нового элемента в массив (дополнить код)
C++ Добавление нового элемента в список

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
RUSya82
 Аватар для RUSya82
236 / 114 / 3
Регистрация: 15.10.2010
Сообщений: 395
13.12.2010, 14:12     Массивы. Включение нового элемента. #2
Если Вы объявили float myMas[5]; - массив из 5 элементов, и полностью его заполнили, то Вы не можете вставить туда элемент без потерь данных. Вы конечно можете записать в myMas[5] что нибудь, но операция будет крайне некорректна и может повредить используемые данные.

Добавлено через 11 минут
C++
1
2
3
4
max++;//max становится равно 6
for (int j=max-2;j>pos-1;j--)//j = 4
        {myMas[j+1]=myMas[j];//в myMas[5] Вы записываете значение myMas[4]
        }
Увеличьте размер массива при объявлении
Yandex
Объявления
13.12.2010, 14:12     Массивы. Включение нового элемента.
Ответ Создать тему
Опции темы

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