2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 увеличение длины массива на С++
Сообщение27.12.2012, 19:23 


27/12/12
2
Помогите пожалуйста добить задачу. необходимо добавить в начало массива 3 элемента с значением равным среднему арифметическому массива, предварительно удалив элементы имеющие минимальные значения. 3 целых элемента добавил, но они удаляют 3 элемента массива которые не нужно удалять. Необходимо увеличить длину массива, чтобы они вписывались. Пробовал, ничего не получается.
код:
#include <iostream>
#include <conio.h>

using namespace std;

int main()
{
srand( time( NULL ) );
int n,i,min,max,min_i,max_i;
float s=0;
cout<<" n=";
cin>>n;
int *a=new int[n];
cout<<" Array: ";
for(i=0;i<n;i++) { a[i]=rand()%10; cout<<a[i]<<" "; s+=(float)a[i]/n; }
min=max=a[0];
min_i=max_i=0;
for(i=1;i<n;i++)
{
if(a[i]<min) { min=a[i]; min_i=i; }
if(a[i]>max) { max=a[i]; max_i=i; }
}
cout<<"\n min="<<min;
cout<<"\n max="<<max;

cout<<"\n S_a="<<s;
cout<<"\n New array: ";
a[0] = a[1] = a[2] = (int) (s + 0.5);
for(i=0;i<n;i++) if(a[i]>min) cout<<a[i]<<" ";

delete []a;
getch();
return 0;
}

 Профиль  
                  
 
 Re: увеличение длины массива на С++
Сообщение27.12.2012, 22:47 
Заслуженный участник


09/09/10
3729
Это делается так: вы находите три минимальных элемента. Потом вы сдвигаете массив к концу, затирая эти три элемента. В результате в начале у вас оказывается три вакантных места.

Пример для удаления минимального элемента и вставки одного в начало:
Код:
const size_t n = 100;
int *arr = new int[n];

size_t min_i = 0;
int min_v = MAX_INT;
for (size_t i = 0; i < n; i++) {
  if(a[i] < min_v) { min_i = i; min_v = a[i]; }
}

for (size_t i = min_i; i > 0; i--) {
  a[i] = a[i-1];
}

a[0] = 42;

delete[] arr;

 Профиль  
                  
 
 Re: увеличение длины массива на С++
Сообщение27.12.2012, 22:54 


27/12/12
2
спасибо конечно но примеров я кучу видел, а так чтобы под эту программу подогнать не получается.
3 минимальных искать не надо, программа сама определит мин, их может быть 2 или 3 или 4 или вообще одно.

 Профиль  
                  
 
 Re: увеличение длины массива на С++
Сообщение28.12.2012, 00:38 
Заслуженный участник


09/09/10
3729
Нет же, вам надо найти индексы трех элементов, которые вы будете затирать. Три индекса.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group