Advertisement
Guest User

Untitled

a guest
Dec 5th, 2019
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.55 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. // zmienne globalne
  6. int N_AGENTS = 0; // liczba uczestników
  7. int N_ITEMS = 0; // liczba przedmiotów
  8. int OPENING_BID = 0; // początkowa cena każdego przedmiotu
  9. int NOMINAL_RAISE = 0; // wartość podbicia
  10. int BIDDING_ROUNDS = 0; // liczba podbić wykonana przez każdego użytkownika
  11. int i = 0; // iterator
  12. int MAX_BIDDING = 10000; // maksymalna wartość podbić przypisana do użytkownika
  13. int USER = 0; // wylosowany użytkownik
  14. int OFFER = 0; // wybrana do licytacji oferta
  15. // tablice potrzebne do pracy programu
  16. int *BIDDING_TABLE; // tablica zawierająca liczbę podbić przypisną do każdego użytkownika
  17. int *ITEMS_PRICE; // tablica zawierająca aktualną cenę przedmiotów
  18.  
  19. int main(int argc, char *argv[]) {
  20. srand(time(0)); /* ustawienie zarodka */
  21. // wczytanie wartosci zmiennych do programu
  22. printf("#################################################################\n");
  23. printf("###### Zaawansowany program do przeprowadzenia licytacji ########\n");
  24. printf("#################################################################\n");
  25. printf("Podaj liczbe uczestnikow: ");
  26. scanf("%d", &N_AGENTS);
  27. printf("Podaj liczbe przedmiotow: ");
  28. scanf("%d", &N_ITEMS);
  29. printf("Podaj cene poczatkowa dla przedmiotow: ");
  30. scanf("%d", &OPENING_BID);
  31. printf("Podaj wartosc podbicia: ");
  32. scanf("%d", &NOMINAL_RAISE);
  33. printf("Podaj liczbe podbic do wykonania przez kazdego uzytkownika: ");
  34. scanf("%d", &BIDDING_ROUNDS);
  35. printf("#################################################################\n");
  36. // zainicjowanie tablic
  37. BIDDING_TABLE = (int*) malloc(N_AGENTS* sizeof (int));
  38. ITEMS_PRICE = (int*) malloc(N_ITEMS* sizeof (int));
  39. // zapełnienie wartościami początkowymi tablicy podbić
  40. for(i=0; i<N_AGENTS; i++){
  41. BIDDING_TABLE[i] = BIDDING_ROUNDS;
  42. }
  43. // zapełnienie wartościami początkowymi tablicy cen
  44. for(i=0; i<N_ITEMS; i++){
  45. ITEMS_PRICE[i] = OPENING_BID;
  46. }
  47. // wyświetlenie tablicy podbić
  48. printf("Zainicjowana tablica podbic:\n");
  49. for(i=0; i<N_AGENTS; i++){
  50. printf("%d ",BIDDING_TABLE[i]);
  51. }
  52. // wyświetlenie tablicy cen
  53. printf("\nZainicjowana tablica cen:\n");
  54. for(i=0; i<N_ITEMS; i++){
  55. printf("%d ",ITEMS_PRICE[i]);
  56. }
  57.  
  58. while(MAX_BIDDING > 0)
  59. {
  60. // wybieranie losowego uzytkownika
  61. USER = rand()%N_AGENTS + 1;
  62. if (BIDDING_TABLE[USER-1] > 0)
  63. {
  64. printf ("\nWylosowano gracza nr: %d \n", USER);
  65. // wybieranie, którą ofertę podbije gracz
  66. OFFER = rand()%N_ITEMS + 1;
  67. printf ("Gracz wybral oferte nr: %d \n", OFFER);
  68.  
  69. // odjęcie jednego podbicia od licytującego użytkownika
  70. BIDDING_TABLE[USER-1] = BIDDING_TABLE[USER-1] - 1;
  71. // dodanie wartości podbicia do licytowanej oferty
  72. ITEMS_PRICE[OFFER-1] = ITEMS_PRICE[OFFER-1] + NOMINAL_RAISE;
  73.  
  74. // wyświetlenie tablicy podbić
  75. printf("Aktualna tablica podbic:\n");
  76. for(i=0; i<N_AGENTS; i++){
  77. printf("%d ",BIDDING_TABLE[i]);
  78. }
  79. // wyświetlenie tablicy cen
  80. printf("\nAktualna tablica cen:\n");
  81. for(i=0; i<N_ITEMS; i++){
  82. printf("%d ",ITEMS_PRICE[i]);
  83. }
  84. printf("\n#################################################################\n");
  85. // Sprawdzenie, czy licytacja może być kontynuowana
  86. MAX_BIDDING = -10000;
  87. for(i=0; i<N_AGENTS;i++)
  88. {
  89. if(BIDDING_TABLE[i] > MAX_BIDDING)
  90. {
  91. MAX_BIDDING = BIDDING_TABLE[i];
  92. }
  93. }
  94. }
  95. }
  96. return 0;
  97. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement