示例#1
0
Kontener* Reader::ReadMap(std::string path)
{
	std::ifstream plik(path.c_str());
	if(!plik)
		throw FileOpenError(path);

	Kontener* wynik=NULL;
	while(!plik.eof())
	{
		char tmp[255];
		char trash;
		plik.getline(tmp,255);
		if(tmp[0]=='#')
			continue;
		if(tmp[0]=='c')
		{
			if(wynik)
				throw FileSyntaxError(path,tmp,"Double definition cities number");
			int size;
			sscanf(tmp,"%c %d",&trash,&size);
			wynik=new Kontener(size);
		}
		else if(tmp[0]=='r')
		{
			if(!wynik)
				throw FileSyntaxError(path,tmp,"Missing cities number definition");
			int src,dst,len;
			sscanf(tmp,"%c %d %d %d",&trash,&src,&dst,&len);
			wynik->AddRoad(Droga(src-1,dst-1,len));
		};
//		std::cout<<tmp<<std::endl;
	};
	return wynik;
};
示例#2
0
void Frame::FrameClickEvents(wxCommandEvent& event)
{
    switch(event.GetId()){
        case BUTTON_CHANGE_IP:{
			guiChangeIP(this, event.GetId());
			break;
        }
        case wxID_EXIT:{
            trayIcon->RemoveIcon();
            Destroy();
            break;
        }
        case BUTTON_ADD_TO_TRAY:{
			Iconize(true);
			Show(false);
			break;
        }
        case MENU_INFO:{
			sendDialog(wxT("This program change IP tibia client in order to connect to Open Tibia Server.\nLicense: GNU GPL\nProgrammer: Miziak.\nAdress Finder: Virtelio.\nWrote in wxWidgets library."), wxOK | wxICON_INFORMATION);
			break;
        }
        case MENU_CLEAR_HISTORY:{
            ofstream plik(string("./history").c_str()); 
            plik<<""; 
            plik.close();
            sb->SetStatusText(wxT("History Cleared!"),0);
            ip->SetValue(wxT(""));
            ip->Clear();
			break;
        }
    }
}
EnemyParser::EnemyParser(GameMaster *mistrzGry)
{
	this->mistrzGry = mistrzGry;
	aktualnaGrupa = -1;
	bylBlad = false;

	QFile plik(PLIK_PRZECIWNIKOW);
	if(!plik.open(QIODevice::ReadOnly))
	{
		trescBledu = QString::fromUtf8( "Nie udało się wczytać pliku");
		bylBlad = true;
		return;
	}
	QTextStream wejscie(&plik);

	bylBlad = wczytajDane(&wejscie);
	plik.close();

	if(!bylBlad && aktualnaGrupa != -1 && !mistrzGry->enemyGroups_.contains(aktualnaGrupa))
	{
		trescBledu = QString::fromUtf8("Grupa nie może być pusta.\n Pusta jest grupa: ") + aktualnaGrupa;
		bylBlad = true;
	}

}
示例#4
0
QString Plik::odczyt_z_pliku()
{
    qDebug() << "[Plik::odczyt_z_pliku()]";
    QFile plik(sciezka);
    tekst="";

    if(!plik.open(QIODevice::ReadOnly | QIODevice::Text))
    {
        qDebug() << "Nie można było otworzyc pliku do odczytu\n";

//        QMessageBox::warning(
//                    this,
//                    QObject::tr("Hello World"),
//                    "Wystąpił błąd w dostępie do pliku"
//                    );
        return tekst;
    }

    QTextStream in (&plik);
    tekst = in.readAll();

    qDebug() << "Wczytano Następujące Dane z Pliku:\n";
    qDebug() << tekst << "\n";

    plik.flush();
    plik.close();

    return tekst;
}
示例#5
0
文件: gui.cpp 项目: LenaKhan/elka
//funkcja zapisujaca okno do pliku
void ZapiszOkno()
{
  int numer;					//numer okna do zapisania

  cout << "Podaj numer okna do zapisania: ";
  cin >> numer;				//wczytanie numeru okna
  cin.ignore(1000, '\n');		//ignorowanie nastepnych znakow

  if(numer<=0 || numer>(int)okna.size())	//sprawdzenie numeru
  {
    cout << "Niewlasciwy numer, nie zapisano zadnego okna. Nacisnij ENTER.";
    while(cin.get()!='\n') continue;	//zignorowanie nastepnych znakow
    return;					//powrot do menu
  }//if

  string nazwa;

  cout << "Podaj nazwe dla pliku z oknem: ";  
  cin >> nazwa;

  ofstream plik(nazwa.c_str());		//stworzenie pliku o podanej nazwie

  (*(okna[numer-1])).Write(plik);	//zapisanie danych do pliku

  plik.close();				//zamknięcie pliku

}//void ZapiszOkno()
示例#6
0
文件: GeoDat.cpp 项目: wrzeszcz/mgs
//------------------------------------------------------------------------------
bool GeoDat::wypisz_plik (const string &fileName, const string &sep)
{
    ofstream plik(fileName.c_str());
    if (!plik.is_open()) return false;
    wypisz (plik,sep);
    plik.close();
    return true;
}
示例#7
0
文件: Log.cpp 项目: onemoment/Bank15
void Log::pokaz(){
	std::ifstream plik(this->nazwaPliku);
	std::string linia;
	while (std::getline(plik, linia))
	{
		std::cout << linia << std::endl;
	}
	plik.close();
}
示例#8
0
int main (void){
    ofstream plik("wyniki.txt", ios_base::out);
    //InversiveGenerator (_MIN, _MAX, _SEED, _a, _b)
    //LinearGenerator (_MIN, _MAX, _SEED, _a, _b)
    //BBS (_p, _q, _MIN, _SEED)
    
    InversiveGenerator inwersyjny(0, 17, 0, 5, 1);
    LinearGenerator liniowy(0, 16, 0, 5, 1);
    BBS blum (11,11,0,5);
    
    
    cout << "\tICG\tLCG\tBBS" << endl;
    cout << "Min\t" << inwersyjny.getMin() << "\t" << liniowy.getMin() << "\t" << blum.getMin() << endl;
    cout << "Max\t" << inwersyjny.getMax() << "\t" << liniowy.getMax() << "\t" << blum.getMax() << endl;
    cout << "Seed\t" << inwersyjny.getSeed() << "\t" << liniowy.getSeed() << "\t" << blum.getSeed() << endl;
    cout << "I\t" << inwersyjny.getA() << "\t" << liniowy.getA() << "\t" << blum.getP() << endl;
    cout << "II\t" << inwersyjny.getB() << "\t" << liniowy.getB() << "\t" << blum.getQ() << endl;
    cout << endl << "Wylosowane liczby:" << endl;

    
    cout << "Generator liniowy:\t";
    for (int i = 0; i < 10; i++)
        liniowy.print();
    cout << endl;
    
    cout << "Generator inwersyjny:\t";
    for (int i = 0; i < 10; i++)
        inwersyjny.print();
    cout << endl;
    
    cout << "Generator Blum Blum Shub:\t";
    for (int i = 0; i < 10; i++)
        blum.print();
    cout << endl;

    cout << "Testy:" << endl;
 
    liniowy.setSeed(0);
    inwersyjny.setSeed(0);
    blum.setSeed(5);
    

    Test * array [] = {
        new statTest(&inwersyjny), new statTest(&liniowy), new statTest(&blum),
        new autoTest(&inwersyjny), new autoTest(&liniowy), new autoTest(&blum),
        new runsTest(&inwersyjny), new runsTest(&liniowy), new runsTest(&blum)};
    
    for (int i = 0; i < 9; i++)
    {
        array[i]->runTest();
        array[i]->displayResult(plik);
    }

    plik.close();
    return 0;
}
示例#9
0
int main(int argc, char* argv[]) {
	slownik slowole;
	if (2 <= argc) {
		std::ifstream plik(argv[1]);
		plik >> slowole;
		if (3 <= argc){
			std::ofstream wyplik(argv[2]);
			wyplik << slowole;
		}
	}
示例#10
0
文件: GeoDat.cpp 项目: wrzeszcz/mgs
//------------------------------------------------------------------------------
bool GeoDat::wczytaj_plik(const string &fileName, const string &sep, bool sred)
{
    ifstream plik(fileName.c_str()) ;
    if (plik.is_open())
    {
        wczytaj (plik, sep, sred);
        plik.close();
        return true;
    }
    return false;
}
示例#11
0
void Game::load_from_file()
{
	std::stringstream ss;
	ss << current_level << ".lev";
	std::ifstream plik(ss.str());
	std::string name_and_args;
	while(std::getline(plik, name_and_args))
	{
		auto pos = name_and_args.find_first_of(' ');
		if(!name_and_args.empty() && name_and_args.substr(0, pos) != "#")
			push_to_container(make_entity(name_and_args.substr(0, pos), name_and_args.substr(pos)));
	}
}
示例#12
0
文件: humez.cpp 项目: qbolec/c
void wczytaj(){
   ifstream plik("dupa.txt");
   pos=0;
   while(!plik.eof()){
     char temp[256];
     plik >> temp;
     if(plik.eof())
         return;
     char * napis=new char[strlen(temp)+1];
     strcpy( napis,temp);
     if( pos >= cursize)
       resize( cursize*2+1);
     tab[pos++]=napis;
   }
}
示例#13
0
knapsack_data load() {
  std::ifstream plik("data.txt");
  knapsack_data d;
  int i=0;
  plik>>d.c;
  plik>>d.n;
  //int *price, *weight;
  d.value = (int*)calloc(d.n,sizeof(int));
  d.weight = (int*)calloc(d.n,sizeof(int));
  while(!plik.eof()){
    plik >> d.value[i] >> d.weight[i];
    i++;
  }
  return d;
}
示例#14
0
ItemParser::ItemParser(GameMaster *mistrz)
{
	this->mistrzGry = mistrz;
	aktualnaGrupa = "";
	bylBlad = false;

	QFile plik(PLIK_PRZEDMIOTOW);
		if(!plik.open(QIODevice::ReadOnly))
		{
			trescBledu = QString::fromUtf8("Nie udało się wczytać pliku");
			bylBlad = true;
			return;
		}
		QTextStream wejscie(&plik);
		bylBlad = wczytajDane(&wejscie);
		plik.close();
}
示例#15
0
void print (){

     std::ifstream plik("database.dat");

            if(plik) {

                std::ofstream saveFile ("Savedatabase.txt");

                std::string textToSave;
                saveFile << textToSave;
                saveFile.close();

            } else {

                mvprintw(2,1,"Error: File not found.");

            }



}
示例#16
0
/*
Metoda wype³niaj¹ca mapê stworzon¹ w metodzie createMap.
*/
void Map::FillMap(std::string filename, std::string tilesetpath)
{
	std::ifstream plik(filename);
	if(!tileSet.loadFromFile(tilesetpath))
		throw DataNotLoaded("Nie znaleziono fragmentow mapy!");
	// Ustawiwanie texturey jako tileset, znajduj¹ siê w niej wszystkie podstawowe sprity mapy - skrzynka, pod³oga, œciana
	spriteTile.setTexture(tileSet);
	if (plik.is_open())
	{
		// Do momentu, a¿ nei skoñczy siê plik map bêdziemy wczytywaæ dane i tworzyæ mapê
		while (!plik.eof())
		{
			//Pojedynczy ci¹g znaków wczytywany jest jako string x.x
			std::string spritestr;
			plik >> spritestr;
			// sprawdzanie, czy zapis w mapie jest poprawny, jezeli nie to rzucony jest wyj¹tek - B³êdny plik
			char x = spritestr[0], y = spritestr[2];
			if (!isdigit(x) || !isdigit(y))
				throw DataNotLoaded("B³êdne dane w pliku!");
			else
				// jezeli dane s¹ poprawne to zapisujemy do mapy pod wspó³rzêdne loadcounter.x/y wartoœæ
				// która bêdzie reprezenowana przez te wspó³rzêdne w pliku spritów
				map[loadCounter.x][loadCounter.y] = sf::Vector2i(x - '0', y - '0');
			if (plik.peek() == '\n')
			{
				// je¿eli dochodzimy do koñca lini zwiêkszana jest wspó³rzêdna y, a zerowana x
				loadCounter.x = 0;
				loadCounter.y++;
			}
			else
				// w przeciwnym wypadku zwiêkszamy x, poniewa¿ jest to kolejna sekwencja wspó³rzêdnych sprita
				loadCounter.x++;
		}
		loadCounter.y++;
	}
	else 
		// je¿eli nie uda³o nam siê otworzyæ pliku, zostaje wyrzucony wyj¹tek.
		throw DataNotLoaded("Nie mozna otworzyc pliku!");
示例#17
0
void bootSector::on_bootSector_accepted()
{
    if (this->modified==0)
    {
        return;
    }

    //save boot sector
    this->image->prepareForModify();
    //Now the image supplies us modified path to temp file.

    //patch the image file with a new sector held in this->sectorData.
    QFile plik(this->image->getCurrentPath());
    if (!plik.open(QIODevice::ReadWrite))
    {
        QMessageBox::critical(this,"Error","Image data cannot be opened for writing!");
    }
    plik.seek(this->offset);
    plik.write(this->sectorData);
    plik.close();
    this->image->forceModified(1);
    //QMessageBox::critical(this,"Error","File ");
}
示例#18
0
void Plik::zapis_do_pliku()
{
    qDebug() << "[Plik::zapis_do_pliku()]";
    QFile plik(sciezka);
    if(!plik.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Truncate))
    {
        qDebug() << "Nie można było otworzyć pliku o zapisu\n";
        return;
    }
    QTextStream out (&plik);
    qDebug()<<"Wpisuje następujący tekst do pliku: "<<endl;
    qDebug()<<tekst;

    out << tekst;

    qDebug() << "Wczytano Następujące Dane z Pliku:\n";
    qDebug() << tekst << "\n";

    plik.flush();
    plik.close();

    return;
}
示例#19
0
文件: main.cpp 项目: Gonz8/RSO-16L
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    QStringList args = QCoreApplication::arguments();
    if(args.size() < 4)
    {
        std::cerr << "Za mało parametrów" << std::endl;
        exit(2);
    }

    Server server;
    QVector<Server> servers;
    server.ip = QHostAddress(args.at(1));
    server.port = args.at(2).toInt();
    servers.push_back(server);

    Client client;
    client.setServers(&servers);

    //sprawdzenie parametrów wywołania

    if(args.at(3) == "upload")
    {
        QString data;
        QFile plik(args.at(4));
        data = plik.readAll().toBase64();
        if(client.send(QStringList() << "UPLOAD" << data) == NO_SERVERS)
        {
            std::cout << "nie można się z niczym połączyć lub nikt nie akceptuje zapytań\n";
            a.exit(10);
        }
    }
    else if(args.at(3) == "insert")
    {
        QStringList columns;
        for(int i=5; i<args.size(); ++i)
        {
            columns << args.at(i);
        }
        if(client.send(QStringList() << "INSERT" << args.at(4) << columns) == NO_SERVERS)
        {
            std::cout << "nie można się z niczym połączyć lub nikt nie akceptuje zapytań\n";
            a.exit(10);
        }
    }
    else if(args.at(3) == "attach")
    {
        QString data;
        QFile plik(args.at(4));
        data = plik.readAll().toBase64();
        if(client.send(QStringList() << "ATTACH" << args.at(4) << data) == NO_SERVERS)
        {
            std::cout << "nie można się z niczym połączyć lub nikt nie akceptuje zapytań\n";
            a.exit(10);
        }
    }
    else if(args.at(3) == "delete")
    {
        if(client.send(QStringList() << "DELETE" << args.at(4) << args.at(5)) == NO_SERVERS)
        {
            std::cout << "nie można się z niczym połączyć lub nikt nie akceptuje zapytań\n";
            a.exit(10);
        }
    }
    else if(args.at(3) == "unlink")
    {
        if(client.send(QStringList() << "UNLINK" << args.at(4) << args.at(3)) == NO_SERVERS)
        {
            std::cout << "nie można się z niczym połączyć lub nikt nie akceptuje zapytań\n";
            a.exit(10);
        }
    }
    else{
    std::cerr << "Nieznany błąd" << std::endl;
    exit(11);
    }

    return a.exec();
}
示例#20
0
文件: humez.cpp 项目: qbolec/c
void wypisz(){
	ofstream plik("dupa.txt");
	for(int i=0;i<pos;i++)
		plik << tab[i] << endl;
}
示例#21
0
void algorytmLosowy(const Generator& generator, int tablica[])
{
	vector<Zadanie*> zadania = generator.zadania;	//tymczasowa tablica do usuwania zadañ
	Zadanie* tmp;									//wskaŸnik do zamieniania miejscami w wektorze
	Maszyna* maszyna;								//wskaŸnik na preferowan¹ maszynê

	
	ofstream plik("dla_poprawy_od_kroku.txt");

	int zadanie = zadania.size()-1;					//zadanie do wykonania
	int preferred;									//preferowana maszyna
	int czas[3] = {0,0,0};							//obecny kwant czasu na danej maszynie
	int przestoj[3] = {0,0,0};								//numer nastêpnego przestoju
	bool koniec_przestojow[3] = {false, false, false};

	while (zadania.size() != 0)
	{
		zadanie = zadania.size()-1;					//przegl¹damy wektor od koñca

		//wybieramy najmniej zawalon¹ maszynê
		int a = czas[0];
		int b = czas[1];
		int c = czas[2];

		if(a<=b && a<=c)
			preferred = 0;
		else if(b<=a && b<=c)
			preferred = 1;
		else
			preferred = 2;
		

		while(zadania.size() != 0)												//póki czegoœ nie wsadzisz i nie trzeba wybieraæ znowu maszyny losuj zadania
		{
			maszyna = generator.maszyny[preferred];


			if( maszyna->rozpoczecie[przestoj[preferred]] == czas[preferred] && !koniec_przestojow[preferred])							//je¿eli pierwszy niewykonany przestój ju¿ siê zacz¹³
			{													
				czas[preferred] += maszyna->dlugosc[przestoj[preferred]];			//dodajemy ten przestój oraz
				if(przestoj[preferred] < maszyna->rozpoczecie.size()-1)		//przechodzimy na nastêpny przestój je¿eli jakiœ zosta³
					++przestoj[preferred];
				else
					koniec_przestojow[preferred]=true;
			}




			if ( (!zadania[zadanie]->operacje[0]->done) && (czas[preferred]>=zadania[zadanie]->delay))	//wsadŸ pierwsz¹ je¿eli min¹³ czas gotowoœci
				//generator.czyWejdzie(*maszyna, *zadania[zadanie]->operacje[0],czas))	
				{	
					if( maszyna->rozpoczecie[przestoj[preferred]] < (czas[preferred]+zadania[zadanie]->operacje[0]->czas) && !koniec_przestojow[preferred])							//je¿eli pierwszy niewykonany przestój ju¿ siê zacz¹³
					{													
						czas[preferred] += maszyna->dlugosc[przestoj[preferred]];			//dodajemy ten przestój oraz
						if(przestoj[preferred] < maszyna->rozpoczecie.size()-1)		//przechodzimy na nastêpny przestój je¿eli jakiœ zosta³
							++przestoj[preferred];
						else
							koniec_przestojow[preferred]=true;
						czas[preferred] += zadania[zadanie]->operacje[0]->czas * 0.3;		//wyw³aszczanie
					}
				maszyna->uszeregowanie.push_back(zadania[zadanie]->operacje[0]);	//wtykamy operacjê do uszeregowania
				zadania[zadanie]->operacje[0]->begin = czas[preferred];						//uk³adamy czas rozpoczêcia
				czas[preferred] += zadania[zadanie]->operacje[0]->czas;							//dodajemy czas operacji do bierz¹cego
				zadania[zadanie]->operacje[0]->maszyna = maszyna;					//ustawiamy gdzie jest dana operacja
				zadania[zadanie]->operacje[0]->done = true;							//okreœlamy operacjê jako wykonan¹
				break;															//wychodzimy z pêtli, szukamy najmniej zawalonej maszyny
			}

			else if( !(zadania[zadanie]->operacje[1]->done) && (zadania[zadanie]->operacje[0]->done))//druga 			
													//je¿eli drugia operacja jeszcze nie zosta³a rozpoczêta a pierwsza zakoñczy³a siê przed chwil¹ obecn¹
			{
				if(zadania[zadanie]->operacje[0]->maszyna == maszyna)								//je¿eli maszyna jest ta sama co pierwszego zadania
				{																					//to j¹ zmieniamy na inn¹
					wybierz(preferred);
					maszyna = generator.maszyny[preferred];
				}
				if(generator.czyMozna(*zadania[zadanie]->operacje[1],czas[preferred]))
				{
					if( !koniec_przestojow[preferred] && maszyna->rozpoczecie[przestoj[preferred]] < (czas[preferred]+zadania[zadanie]->operacje[1]->czas))							//je¿eli pierwszy niewykonany przestój ju¿ siê zacz¹³
					{													
						czas[preferred] += maszyna->dlugosc[przestoj[preferred]];			//dodajemy ten przestój oraz
						if(przestoj[preferred] < maszyna->rozpoczecie.size()-1)		//przechodzimy na nastêpny przestój je¿eli jakiœ zosta³
							++przestoj[preferred];
						else
							koniec_przestojow[preferred]=true;
						czas[preferred] += zadania[zadanie]->operacje[1]->czas * 0.3;		//wyw³aszczanie
					}
					zadania[zadanie]->operacje[1]->begin = czas[preferred];
					czas[preferred] += zadania[zadanie]->operacje[1]->czas;
					zadania[zadanie]->operacje[1]->maszyna = maszyna;
					zadania[zadanie]->operacje[1]->done = true;
					maszyna->uszeregowanie.push_back(zadania[zadanie]->operacje[1]);
				
					break;
				}
			}
			else if((zadania[zadanie]->operacje[1]->done))			//sprawdzenie czy 2 operacja zosta³a wykonana
			{
				if(!zadania[zadanie]->operacje[2]->done)				//trzecia operacja	
				{
					if(zadania[zadanie]->operacje[0]->maszyna == maszyna ||			//je¿eli operacja le¿y na maszynie na której by³a wykonana poprzednia op
					zadania[zadanie]->operacje[1]->maszyna == maszyna)
					{
						preferred = wybierz(zadania[zadanie]->operacje[0]->maszyna->numer, 
								zadania[zadanie]->operacje[1]->maszyna->numer);		//POPRAW
						maszyna = generator.maszyny[preferred];						//szukamy innej maszyny
					}
					if(generator.czyMozna(*zadania[zadanie]->operacje[2],czas[preferred]))
					{

					if(!koniec_przestojow[preferred] && maszyna->rozpoczecie[przestoj[preferred]] < (czas[preferred]+zadania[zadanie]->operacje[2]->czas))							//je¿eli pierwszy niewykonany przestój ju¿ siê zacz¹³
					{													
						czas[preferred] += maszyna->dlugosc[przestoj[preferred]];			//dodajemy ten przestój oraz
						if(przestoj[preferred] < maszyna->rozpoczecie.size()-1)		//przechodzimy na nastêpny przestój je¿eli jakiœ zosta³
							++przestoj[preferred];
						else
							koniec_przestojow[preferred]=true;
						czas[preferred] += zadania[zadanie]->operacje[2]->czas * 0.3;		//wyw³aszczanie
					}
						//cout<<"pyk"<<endl;
						zadania[zadanie]->operacje[2]->begin = czas[preferred];
						czas[preferred] += zadania[zadanie]->operacje[2]->czas;						
						zadania[zadanie]->operacje[2]->maszyna = maszyna;
						zadania[zadanie]->operacje[2]->done = true;
						bool flaga = zadania[0]->operacje[2]->done;
						maszyna->uszeregowanie.push_back(zadania[zadanie]->operacje[2]);

						tmp = zadania[zadanie];					//wymieniamy z ostatnim zadaniem w wektorze do usuwania
						zadania[zadanie] = zadania[zadania.size()-1];
						zadania[zadania.size()-1] = tmp;
						zadania.pop_back();				//usuwamy zadanie, bo wszystkie jego operacje zosta³y wykonane
						break;
					}
				}
			}
			if(zadanie>0)							//je¿eli nie dojechaliœmy do pocz¹tku wektora zadañ
				zadanie--;
			else									// a je¿eli tak to losujemy now¹ maszynê
			{
				zadanie = zadania.size()-1;
				//wpychanie zapychacza
				if(maszyna->uszeregowanie.size()>0)				//je¿eli uszeregowanie zawiera wiêcej ni¿ jedn¹ operacjê
				{
					if(maszyna->uszeregowanie[maszyna->uszeregowanie.size()-1]->numer>3)	//i jest to zapychacz
						maszyna->uszeregowanie[maszyna->uszeregowanie.size()-1]->czas += 1;	//to zwiêksz jego czas o jeden			
					else{
						Operacja  *op = new Operacja(1,98,NULL,98);		//deklaracja zapychacza
						op->begin=czas[preferred];
						maszyna->uszeregowanie.push_back(op);	
					}
				}
				else{
					Operacja  *op = new Operacja(1,98,NULL,98);		//deklaracja zapychacza
					op->begin=czas[preferred];
					maszyna->uszeregowanie.push_back(op);		//albo dodaj jako now¹ operacjê nowy zapychacz
				}
				czas[preferred] += 1;				
				wybierz(preferred);
			}
	}}

	
	int dlugosc = 0, dlugoscRealna = 0;	//do obliczania w³aœciwej d³ugoœci uszeergowania
	for (int i=0; i<3; i++)
	{
		//generator.czysc(*generator.maszyny[i]);			//usuwanie œmieci z koñca uszeregowania
		//generator.zlacz(generator.maszyny[i]->uszeregowanie);
		
		//cout << "NR " << i << " MASZYNA:" << endl<<"------"<<endl;
		plik << "NR " << i << " MASZYNA:" << endl<<"------"<<endl;
		for (int j=0; j<generator.maszyny[i]->uszeregowanie.size(); j++)
		{
		//	cout << "OP = " << (generator.maszyny[i]->uszeregowanie[j]->numer)+1 
			//		<< "\t\tZAD = " << (generator.maszyny[i]->uszeregowanie[j]->nrZadania)+1 
				//	<< "\t\tCZAS = " << generator.maszyny[i]->uszeregowanie[j]->czas << endl<<endl;	
			plik << "OP = " << (generator.maszyny[i]->uszeregowanie[j]->numer)+1 
					<< "\t\tZAD = " << (generator.maszyny[i]->uszeregowanie[j]->nrZadania)+1 
					<< "\t\tCZAS = " << generator.maszyny[i]->uszeregowanie[j]->czas << endl<<endl;	
		}
		int ostatni=generator.maszyny[i]->uszeregowanie.size()-1;
		dlugosc = generator.maszyny[i]->uszeregowanie[ostatni]->begin + generator.maszyny[i]->uszeregowanie[ostatni]->czas;
		dlugoscRealna = (dlugoscRealna > dlugosc) ? dlugoscRealna : dlugosc;
	}

	int x=optymalnadlugosc(generator);
	plik<<"//////////////	ALGORYTM LOSOWY	///////////////////"<<endl;
	cout<<"Szacowana optymalna dlugosc uszeregowania "<< generator.dlugoscInstancji/3 <<endl;
	//plik<<"Szacowana optymalna dlugosc uszeregowania "<< generator.dlugoscInstancji/3 <<endl;
	cout<<"Obliczona optymalna dlugosc uszeregowania "<< x <<endl;
	//plik<<"Obliczona optymalna dlugosc uszeregowania "<< x <<endl;
	cout<<"Dlugosc rzeczywista generowana przez algorytm "<<dlugoscRealna<<endl;
	//plik<<"Dlugosc rzeczywista generowana przez algorytm "<<dlugoscRealna<<endl;
	cout<<"Procent: "<<(float)dlugoscRealna/(x)<<endl;
	//plik<<"Procent: "<<(float)dlugoscRealna/(x)<<endl;
	tablica[0]=x;
	tablica[1]=dlugoscRealna;
	plik.close();
}