Advertisement
Guest User

skr

a guest
Jan 27th, 2020
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.23 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <math.h>
  3. #include "winbgi2.h"
  4. #include "stdlib.h"
  5. #include <time.h>
  6.  
  7.  
  8. void Rysuj_plansze(int x)
  9. {
  10.  
  11. graphics(200 + 2 * x , 800);
  12. line(50 , 650 , 150 + 2 * x , 650);
  13. line(100 + x , 700 , 100 + x , 870);
  14.  
  15. }
  16.  
  17.  
  18.  
  19. void main()
  20. {
  21. int i, j, k, l; //zmienne poboczne
  22. int ilosc_osob;
  23. int *osoba;
  24. float los = 0; //zmienna do losowania w ktora storne jest wykonany krok
  25. int ilosc_ruchow; //zmienna do ilosci ruchow
  26. float prawdop;
  27. int *wysokosc;
  28. int max = 0;
  29.  
  30. srand( time(NULL));
  31.  
  32. printf("Podaj liczbe osob:\n"); //zdobycie informacji o ilosci osob
  33. scanf("%d", &ilosc_osob);
  34. printf("Podac liczbe ruchow: (najlepiej przedstawione wyniki dla wartosci do 750:)\n"); //zdobycie informacji o ilosci ruchow
  35. scanf("%d", &ilosc_ruchow);
  36. printf("Prosze podac prawdopodobienstwo ruchu w prawa strone w skali 0 - 1:\n");
  37. scanf("%f", &prawdop);
  38. if ( prawdop > 1 || prawdop < 0) { printf("prawdopodobienstwo musi byc z przedzialu 0-1\n"); exit(1); }
  39.  
  40.  
  41. osoba = (int*) malloc( ilosc_osob * sizeof(int) );
  42. wysokosc = (int*) malloc((2 * ilosc_ruchow + 1) * sizeof(int)); //alokacja dynamiczna
  43.  
  44. for( int i = 0; i < ilosc_osob ; i++) {
  45. osoba[i] = ilosc_ruchow; //zadanie kazdej osobie polozenia poczatkowego polozenie poczatkowe na skali osoba = ilosc ruchow
  46. }
  47.  
  48. for( int k = 0; k < ilosc_ruchow ; k++) { //ilosc ruchow jakie jest robione
  49. for( int l = 0; l < ilosc_osob; l++) { //ruch kazdej osoby
  50. los = (float)rand()/(float)RAND_MAX;
  51. if( los < prawdop ) {
  52. osoba[l]++;
  53. } else {
  54. osoba[l]--;
  55. }
  56. }
  57. }
  58.  
  59. Rysuj_plansze( ilosc_ruchow);
  60.  
  61. for (int i = 0; i <= 2 * ilosc_ruchow; i++) {
  62. wysokosc[i] = 0;
  63. } //nadanie polozeniu wartosci od 0 do 2 * ilosc ruchow a zmiennej wysokosc 0
  64.  
  65. for (int j = 0 ; j < ilosc_osob; j++) {
  66. wysokosc[osoba[j]]++;
  67. }
  68.  
  69. for (int k = 0 ; k <= 2 * ilosc_ruchow; k++) {
  70. if (wysokosc[k] > max) {
  71. max = wysokosc[k];
  72. }
  73. }
  74.  
  75. for( int i = 0 ; i <= 2 * ilosc_ruchow; i++) {
  76. line( 100 + i , 650 , 100 + i , 650 - wysokosc[i] * 620 / max );
  77. } //620 to maksymalna wysokosc slupka
  78.  
  79.  
  80. free(wysokosc);
  81. free(osoba);
  82. wait();
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement