Pomoże mi ktoś przerobić mój programik? W tym momencie mam pakowanie do jednego plecaka, a chciałabym aby pakował do tych "plecaków" co są w wektorze magazyn.

Myślę już kilka godzin i nie mam pojęcia, jak to zrobić :(

main.cpp

#include <cstdlib>
#include <iostream>
#include <vector>
#include <cstdio>
#include <fstream>
#include <cctype>
#include <string>

#define iter(a) for(int i = 0  ; i< a ; i++) //coby duzo nie pisac robimy skrocony zapis petli for


using namespace std;

/********* K L A S Y *********/

/* deklaracja klasy Pret zawierajacej zmienne ilosc, dlugosc i kolor */

class Pret
{
      public: //** :P
          int ilosc; //** ilosc pretow danego typu
          int dlugosc; //** dlugosc preta
          char kolor; //** kolor pretu
   
           Pret(char kolor, int dlugosc, int ilosc){};
           Pret(){};
          ~Pret(); //** destruktor
          
};

/* Deklaracja Metod */


int PoliczLinie() /* FUNKCJA LICZACA LINIE W PLIKU */
{
    /* Zmienne funkcyjne */
    
    ifstream _plik("order2.txt"); 
    std::string line; //** zczytywana linia
    int linie = 0; //** ilosc linii w pliku
    std::vector<string> v; //* wektor pomocniczy
    
    /* ***************** */
    
    while(getline(_plik, line)) 
    v.push_back(line); 
    for(int i = 0; i < v.size() - 1; i++) 
         linie++;
    return linie;
}


int PoliczLinieOut() /* FUNKCJA LICZACA LINIE W PLIKU */
{
    /* Zmienne funkcyjne */
    
    ifstream _plik("out2.txt"); 
    std::string line; //** zczytywana linia
    int linie = 0; //** ilosc linii w pliku
    std::vector<string> v; //* wektor pomocniczy
    
    /* ***************** */
    
    while(getline(_plik, line)) 
    v.push_back(line); 
    for(int i = 0; i < v.size() - 1; i++) 
         linie++;
    return linie;
}

int compare (const void * a, const void * b)
{
  return ( *(int*)b - *(int*)a ); //funkcja aby posortowac malejaco
}

int sumaW(vector<int>&);

/* ***************************** */




/* PROGRAM GŁOWNY CZYLI WSZYSTKO NA CHAMA */

int main()
{
    /* Zmienne pomocnicze */

    ifstream plikIn("order2.txt"); //** plik Zamowienia
    ifstream plikOut("out.txt"); //** plik Magazynu
    char Kolor;
    int Dlugosc;
    int Ilosc;
    
    /* ********************************* */
    
    /* Zmienne pretow z zamowienia i magazynu */
    
    Pret* magazyn = new Pret(); //** deklaracja magazynu
    Pret* zamowienie = new Pret(); //** deklaracja zamowienia
    
    
    
    /* ************************************** */


   
     /* WYKONYWANIE */
     
     int iloscLinii = 0, iloscLiniiOut = 0;
     iloscLinii = PoliczLinie(); // liczenie linii w pliku order2.txt
     iloscLiniiOut = PoliczLinieOut(); // liczenie linii w pliku out2.txt
     //cout << iloscLinii << endl;
 
     //* Zrzucanie danych z pliku do wektora Magazynu i Zamowienia *//
     int pom = 0;
     int temp = 0;
     
     //int * prety = new int;
     std::vector<int> prety;
     std::vector<int> pretyMagazyn;
     
     int sumaIlosc = 0;
     
     
     for (int i = 0; i < iloscLinii; i++)  /* Zamowienie */   
     {
         plikIn >> zamowienie->kolor >> zamowienie->dlugosc >> zamowienie->ilosc;
        
         Kolor = zamowienie->kolor;
         Dlugosc = zamowienie->dlugosc;
         Ilosc = zamowienie->ilosc;
         
         //cout << "Ilosc: " << Ilosc << endl; 
         //cout << zamowienie->kolor << " " << zamowienie->dlugosc << "" << zamowienie->ilosc << endl;
         for(int j = 0; j < Ilosc; j++)
         { 
             //cout << "POMOCNIK: " << pom << endl;
             //prety[pom] = Dlugosc;
             prety.push_back(Dlugosc);
             //cout << "Dlugosc: " << prety[pom] << endl;
             pom += 1;
             //sumaIlosc += Ilosc;
         
         }
         
              
      }      
      
     for (int i = 0; i < iloscLiniiOut; i++) /* Zapelnienie magazynu */  
     {
         plikOut >> magazyn->kolor >> magazyn->dlugosc >> magazyn->ilosc;
        
         Kolor = magazyn->kolor;
         Dlugosc = magazyn->dlugosc;
         Ilosc = magazyn->ilosc;
         
         //cout << "Ilosc: " << Ilosc << endl; 
         //cout << magazyn->kolor << " " << magazyn->dlugosc << "" << magazyn->ilosc << endl;
         for(int j = 0; j < Ilosc; j++)
         { 
             //cout << "POMOCNIK: " << temp << endl;
             //pretyMagazyn[temp] = Dlugosc;
             pretyMagazyn.push_back(Dlugosc);
             cout << "Dlugosc: " << pretyMagazyn[temp] << endl;
             temp += 1;
             //sumaIlosc += Ilosc;
         
         }
   
      }
      
      
     
    int k,suma;
    suma = 0;

    k = prety.size();

   
    /*int * przedmioty = new int[k];

    iter(k)
    {
    cin>>przedmioty[i];
    }*/

    int waga;

    cout << "Podaj dlugosc podstawowa preta: ";
    cin >> waga;

     if(waga <= 0)
     {
      cout<<"blad danych...";
      cin.ignore();
      getchar();
      exit(0);
     }

    

    vector<int> mozliwosc, optymalny; //mozliwosc przechowuje kazda brana pod uwage mozliwosc
                                      //optymalny przechowuje najwieksza mozliwosc mniejsza od szukanej

     sort(prety.begin(), prety.end());

     for(int j = k-1 ; j>= 0; j-- )
     {

      mozliwosc.clear();
      suma = 0;

      for(int i = j; i >= 0; i--)
      {
       if(prety[i] == waga)
       {
        mozliwosc.push_back(prety[i]);
       }
       if(prety[i] > waga) continue;

       if(suma + prety[i] > waga)
       continue;

       suma += prety[i];
       mozliwosc.push_back(prety[i]);
      }

       if(suma == waga)
        break;

        if(sumaW(optymalny) < sumaW(mozliwosc))
        {
         optymalny.clear();

          iter(mozliwosc.size())
           optymalny.push_back(mozliwosc[i]); //kopiowanie wektora
        }
     }

     if(suma != waga)
     {
      cout<<"Nie ma mozliwosci takiego spakowania elementow "<<endl;
      cout<<"Aby zapakowane elementy mialy najwieksza mase naleze spakowac elementy: ";
       iter(optymalny.size())
        cout<<optymalny[i]<<" ";
     } else
       {
        cout<<"Istnieje taka  mozliwosc, nalezy spakowac elementy o masach: ";
         iter(mozliwosc.size())
         {
          cout<<mozliwosc[i]<<" ";
         }
       }

    cin.ignore();
    system ("pause");
    return 0;
}


int sumaW(vector<int>& v)
{
 int suma = 0;
 iter(v.size())
 {
  suma+=v[i];
 }

 return suma; 
    system("pause");
}



order2.txt

C 1 2
C 3 6
C 6 7
C 8 9
C 10 2
C 16 5
C 19 1


out2.txt

C 10 100
C 15 111
C 12 100
C 20 120
C 7 110
C 17 60
C 5 300