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

проблема с присвоением - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ hex to dec http://www.cyberforum.ru/cpp-beginners/thread386966.html
Есть такой глупый вопрос: как перевести из шестнадцатеричной в десятичную систему? Т.е. что бы получилось примерно следующее: char tmp_lng = {0x26, 0x27}; int lng = hexToDec(tmp_lng); // lng =...
C++ Работа с LPT Всем привет !! У меня такая проблимка мне надо написать программу которая будет выщитывать двоичный код затем обращаться к лпт порту и подавать сигнал либо не подавать на отдельные выводы к... http://www.cyberforum.ru/cpp-beginners/thread386959.html
C++ Задача со стеком
Помогите, пожалуйста, со стеком. Нужно разработать процедуру, которая будет формировать стек Stack. В этот стек должны быть включены по одному разу элементы, которые входят в Stack1, но не входят в...
Перегрузка определителя. что есть что? C++
Перегрузка определителя. не могу прогу вообще понять. я даже не понимаю, что переменные значат. объясните пожалуйста. mass mass::operator<(mass z1) { long double kst, y;// хоть убейте, не...
C++ Считывания символьного массив из файла. Каждое слово в отдельную ячейку! http://www.cyberforum.ru/cpp-beginners/thread386935.html
Здравствуйте! Нужна помощь! Возникла такая проблема! Есть некий *.txt файл в котором записанные некие слова, так вот нужно считать каждое слово в отдельную ячейку одномерного массива! ...
C++ error LNK2019: unresolved external symbol __imp__ В чем проблема можете подсказать. 1>------ Build started: Project: Opgl, Configuration: Debug Win32 ------ 1>Compiling... 1>op.cpp 1>c:\program files\microsoft visual studio... подробнее

Показать сообщение отдельно
2008kedr2008
3 / 3 / 0
Регистрация: 16.11.2010
Сообщений: 165

проблема с присвоением - C++

19.11.2011, 07:34. Просмотров 321. Ответов 1
Метки (Все метки)

Возникла такая проблема, нужно к элементу вектора прибавить число, но у меня проблема с перегрузкой оператора, подскажите как лучше это сделать!!!
Условие!
Имеется N камней веса А1,А2,...,АN.
Необходимо разбить их на две кучи таким образом, чтобы веса куч отличались не более чем в 2 раза. Если этого сделать нельзя, то указать это.
Main.cpp
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
#include <cstdlib>
#include <iostream>
#include "method.cpp"
#include <fstream>
#include <iomanip>
using namespace std;
 
int main(int argc, char *argv[])
{
      
    ifstream input_file("file.txt"); // îòêðûâГ*ГҐГ¬ ГґГ*éë Г± Г¤Г*Г*Г*ûìè
    vector<selection<int> > stones; // Âåêòîð ýëåìåГ*òîâ
    selection<int> e; //  Г±ГІГ°ГіГЄГІГіГ°Г*
    while(!input_file.eof()) // ïåðåìåùГ*ГҐГ¬ ГґГ*éëû Гў âåêòîð
    {
      input_file>>e.x;
      stones.push_back(e);
    }
    create_lot(stones);
    arrange_lot(stones);
    arrange_bags(stones);
    for(int i=0; i<stones.size(); i++) // Âûâîä
      cout<<setw(3)<<stones.at(i).x<<endl;
    input_file.close();
  
    system("PAUSE");
    return EXIT_SUCCESS;
}
struct.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#ifndef SELECTION
#define SELECTION
 
template<class T> 
struct selection{
  T x; // Êëþ÷
    bool operator < (selection<T> e) // ÔóГ*êöèÿ Г±Г°Г*ГўГ*ГҐГ*ГЁГї
  {
     if(x < e.x)
        return true;
      else
        return false;
    
  }
int selection::operator+(selection<T> e)
{   return selection(x+e.x);
                    }
  
};
#endif
method.cpp
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
#include "struct.h"
#include <vector>
#include <iostream>
using std::vector;
using std::cout;
using std::endl;
 
 
template<class T> 
void create_lot(vector<T> &stones) //ñîçäГ*Г*ГЁГҐ Г¬Г*Г±Г±ГЁГўГ* âåñîâ ГЄГ*Г¬Г*ГҐГ©
{
        cout<<stones.size()<<" Number of stones. They weigh:\n";
        for(int k=0;k < stones.size();k++);
}
 
template<class T> 
void arrange_lot(vector<T> &stones) //ñîðòèðîâêГ* ГЇГ® óáûâГ*Г*ГЁГѕ
{
int i,j;
T temp;
 
for(i=0;i < stones.size()-1;i++)
        for(j=i+1; j < stones.size() ;j++)    
                if(stones.at(i) < stones.at(j))
                    {   temp = stones.at(i);
                        stones.at(i) = stones.at(j);
                        stones.at(j) = temp;  }
                        
}
template<class T> 
void arrange_bags(vector<T> &stones) //ñîçäГ*ГҐГІ äâå ГЄГіГ·ГЁ áîëåå áëèçêèå ГЇГ® Г°Г*çìåðó
{
int k1, k2, i, sum1=0, sum2=0;
 
T bag1[stones.size()-1],bag2[stones.size()-1];
for(i=0;i<stones.size();i++)
{
        if(sum1<=sum2)
        {       bag1[k1]=stones.at(i);
                sum1+=stones.at(i);//вот тут вот ругается
                k1++;}
        else
        {       bag2[k2]=stones.at(i);
                sum2+=stones.at(i);// и вот тут
                k2++;}
}
if(1.0*sum1/sum2 <=2)
{       cout<<"\n heap 1: ";
        for(i=0;i<k1;i++)
                //cout<<bag1[i]<<"  ";
        cout<<"\n weigh 1: "<<sum1<<endl;
        cout<<"\n heap2: ";
        for(i=0;i<k2;i++)
                //cout<<bag2[i]<<"  ";
        cout<<"\n weigh 2: "<<sum2<<endl;
}
else cout<<"more 2\n";
}
function.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
#ifndef VIBOR
#define VIBOR
 
#include <vector>
 
using std::vector;
 
template<class T> void create_lot(vector<T>&);
template<class T> void arrange_lot(vector<T>&);
void arrange_bags(vector<T> &)
 
#endif
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru