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

Удаление элементов массива без буферного массива - C++

Восстановить пароль Регистрация
 
restarbit
0 / 0 / 0
Регистрация: 27.09.2013
Сообщений: 33
17.10.2013, 18:50     Удаление элементов массива без буферного массива #1
Требуется удалить элементы из массива, при это длинна массива уменьшится, ВАЖНО буферный массив не использовать!
к примеру массив 12 23 45 0 0 0 76 5 4 32 76 0 0 0 0 0 9 8, удалить самую длинную цепочку нулей. Вот код который ищет самую длинную цепочку нулей, что нужно добавить чтобы удаляло ее?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void Vect::func()
{int i=0,count=0,maxlen=0,kk=0,pos=0;
for (i=0;i<=dim;i++)
    {if (v[i]==0)
    {count=count+1;
        kk=i;
        if (count>maxlen)
            {maxlen=count;
            
            pos=kk-(count-1);   
            }
    }
        else
            count=0;
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.10.2013, 18:50     Удаление элементов массива без буферного массива
Посмотрите здесь:

C++ Удаление элементов массива
Удаление элементов массива C++
C++ Удаление элементов из массива
C++ Удаление элементов массива
C++ Удаление элементов массива!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Кудаив
328 / 405 / 24
Регистрация: 27.05.2012
Сообщений: 1,162
Завершенные тесты: 2
17.10.2013, 19:01     Удаление элементов массива без буферного массива #2
перезапиши 98 на место первых двух нулей в последовательности нулей и измени размер массива
restarbit
0 / 0 / 0
Регистрация: 27.09.2013
Сообщений: 33
17.10.2013, 19:03  [ТС]     Удаление элементов массива без буферного массива #3
Цитата Сообщение от Кудаив Посмотреть сообщение
перезапиши 98 на место первых двух нулей в последовательности нулей и измени размер массива
а если человек захочет изменить элементы массива придется менять код! наверное такой вариант не подходит, или я ошибаюсь и код менять не придется в случае изменения длинны цепочки нулей и изменения ее позиции?
Кудаив
328 / 405 / 24
Регистрация: 27.05.2012
Сообщений: 1,162
Завершенные тесты: 2
17.10.2013, 19:11     Удаление элементов массива без буферного массива #4
а откуда ты вообще берешь массив?
restarbit
0 / 0 / 0
Регистрация: 27.09.2013
Сообщений: 33
17.10.2013, 19:31  [ТС]     Удаление элементов массива без буферного массива #5
Цитата Сообщение от Кудаив Посмотреть сообщение
а откуда ты вообще берешь массив?
из файла
но если я весь код сюда выложу, то это очень много будет
Кудаив
328 / 405 / 24
Регистрация: 27.05.2012
Сообщений: 1,162
Завершенные тесты: 2
17.10.2013, 19:35     Удаление элементов массива без буферного массива #6
Цитата Сообщение от restarbit Посмотреть сообщение
а если человек захочет изменить элементы массива
он будет менять в файле, нет?
daslex
1084 / 494 / 101
Регистрация: 02.08.2011
Сообщений: 2,408
17.10.2013, 20:14     Удаление элементов массива без буферного массива #7
дел. не в тему.
restarbit
0 / 0 / 0
Регистрация: 27.09.2013
Сообщений: 33
17.10.2013, 20:32  [ТС]     Удаление элементов массива без буферного массива #8
Цитата Сообщение от Кудаив Посмотреть сообщение
он будет менять в файле, нет?
окей ладно, просто как удалить к примеру все нули имеющиеся в массиве? буферный массив не использовать
daslex
1084 / 494 / 101
Регистрация: 02.08.2011
Сообщений: 2,408
17.10.2013, 20:43     Удаление элементов массива без буферного массива #9
Пример для обычного массива

PHP
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
#include <iostream>
 
 
 
int main()
{
 
  int M[]={12, 23, 45, 0, 0, 0, 0, 76, 5, 4, 32, 76, 0 , 0, 0,0,0,0, 9, 8,0}; //неважно откуда
 
 
 int len=1;
 int maxlen=0;
 int pos = 0;
 int N=sizeof(M)/sizeof(M[0]);
 int t=0;
 
 for (int i=0;i<N;i++)
 {
  if (M[i]==M[i+1])
  {
   len++;
   if (len>maxlen)
   {
       pos=i;
       maxlen=len;
   }
  }
  else len=1;
 }
 
 
 for (int i=pos+1-maxlen+1;i<N;i++) M[i]=M[i+maxlen];
  for (int i=0;i<N-maxlen;i++) std::cout<<M[i]<<" ";
 
 
 
  return 0;
 
}
restarbit
0 / 0 / 0
Регистрация: 27.09.2013
Сообщений: 33
17.10.2013, 20:51  [ТС]     Удаление элементов массива без буферного массива #10
Цитата Сообщение от daslex Посмотреть сообщение
Пример для обычного массива

PHP
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
#include <iostream>
 
 
 
int main()
{
 
  int M[]={12, 23, 45, 0, 0, 0, 0, 76, 5, 4, 32, 76, 0 , 0, 0,0,0,0, 9, 8,0}; //неважно откуда
 
 
 int len=1;
 int maxlen=0;
 int pos = 0;
 int N=sizeof(M)/sizeof(M[0]);
 int t=0;
 
 for (int i=0;i<N;i++)
 {
  if (M[i]==M[i+1])
  {
   len++;
   if (len>maxlen)
   {
       pos=i;
       maxlen=len;
   }
  }
  else len=1;
 }
 
 
 for (int i=pos+1-maxlen+1;i<N;i++) M[i]=M[i+maxlen];
  for (int i=0;i<N-maxlen;i++) std::cout<<M[i]<<" ";
 
 
 
  return 0;
 
}
похожее, осталось только поменять условие одно и ок.
А как просто удалить элемент в массиве без буферного массива?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.10.2013, 21:06     Удаление элементов массива без буферного массива
Еще ссылки по теме:

C++ Удаление элементов массива
Удаление элементов из массива C++
Удаление элементов массива C++

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

Или воспользуйтесь поиском по форуму:
daslex
1084 / 494 / 101
Регистрация: 02.08.2011
Сообщений: 2,408
17.10.2013, 21:06     Удаление элементов массива без буферного массива #11
Если вы про 1 элемент, а не целый набор (как в моем примере), то
C++
1
2
3
4
5
6
7
8
int M[]={1,2,3,4,5,6,7,8}; //неважно откуда
 
  int N=sizeof(M)/sizeof(M[0]); //кол-во элементов в массиве
  int k=5; //удаляемый элемент
 
 
  for (int i=k-1;i<N;i++)   M[i]=M[i+1];  //Сдвигаете часть массива влево
  for (int i=0;i<N-1;i++) std::cout<<M[i]<<"\n";
и так как это для обычного массива, то сами элементы не удаляются, хотя видимость создается.
Yandex
Объявления
17.10.2013, 21:06     Удаление элементов массива без буферного массива
Ответ Создать тему
Опции темы

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