Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- // zmienne globalne
- int N_AGENTS = 0; // liczba uczestników
- int N_ITEMS = 0; // liczba przedmiotów
- int OPENING_BID = 0; // początkowa cena każdego przedmiotu
- int NOMINAL_RAISE = 0; // wartość podbicia
- int BIDDING_ROUNDS = 0; // liczba podbić wykonana przez każdego użytkownika
- int i = 0; // iterator
- int MAX_BIDDING = 10000; // maksymalna wartość podbić przypisana do użytkownika
- int USER = 0; // wylosowany użytkownik
- int OFFER = 0; // wybrana do licytacji oferta
- // tablice potrzebne do pracy programu
- int *BIDDING_TABLE; // tablica zawierająca liczbę podbić przypisną do każdego użytkownika
- int *ITEMS_PRICE; // tablica zawierająca aktualną cenę przedmiotów
- int main(int argc, char *argv[]) {
- srand(time(0)); /* ustawienie zarodka */
- // wczytanie wartosci zmiennych do programu
- printf("#################################################################\n");
- printf("###### Zaawansowany program do przeprowadzenia licytacji ########\n");
- printf("#################################################################\n");
- printf("Podaj liczbe uczestnikow: ");
- scanf("%d", &N_AGENTS);
- printf("Podaj liczbe przedmiotow: ");
- scanf("%d", &N_ITEMS);
- printf("Podaj cene poczatkowa dla przedmiotow: ");
- scanf("%d", &OPENING_BID);
- printf("Podaj wartosc podbicia: ");
- scanf("%d", &NOMINAL_RAISE);
- printf("Podaj liczbe podbic do wykonania przez kazdego uzytkownika: ");
- scanf("%d", &BIDDING_ROUNDS);
- printf("#################################################################\n");
- // zainicjowanie tablic
- BIDDING_TABLE = (int*) malloc(N_AGENTS* sizeof (int));
- ITEMS_PRICE = (int*) malloc(N_ITEMS* sizeof (int));
- // zapełnienie wartościami początkowymi tablicy podbić
- for(i=0; i<N_AGENTS; i++){
- BIDDING_TABLE[i] = BIDDING_ROUNDS;
- }
- // zapełnienie wartościami początkowymi tablicy cen
- for(i=0; i<N_ITEMS; i++){
- ITEMS_PRICE[i] = OPENING_BID;
- }
- // wyświetlenie tablicy podbić
- printf("Zainicjowana tablica podbic:\n");
- for(i=0; i<N_AGENTS; i++){
- printf("%d ",BIDDING_TABLE[i]);
- }
- // wyświetlenie tablicy cen
- printf("\nZainicjowana tablica cen:\n");
- for(i=0; i<N_ITEMS; i++){
- printf("%d ",ITEMS_PRICE[i]);
- }
- while(MAX_BIDDING > 0)
- {
- // wybieranie losowego uzytkownika
- USER = rand()%N_AGENTS + 1;
- if (BIDDING_TABLE[USER-1] > 0)
- {
- printf ("\nWylosowano gracza nr: %d \n", USER);
- // wybieranie, którą ofertę podbije gracz
- OFFER = rand()%N_ITEMS + 1;
- printf ("Gracz wybral oferte nr: %d \n", OFFER);
- // odjęcie jednego podbicia od licytującego użytkownika
- BIDDING_TABLE[USER-1] = BIDDING_TABLE[USER-1] - 1;
- // dodanie wartości podbicia do licytowanej oferty
- ITEMS_PRICE[OFFER-1] = ITEMS_PRICE[OFFER-1] + NOMINAL_RAISE;
- // wyświetlenie tablicy podbić
- printf("Aktualna tablica podbic:\n");
- for(i=0; i<N_AGENTS; i++){
- printf("%d ",BIDDING_TABLE[i]);
- }
- // wyświetlenie tablicy cen
- printf("\nAktualna tablica cen:\n");
- for(i=0; i<N_ITEMS; i++){
- printf("%d ",ITEMS_PRICE[i]);
- }
- printf("\n#################################################################\n");
- // Sprawdzenie, czy licytacja może być kontynuowana
- MAX_BIDDING = -10000;
- for(i=0; i<N_AGENTS;i++)
- {
- if(BIDDING_TABLE[i] > MAX_BIDDING)
- {
- MAX_BIDDING = BIDDING_TABLE[i];
- }
- }
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement