Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 09.01.2009, 13:42   #1
beregok
Пользователь
 
Регистрация: 09.01.2009
Сообщений: 13
По умолчанию Удаление элемента массива со сдвигом последующих

Всем добрый день
Задача
Дан массив чисел, необходимо удалить из данного массива элементы, чтобы массив стал упорядочен по-возрастанию.
Допустим задан следующий массив
1 2 5 6 3 4 4 5 9
по условию задачи в массиве должно остаться
1 2 5 6


Модератор: а правила для кого? Или вы читать не умеете?

Последний раз редактировалось MaTBeu; 09.01.2009 в 17:10.
beregok вне форума
Старый 09.01.2009, 14:01   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Например, так:
Код:
#include <iostream>
#include <conio.h>

using namespace std;

int main(){
int N = 9;
int mass[N],i,j;
cout<<"Enter elements:"<<endl;
for(i=0;i<N;i++)
 {
  cout<<"mass["<<i+1<<"]= ";
  cin>>mass[i]; cout<<endl;
    }
for(i=1;i<N;i++)
 {
  if(mass[i]<mass[i-1])
   {
    for(j=i;j<N-1;j++)
     mass[j]=mass[j+1];
    N--; i--;
   }
 }
//-------
cout<<"Complete!"<<endl;
for(i=0;i<N;i++)
 cout<<mass[i]<<"  ";
getch();
return 0;
}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума
Старый 09.01.2009, 14:16   #3
beregok
Пользователь
 
Регистрация: 09.01.2009
Сообщений: 13
По умолчанию

а как размер массива задан через переменную?у меня ругается с++
beregok вне форума
Старый 09.01.2009, 14:19   #4
beregok
Пользователь
 
Регистрация: 09.01.2009
Сообщений: 13
По умолчанию

я задала через константу размерность массива, а как после сдвига затем можно изменить размерность получившегося массива на количество удаленных элементов?
beregok вне форума
Старый 09.01.2009, 14:25   #5
beregok
Пользователь
 
Регистрация: 09.01.2009
Сообщений: 13
По умолчанию

получилось
Код:
#include <iostream>
#include <conio.h>

using namespace std;

int main()
{
	const int N=9 ;
	int mass[N],i,j;
	int m=N;
cout<<"Enter elements:"<<endl;
for(i=0;i<N;i++)
 {
  cout<<"mass["<<i+1<<"]= ";
  cin>>mass[i]; cout<<endl;
    }
for(i=1;i<N;i++)
 {
  if(mass[i]<mass[i-1])
   {
    for(j=i;j<N-1;j++)
     mass[j]=mass[j+1];
    i--;m--;
   }
 }
//-------
cout<<"Complete!"<<endl;
for(i=0;i<m;i++)
 cout<<mass[i]<<"  ";
getch();
return 0;
}
Модератор: тег CODE

Последний раз редактировалось MaTBeu; 09.01.2009 в 17:09.
beregok вне форума
Старый 09.01.2009, 14:26   #6
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

beregok У меня размер массива задан переменной.
Более правильным в таком случае будет использовать динамический массив, но я решил не осложнять.
Если задавать исходный размер константой, то нужно определить переменную, которая будет хранить текущий размер массива.
Цитата:
у меня ругается с++
На какую строчку ругается? Что за среда/компилятор?
----
upd: Опередили меня ))
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума
Старый 09.01.2009, 14:30   #7
beregok
Пользователь
 
Регистрация: 09.01.2009
Сообщений: 13
По умолчанию

Sazary посмотри пожалуйста выше так работает
только всё равно фигня с размерностью ведь всё равно массив состоит из 9 значений
а как с помощью динамического массива можно это реализовать?
beregok вне форума
Старый 09.01.2009, 14:36   #8
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

beregok Если нужно, чтобы конечный массив был другой размерности, то, видимо, придется создавать еще один.

Динамический массив создается так:
Код:
int *mas;
mas = new int[N];
Когда он больше не нужен, память нужно освободить:
Код:
delete mas;
В C++ изменять размер динамического массива, насколько я знаю, нельзя.
В C это делается через realloc.
ИМХО нужно создавать второй массив.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума
Старый 09.01.2009, 14:40   #9
beregok
Пользователь
 
Регистрация: 09.01.2009
Сообщений: 13
По умолчанию

спасибо тебе большое Sazary!!1
beregok вне форума
Старый 09.01.2009, 14:42   #10
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Цитата:
Сообщение от Sazary Посмотреть сообщение
Динамический массив создается так:
Код:
int *mas;
mas = new int[N];
Когда он больше не нужен, память нужно освободить:
Код:
delete mas;
если new со скобками [], то и delete должен быть с ними, иначе будет непредсказуемое поведение
pu4koff вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск минимального (максимального) элемента массива Radamant Помощь студентам 10 24.12.2008 17:44
Удаление элемента динамического массива Dogmat Помощь студентам 6 13.07.2008 14:33
Удаление элемента массива chiffa Общие вопросы Delphi 1 03.01.2008 19:24
Поиск позиции элемента несортированного массива gdneon Microsoft Office Excel 4 16.04.2007 08:08