2014 dxdy logo

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

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




 
 увеличение длины массива на С++
Сообщение27.12.2012, 19:23 
Помогите пожалуйста добить задачу. необходимо добавить в начало массива 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 
Это делается так: вы находите три минимальных элемента. Потом вы сдвигаете массив к концу, затирая эти три элемента. В результате в начале у вас оказывается три вакантных места.

Пример для удаления минимального элемента и вставки одного в начало:
Код:
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 
спасибо конечно но примеров я кучу видел, а так чтобы под эту программу подогнать не получается.
3 минимальных искать не надо, программа сама определит мин, их может быть 2 или 3 или 4 или вообще одно.

 
 
 
 Re: увеличение длины массива на С++
Сообщение28.12.2012, 00:38 
Нет же, вам надо найти индексы трех элементов, которые вы будете затирать. Три индекса.

 
 
 [ Сообщений: 4 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group