Пример #1
0
Файл: sem.c Проект: olegrok/3sem
int main(int argc, char* argv[])
{
	if(argc < 3){
		printf("Неверное количество аргументов\n");
		return -1;
	}
	int places = atoi(argv[1]);
	int pass = atoi(argv[2]);
	if(places <= 0 || pass <= 0){
		printf("Введены неположительные аргументы\n");
		return -1;
	}
	printf("Количество мест в корабле: %d\nКоличество отдыхающих на пляже: %d\n", places, pass);
	//struct sembuf sem = { 0, 0, 0 };
	int boatid = 0;
	boatid = semget(IPC_PRIVATE, 2, IPC_CREAT | 0666);
	int trapid = 0;
	trapid = semget(IPC_PRIVATE, 2, IPC_CREAT | 0666);
	int people = 0;
	people = semget(IPC_PRIVATE, 1, IPC_CREAT | 0666);


	if (places > pass)
		places = pass;
	mysemop(people, 0, pass);
	int PassPid = 0;
	int TitanicPid = fork();
	if (!TitanicPid)
		Titanic(boatid, trapid, places, people);
	int i = 0;
	for (; i < pass; i++) {
		PassPid = fork();
		if(PassPid < 0){
			perror("Fork failed");
			semctl(boatid, 2, IPC_RMID);
			semctl(trapid, 2, IPC_RMID);
			semctl(people, 1, IPC_RMID);
			exit(-1);
		}
		if (!PassPid) {
			passenger(boatid, trapid, people);
		}
	}

	waitpid(TitanicPid, 0, 0);
	semctl(boatid, 2, IPC_RMID);
	semctl(trapid, 2, IPC_RMID);
	for (i = 0; i < pass; i++)
		wait(0);
	printf("Пляж закрылся. Люди разошлись\n");
	semctl(people, 1, IPC_RMID);
	return 0;

}
Пример #2
0
int main(int argc, const char * argv[]) {
    
    //srand((unsigned int)(time(NULL)));
    
    Plane p;
    Airport air("John F. Kennedy Airport", "New York", 3);
    
    std::cout << "Welcome to " << air.getName() << ", " << air.getLocation() << ". \n\nWe currently fly to the following cities:\n";
    
    for(int i = 0; i < air.getDestinations().size(); i++)
        std::cout << air.getDestinations().at(i) << ", ";
    
    std::cout << std::endl;std::cout << std::endl;
    
    air.destinationFlights();
    
    std::cout << std::endl;
    
    Passenger passenger("Oyedotun","Oyesanmi", "Paris", SeatType::BUSINESS_CLASS);
    Booking book(passenger);
    book.seatAvailability(passenger, air);std::cout << std::endl;
    
    return 0;
}
Пример #3
0
void TrafficMap::debug()
{
    #if 0

    int startCity, startTime, destCity;

    while (cin >> startCity >> startTime >> destCity)
    {
        int destTime(minCostArriveTime[startCity][startTime][destCity]);

        cout << "minCost : " << minCost[startCity][startTime][destCity][destTime] << endl;
        cout << "passCities: ";

        for (int i(0); i != CITY_NUM; ++i)
            if (minCostPass[startCity][startTime][destCity][destTime] & (1 << i))
                cout << cityNoToName[i] << " ";
        cout << "\n";

        vector<int> revPath;

        int passCity(destCity), passTime(destTime);

        do
        {
            revPath.push_back(minCostPrv[startCity][startTime][passCity][passTime]);
            passCity = edges[revPath.back()].depart.city;
            passTime = edges[revPath.back()].depart.time;
        } while (!(passCity == startCity && passTime == startTime));

        for (auto it = revPath.rbegin(); it != revPath.rend(); ++it)
            cout << edges[*it] << endl;
    }

    #elif 1
    ofstream ofs("F:/debug.txt");
/*
    Passenger passenger;
    passenger.demand.startCity = "Xi'an";
    passenger.demand.destCity = "Shijiazhuang";
    for (const string& s : {"Changchun", "Guangzhou", "Chengdu", "Shanghai", "Changsha", "Chongqing", "Nanjing"})
        passenger.demand.passCities.push_back(s);
    passenger.demand.startTime = 12,
    passenger.demand.strategy = MIN_COST;
*/
    Passenger passenger(passengers.at(passengers.size() - 1) );
    clock_t start = clock();
    vector<string>::iterator it;
    for (it = passenger.demand.passCities.begin(); it != passenger.demand.passCities.end(); it ++)
    {
        string tmp(*it);
        qDebug("%s",tmp.c_str());
    }

    //getStrategy(passengers.at(passengers.size() - 1));
    //restoreEdge();
//    for (int i = 0; i <= 10; i++)
//        passengers[passengers.size() - 1].status.revPath.push_back(i + 250);

    clock_t stop = clock();
    qDebug( "stragtegy got in %d ms\n", stop - start);

    ofs.close();

    #endif // 1
}