fork(1) download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. typedef struct Punkt { double x,y; } Punkt; /* double - dokładniejszy, no i teraz można użyć Punkt bez słówka strcut */
  6.  
  7. double random01() { return rand()/(double)RAND_MAX; } /* konwertujemy w locie */
  8.  
  9. void print_punkt(Punkt punkt) { printf("x = %lf, y = %lf\n", punkt.x, punkt.y); }
  10.  
  11. Punkt srodkowy_punkt(Punkt *tb,unsigned count) /* dałeś int, czyli można spodziewać się ujemnej wartości? */
  12. {
  13. unsigned i;
  14. Punkt mid={0,0};
  15. for(i=0;i<count;++i) /* nie nadużywaj bez sensu i++ */
  16. {
  17. mid.x+=tb[i].x;
  18. mid.y+=tb[i].y;
  19. }
  20. mid.x/=count;
  21. mid.y/=count;
  22. return mid; /* można zwrócić przez wartość */
  23. }
  24.  
  25. int main()
  26. {
  27. unsigned i,count;
  28. Punkt mid;
  29.  
  30. srand(time(NULL));
  31. printf("Wpisz ile punktow wylosowac: ");
  32. scanf("%u",&count);
  33. Punkt *tb=(Punkt*)malloc(count*sizeof(Punkt));
  34. for(i=0;i<count;++i)
  35. {
  36. tb[i].x=random01();
  37. tb[i].y=random01();
  38. print_punkt(tb[i]);
  39. }
  40. mid=srodkowy_punkt(tb,count); /* tu nie wolno używać sizeof - dostaniesz rozmiar wskaźnika*/
  41. print_punkt(mid);
  42. return 0; /* Kto by chciał pisać EXIT_SUCCESS zamiast 0 ... */
  43. }
Success #stdin #stdout 0s 2248KB
stdin
3
stdout
Wpisz ile punktow wylosowac: x = 0.638059, y = 0.170876
x = 0.305393, y = 0.055338
x = 0.125214, y = 0.494315
x = 0.356222, y = 0.240177