R
razval
доброго времени суток.
постановка задачи:
с клавиатуры вводиться массив элементов, каждый элемент имеет свой вес, требуется разбить этот масcив на двое, так что бы суммы элементов новых массивов были наиближайщие.
пример:
ввод:
4, 2, 11, 9
вывод:
общий вес: 26
первый массив: 11, 2
вес: 13
второй массив: 9, 4
вес: 13
не могу разобраться с индексацией в массивах(
листинг на cpp
постановка задачи:
с клавиатуры вводиться массив элементов, каждый элемент имеет свой вес, требуется разбить этот масcив на двое, так что бы суммы элементов новых массивов были наиближайщие.
пример:
ввод:
4, 2, 11, 9
вывод:
общий вес: 26
первый массив: 11, 2
вес: 13
второй массив: 9, 4
вес: 13
не могу разобраться с индексацией в массивах(
листинг на cpp
C++:
#include <iostream>
using namespace std;
const int u=5, y=5;
main()
{
int n; //количество вещей
int j;//вес вещей
int k[j]; //массив для хранения вещей
int mas1[u]={0,0,0,0,0};//рюкзак 1
int mas2[y]={0,0,0,0,0};//рюкзак 2
int i=0; //счетчик
int sum=0,sum1=0,sum2=0; //общий вес
cout<<"введите количество вещей: ";
cin>>n;
while(i<n)
{
++i;
cout<<"введите вес вещи № "<<i<<": ";
cin>>k[i];
sum+=k[i];
};
cout<<"общий вес: "<<sum<<endl;
//сортировка
for(i=n; i>=1; --i)
for(j=1; j<i; ++j)
{
if(k[j]<k[j+1])
{
int m=k[j];
k[j]=k[j+1];
k[j+1]=m;
}
}
//вывод сортировки
/* for(i=1; i<=n; ++i)
{
cout<<k[i]<<" ";
} */
/*тут нужно что-то сделать с индексацией,
чтобы он перебирал элементы массива k
и по весу раскидывал в два массива ???*/
for(int i=1; i<=n; ++i)//просмотр всех вещей
{
if (sum1>=sum2)
{
for(int l=1; l<5; ++l)
{
mas1[0]=k[1];
}
for(int i=0; i<5; ++i)
{
sum1+=mas1[i];
}
}
else
{
mas2[0]=k[2];
for(int i=0; i<5; ++i)
{
sum2+=mas2[i];
}
}
}
//вывод массивом и их сумм
cout<<"первый рюкзак: ";
for(int i=0; i<5; ++i)
{
cout<<mas1[i]<<" ";
}
cout<<endl;
cout<<"вес первого рюкзака: "<<sum1<<endl;
cout<<"второй рюкзак: ";
for(int i=0; i<5; ++i)
{
cout<<mas2[i]<<" ";
}
cout<<endl;
cout<<"вес второго рюкзака: "<<sum2;
getchar();
getchar();
}