Advertisement
Guest User

Untitled

a guest
Mar 24th, 2019
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.81 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <stdlib.h>
  4. #include <pgm.h>
  5. #include <time.h>
  6.  
  7.  
  8. int *Values(int zrodlo_i, int zrodlo_j);
  9. int main(int argc, char** argv)
  10. {
  11.     float tablica[100][100];
  12.     float tablicaPrev[100][100];
  13.     int u1;
  14.     int u2;
  15.     int u3;
  16.     int u4;
  17.     int i;
  18.     int j;
  19.     srand(time(NULL));
  20.     FILE* file;
  21.     char filename[100]={0};
  22.     gray **image;
  23.     int fileNumber;
  24.     int zrodlo_i=(rand()%99)+1;
  25.     int zrodlo_j=(rand()%99)+1;
  26.    
  27.     int zrodlo1_i=(rand()%99)+1;
  28.     int zrodlo1_j=(rand()%99)+1;
  29.  
  30.     int zrodlo2_i=(rand()%99)+1;
  31.     int zrodlo2_j=(rand()%99)+1;
  32.  
  33.     int zrodlo3_i=(rand()%99)+1;
  34.     int zrodlo3_j=(rand()%99)+1;
  35.  
  36.     int zrodlo4_i=(rand()%99)+1;
  37.     int zrodlo4_j=(rand()%99)+1;
  38.  
  39.     int zrodlo5_i=(rand()%99)+1;
  40.     int zrodlo5_j=(rand()%99)+1;
  41.  
  42.     int hipek_i=5;
  43.     int hipek_j=5;
  44.  
  45.     int flag=0;
  46.     int flag2;
  47.  
  48.     int o;
  49.  
  50.     int m;
  51.     int n;
  52.  
  53.     int hipek_i_new;
  54.     int hipek_j_new;
  55.  
  56.     int start_hipek;
  57.  
  58.     float max;
  59.  
  60.     int counter;
  61.  
  62.     for(i=0; i < 100 ; i++)
  63.     {
  64.         for(j=0; j < 100; j++)
  65.         {
  66.             tablica[i][j]=0;
  67.             tablicaPrev[i][j]=0;
  68.         }
  69.     }
  70.  
  71. tablicaPrev[zrodlo_i][zrodlo_j]=100;
  72. tablicaPrev[zrodlo1_i][zrodlo1_j]=75;
  73. tablicaPrev[zrodlo2_i][zrodlo2_j]=75;
  74. tablicaPrev[zrodlo3_i][zrodlo3_j]=75;
  75. tablicaPrev[zrodlo4_i][zrodlo4_j]=75;
  76. tablicaPrev[zrodlo5_i][zrodlo5_j]=75;
  77.  
  78.    
  79. for(int k=0 ; k < 250 ; k++)
  80. {
  81.     if(hipek_j > 95)
  82.     {
  83.         hipek_j=5;
  84.         hipek_i+=10;
  85.     }
  86.     if(hipek_i > 95)
  87.     {
  88.         hipek_i=5;
  89.         hipek_j=5;
  90.     }
  91.  
  92.     for(int o=0 ; o < 10 ; o++)
  93.     {
  94.  
  95.         if(tablica[hipek_i][hipek_j]==100)
  96.         {
  97.             printf("Znalazlem zrodlo!");
  98.             break;
  99.         }
  100.         if(tablica[hipek_i][hipek_j]>5)
  101.         {
  102.             hipek_i_new=hipek_i;
  103.             hipek_j_new=hipek_j;
  104.             max = tablica[hipek_i_new][hipek_j_new];
  105.             for(m=-1; m<=1; m++)
  106.             {
  107.              for(n=-1; n<=1; n++)
  108.              {
  109.               if(tablica[hipek_i_new+m][hipek_j_new+n]>max)
  110.               {
  111.                if(hipek_i_new+m<99 && hipek_i_new+m>1 && hipek_j_new+n < 99 && hipek_j_new+n > 1)
  112.                {
  113.                     hipek_i_new=hipek_i_new+m;
  114.                     hipek_j_new=hipek_j_new+n;
  115.                 max = tablica[hipek_i_new][hipek_j_new];
  116.                 hipek_i=hipek_i_new;
  117.                     hipek_j=hipek_j_new;   
  118.                 flag=1;
  119.                }
  120.               }
  121.              }
  122.             }
  123.  
  124.             if(tablica[hipek_i_new][hipek_j_new]==100)
  125.             {
  126.                 printf("Znalazlem!");
  127.                 break;
  128.  
  129.             }
  130.             if(tablica[hipek_i_new][hipek_j_new]==75)
  131.             {
  132.                 flag=0;
  133.                 hipek_i=hipek_i_new;
  134.                 hipek_j=hipek_j_new;
  135.  
  136.             }
  137.                            
  138.         }  
  139.  
  140.  
  141.         for(i=1; i < 99; i++)
  142.         {
  143.                 for(j=1; j < 99 ; j++)
  144.                 {
  145.                     tablica[i][j]=0.25*(tablicaPrev[i+1][j]+tablicaPrev[i-1][j]+tablicaPrev[i][j-1]+tablicaPrev[i][j+1]);
  146.                 }
  147.         }
  148.        
  149.             for(i=1; i < 99 ; i++)
  150.             {
  151.                 for(j=1; j<99; j++)
  152.                 {
  153.                     tablicaPrev[i][j]=tablica[i][j];
  154.                 }
  155.             }
  156.             tablicaPrev[zrodlo_i][zrodlo_j]=100;
  157.             tablicaPrev[zrodlo1_i][zrodlo1_j]=75;
  158.             tablicaPrev[zrodlo2_i][zrodlo2_j]=75;
  159.             tablicaPrev[zrodlo3_i][zrodlo3_j]=75;
  160.             tablicaPrev[zrodlo4_i][zrodlo4_j]=75;
  161.             tablicaPrev[zrodlo5_i][zrodlo5_j]=75;
  162.    
  163.                 image = pgm_allocarray(100,100);
  164.                
  165.             for(int i=0;i<100;i++)
  166.                     {
  167.                                 for(int j=0;j<100;j++)
  168.                                 {
  169.                                         image[i][j]=tablicaPrev[i][j]/100*255.0;
  170.                                 }
  171.                     }
  172.  
  173.             image[hipek_i][hipek_j]=255.0;
  174.                         fileNumber++;
  175.                         sprintf(filename, "image%d.pgm",fileNumber);
  176.                         file=fopen(filename,"wb");
  177.                         pgm_writepgm(file,image,100,100,255,1);
  178.                         fclose(file);
  179.         if(flag==0)
  180.         {  
  181.             hipek_j+=5;
  182.         }
  183.     }
  184.  
  185.  
  186.        
  187.         int *tablica_zrodla_rand;
  188.        
  189.         tablica_zrodla_rand=Values(zrodlo_i, zrodlo_j);
  190.        
  191.         zrodlo_i=tablica_zrodla_rand[0];
  192.         zrodlo_j=tablica_zrodla_rand[1];
  193.  
  194.         tablica_zrodla_rand=Values(zrodlo1_i, zrodlo1_j);
  195.  
  196.         zrodlo1_i=tablica_zrodla_rand[0];
  197.         zrodlo1_j=tablica_zrodla_rand[1];
  198.  
  199.         tablica_zrodla_rand=Values(zrodlo2_i, zrodlo2_j);
  200.  
  201.         zrodlo2_i=tablica_zrodla_rand[0];
  202.         zrodlo2_j=tablica_zrodla_rand[1];
  203.  
  204.         tablica_zrodla_rand=Values(zrodlo3_i, zrodlo3_j);
  205.  
  206.        
  207.         zrodlo3_i=tablica_zrodla_rand[0];
  208.         zrodlo3_j=tablica_zrodla_rand[1];
  209.  
  210.         tablica_zrodla_rand=Values(zrodlo4_i, zrodlo4_j);
  211.  
  212.         zrodlo4_i=tablica_zrodla_rand[0];
  213.         zrodlo4_j=tablica_zrodla_rand[1];
  214.    
  215.         tablica_zrodla_rand=Values(zrodlo4_i, zrodlo4_j);
  216.  
  217.         zrodlo5_i=tablica_zrodla_rand[0];
  218.         zrodlo5_j=tablica_zrodla_rand[1];  
  219.  
  220.  
  221. }      
  222. return 0;
  223.  
  224. }
  225.  
  226. int *Values(int zrodlo_i, int zrodlo_j)
  227. {
  228.     int *tablica = malloc(2*sizeof(int));
  229.    
  230.     tablica[0]=zrodlo_i+((rand()%3)-1);
  231.     tablica[1]=zrodlo_j+((rand()%3)-1);
  232.  
  233.     while(tablica[0]<1 || tablica[0]>98 || tablica[1]<1 || tablica[0]>98 || (tablica[0]==zrodlo_i && tablica[1]==zrodlo_j))
  234.     {
  235.         tablica[0]=zrodlo_i+((rand()%3)-1);
  236.         tablica[1]=zrodlo_j+((rand()%3)-1);
  237.     }
  238.  
  239. return tablica;
  240.  
  241. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement