fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void Brezenhem(int size, char z[][size], int x0, int y0, int x1, int y1)
  5. {
  6. int A, B, sign;
  7. A = y1 - y0;
  8. B = x1 - x0;
  9. if (abs(A) > abs(B)) sign = 1;
  10. else sign = -1;
  11. int signa, signb;
  12. if (A < 0) signa = -1;
  13. else signa = 1;
  14. if (B < 0) signb = -1;
  15. else signb = 1;
  16. A = abs(A) + 1;
  17. B = abs(B) + 1;
  18. int f = 0;
  19. int x = x0, y = y0;
  20. if (sign == -1)
  21. {
  22. do {
  23. z[y][x] = '*';
  24. f += A;
  25. if (f >= B) {
  26. f -= B;
  27. y += signa;
  28. }
  29. x += signb;
  30. } while (x != x1 + signb);
  31. }
  32. else
  33. {
  34. do {
  35. z[y][x] = '*';
  36. f += B;
  37. if (f >= A) {
  38. f -= A;
  39. x += signb;
  40. }
  41. y += signa;
  42. } while (y != y1 + signa);
  43. }
  44. }
  45. int main()
  46. {
  47. #define SIZE 25 // размер поля
  48. int x1, x2, y1, y2;
  49. char z[SIZE][SIZE];
  50. for (int i = 0; i < SIZE; i++) {
  51. for (int j = 0; j < SIZE; j++) {
  52. z[i][j] = '-';
  53. }
  54. }
  55. printf("x1 = ");
  56. scanf("%d", &x1);
  57. printf("y1 = ");
  58. scanf("%d", &y1);
  59. printf("x2 = ");
  60. scanf("%d", &x2);
  61. printf("y2 = ");
  62. scanf("%d", &y2);
  63. Brezenhem(SIZE, z, x1, y1, x2, y2);
  64. for (int i = 0; i < SIZE; i++)
  65. {
  66. for (int j = 0; j < SIZE; j++)
  67. putchar(z[i][j]);
  68. puts("");
  69. }
  70. return 0;
  71. }
Success #stdin #stdout 0s 5516KB
stdin
23 1 1 4
stdout
x1 = y1 = x2 = y2 = -------------------------
------------------******-
------------******-------
------******-------------
-*****-------------------
-------------------------
-------------------------
-------------------------
-------------------------
-------------------------
-------------------------
-------------------------
-------------------------
-------------------------
-------------------------
-------------------------
-------------------------
-------------------------
-------------------------
-------------------------
-------------------------
-------------------------
-------------------------
-------------------------
-------------------------