Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <math.h>
- #include "winbgi2.h"
- #include "stdlib.h"
- #include <time.h>
- void Rysuj_plansze(int x)
- {
- graphics(200 + 2 * x , 800);
- line(50 , 650 , 150 + 2 * x , 650);
- line(100 + x , 700 , 100 + x , 870);
- }
- void main()
- {
- int i, j, k, l; //zmienne poboczne
- int ilosc_osob;
- int *osoba;
- float los = 0; //zmienna do losowania w ktora storne jest wykonany krok
- int ilosc_ruchow; //zmienna do ilosci ruchow
- float prawdop;
- int *wysokosc;
- int max = 0;
- srand( time(NULL));
- printf("Podaj liczbe osob:\n"); //zdobycie informacji o ilosci osob
- scanf("%d", &ilosc_osob);
- printf("Podac liczbe ruchow: (najlepiej przedstawione wyniki dla wartosci do 750:)\n"); //zdobycie informacji o ilosci ruchow
- scanf("%d", &ilosc_ruchow);
- printf("Prosze podac prawdopodobienstwo ruchu w prawa strone w skali 0 - 1:\n");
- scanf("%f", &prawdop);
- if ( prawdop > 1 || prawdop < 0) { printf("prawdopodobienstwo musi byc z przedzialu 0-1\n"); exit(1); }
- osoba = (int*) malloc( ilosc_osob * sizeof(int) );
- wysokosc = (int*) malloc((2 * ilosc_ruchow + 1) * sizeof(int)); //alokacja dynamiczna
- for( int i = 0; i < ilosc_osob ; i++) {
- osoba[i] = ilosc_ruchow; //zadanie kazdej osobie polozenia poczatkowego polozenie poczatkowe na skali osoba = ilosc ruchow
- }
- for( int k = 0; k < ilosc_ruchow ; k++) { //ilosc ruchow jakie jest robione
- for( int l = 0; l < ilosc_osob; l++) { //ruch kazdej osoby
- los = (float)rand()/(float)RAND_MAX;
- if( los < prawdop ) {
- osoba[l]++;
- } else {
- osoba[l]--;
- }
- }
- }
- Rysuj_plansze( ilosc_ruchow);
- for (int i = 0; i <= 2 * ilosc_ruchow; i++) {
- wysokosc[i] = 0;
- } //nadanie polozeniu wartosci od 0 do 2 * ilosc ruchow a zmiennej wysokosc 0
- for (int j = 0 ; j < ilosc_osob; j++) {
- wysokosc[osoba[j]]++;
- }
- for (int k = 0 ; k <= 2 * ilosc_ruchow; k++) {
- if (wysokosc[k] > max) {
- max = wysokosc[k];
- }
- }
- for( int i = 0 ; i <= 2 * ilosc_ruchow; i++) {
- line( 100 + i , 650 , 100 + i , 650 - wysokosc[i] * 620 / max );
- } //620 to maksymalna wysokosc slupka
- free(wysokosc);
- free(osoba);
- wait();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement