Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Цветик
4 / 2 / 2
Регистрация: 13.10.2010
Сообщений: 42
#1

Удаление из массива - C++

08.11.2010, 12:22. Просмотров 409. Ответов 4
Метки нет (Все метки)

Удалить из массива максимальный элемент. Остальные элементы сдвинуть влево (максимальные элемент может встречаться несколько раз)

вот к чему я пришла и то не уверена в правильности

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
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
int main (void)
{
int i,n;
int *mas;
int max=0;
clrscr();
cout<<"Vvedite chislo elementov v massive";
cin>>n;
mas=new int[n];
randomize();
for(i=0;i<n;i++)
{
*(mas+i)=rand()%10;
 
if(*(mas+i) >max)
{
max=*(mas+i);
*(mas+i-1)=*(mas+1);
}
 
}
 
cout<<"mas=";
for(i=0; i<n; i++)
cout << *(mas+i);
cout<<endl<<"max="<<max;
delete[]mas;
getch();
return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.11.2010, 12:22
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Удаление из массива (C++):

Удаление из одного массива элементов второго массива и запись результата в третий
Есть массив masA (длина lenA), есть массив masB (длина lenB). Необходимо из...

Удалить из массива A[N] вс отрицательные элементы.Удаление отрицательных элементов массива оформить в виде функции
Что исправить? #include &lt;stdio.h&gt; #define N 10 int udalenie(int A,int k...

удаление элементов массива, совпадающих с элементами другого массива
Здравствуйте, помогите найти ошибку в коде; суть задачи такая: удалить элементы...

Удаление элементов массива без буферного массива
Требуется удалить элементы из массива, при это длинна массива уменьшится, ВАЖНО...

Удаление элемента из массива и сдвиг массива
Нужно удалить максимальный элемент массива и сделать сдвиг массива на одну...

Удаление четных элементов массива,больших среднего арифметического всех элементов массива
Доброго времени суток! Помогите пожалуйста) Вот задание:Из массива удалить...

4
taras atavin
4204 / 1763 / 212
Регистрация: 24.11.2009
Сообщений: 27,565
08.11.2010, 13:11 #2
Поиск максимумов:
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
void Maxs(int *mas, int n, int &m, int *&Indexes)
{
 int *Strat=a+n-1; // Осюда будем начинать перебор
 int *p;
 int *Max; // Указатель на максимум
 int *i;
 for (p=Start, Max=p; p>=a; --p) // Ищем максимум
 {
   if (*Max<*p)
  {
   Max=p;
  }
 }
 for (p=Start, m=0; p>=a; --p) // Считаем максимумы
 {
  if (*p=*Max)
  {
   ++m;
  }
 }
 Indexes=new int [m];
 if (Indexes==NULL)
 {
  m=0;
  return;
 }
 for (p=Start, i=Indexes+m-1; p>=a; --p) // Сохраняем индексы максимумов
 {
  if (*p==*Max)
  {
   *z=*p;
   --z;
  }
 }
}
void Delete (int *mas, int &n, int &m, int *&Indexes)
{
 int *i,*p, *End=mas+n-1;
 if (m==0)
 {
  retuern;
 }
 for (i=Indexes+m-1; i=Indexes; --i) // Перебираем максимумы от последнего
 {
  for (p=i+1; p<=End; ++p) // Перебираем элементы от следующего после удаляемого до последнего
  {
   *(p-1)=*p; // Сдвигаем элементы влево на один элемент.
  }
 }
 --n; // Мы только что сдвинули элементы на один влево и затёрли один удаляемый элемент. Их осталось на один меньше
 mas=(int *)reaaloc((void *) mas, sizeof(int)*n); // Здесь реально меняется размер массива
}
int main (void)
{
 int i,n,m,*Indexes,max;
 int *mas;
 cout<<"Vvedite chislo elementov v massive";
 cin>>n;
 mas=new int[n];
 if (mas==NULL)
 {
  return 1;
 }
 randomize();
 for(i=0;i<n;i++)
 {
  *(mas+i)=rand()%10; 
 }
 Maxs(mas,n,m,Indexes); // Ищем максимумы
 max=mas[Indexes[0]];
 Delete(mas,n,m,Indexes); // Удаляем максимумы
 cout<<"mas=";
 for(i=0; i<n; i++)
 {
  cout << *(mas+i);
 }
 cout<<endl<<"max="<<max;
 delete[]mas;
 if (Indexes)
 {
  delete [] Indexes;
 }
 return 0;
}
0
Цветик
4 / 2 / 2
Регистрация: 13.10.2010
Сообщений: 42
08.11.2010, 13:19  [ТС] #3
Цитата Сообщение от taras atavin Посмотреть сообщение
Поиск максимумов:
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
void Maxs(int *mas, int n, int &m, int *&Indexes)
{
 int *Strat=a+n-1; // Осюда будем начинать перебор
 int *p;
 int *Max; // Указатель на максимум
 int *i;
 for (p=Start, Max=p; p>=a; --p) // Ищем максимум
 {
   if (*Max<*p)
  {
   Max=p;
  }
 }
 for (p=Start, m=0; p>=a; --p) // Считаем максимумы
 {
  if (*p=*Max)
  {
   ++m;
  }
 }
 Indexes=new int [m];
 if (Indexes==NULL)
 {
  m=0;
  return;
 }
 for (p=Start, i=Indexes+m-1; p>=a; --p) // Сохраняем индексы максимумов
 {
  if (*p==*Max)
  {
   *z=*p;
   --z;
  }
 }
}
void Delete (int *mas, int &n, int &m, int *&Indexes)
{
 int *i,*p, *End=mas+n-1;
 if (m==0)
 {
  retuern;
 }
 for (i=Indexes+m-1; i=Indexes; --i) // Перебираем максимумы от последнего
 {
  for (p=i+1; p<=End; ++p) // Перебираем элементы от следующего после удаляемого до последнего
  {
   *(p-1)=*p; // Сдвигаем элементы влево на один элемент.
  }
 }
 --n; // Мы только что сдвинули элементы на один влево и затёрли один удаляемый элемент. Их осталось на один меньше
 mas=(int *)reaaloc((void *) mas, sizeof(int)*n); // Здесь реально меняется размер массива
}
int main (void)
{
 int i,n,m,*Indexes,max;
 int *mas;
 cout<<"Vvedite chislo elementov v massive";
 cin>>n;
 mas=new int[n];
 if (mas==NULL)
 {
  return 1;
 }
 randomize();
 for(i=0;i<n;i++)
 {
  *(mas+i)=rand()%10; 
 }
 Maxs(mas,n,m,Indexes); // Ищем максимумы
 max=mas[Indexes[0]];
 Delete(mas,n,m,Indexes); // Удаляем максимумы
 cout<<"mas=";
 for(i=0; i<n; i++)
 {
  cout << *(mas+i);
 }
 cout<<endl<<"max="<<max;
 delete[]mas;
 if (Indexes)
 {
  delete [] Indexes;
 }
 return 0;
}
Спасибки но он там выводит кучу ошибок=(
0
taras atavin
4204 / 1763 / 212
Регистрация: 24.11.2009
Сообщений: 27,565
08.11.2010, 13:23 #4
Какие ошибки выводит? Я дал сырой код без отладки с машины без хороших сей. Давай текст сообщений и будем исправлять.
0
Цветик
4 / 2 / 2
Регистрация: 13.10.2010
Сообщений: 42
08.11.2010, 13:28  [ТС] #5
Цитата Сообщение от taras atavin Посмотреть сообщение
Какие ошибки выводит? Я дал сырой код без отладки с машины без хороших сей. Давай текст сообщений и будем исправлять.
Для начала он не может идентифицировать a, потом ругается на int *Strat=a+n-1 (cannot convert 'int' to 'int *')
0
08.11.2010, 13:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.11.2010, 13:28
Привет! Вот еще темы с решениями:

Удаление из массива
Ребят помогите с задачкой. Удалить из массива элемент, расположенный перед...

Удаление из массива
Добрый день.Программа выполняет три функции, выводит массив, добавляет значения...

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

Удаление динамического массива
доброго времени суток. написал программу, в которой создается динамический...


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

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

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