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

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

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

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

13.12.2010, 13:35. Просмотров 618. Ответов 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++
Проблема с вставкой нового элемента в ListCtrl LVITEM newItem; newItem.mask=LVIF_TEXT|LVIF_STATE; newItem.iItem=0;...

Массивы (найти сумму 1го 6го 11го элемента ,потом 2го 7го 12го элемента и так далее) - C++
Дан рандомный массив 15 элементов.нужно найти сумму 1го 6го 11го элемента ,потом 2го 7го 12го элемента и так далее.. как это...

Добавление нового элемента в VS Express 2013 - C++
Здравствуйте. Никак не могу добавить .cpp в проект, я хочу создать консольное приложение...

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

C++ Добавление нового элемента в массив объектов - C++
Ошибка заключается в том что, после добавления нового элемента в массив groupArray через функцию Add, если попытаться вывести их происходит...

Создание нового элемента форма Windows forms - C++
Здравствуйте , у меня проблема связана с MVS 2008, при создании нового элемента формы Windows forms при построении вылазит ошибка ...

Односвязный список с добавлением нового элемента в конец. - C++
Здраствуйте. Мне нужна ваша помощь. Есть программа которая строит список из k элементов выводит его на экран затем удаляет элемент N из...

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


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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     Массивы. Включение нового элемента.
Ответ Создать тему
Опции темы

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