Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <locale.h>
- int min (int a, int b)
- {
- return a < b? a : b;
- }
- int main(int argc, char const *argv[])
- {
- setlocale(LC_ALL, "Rus");
- int n, m, x1, y1, x2, y2;
- int field[n][m];
- //Вводим данные
- printf("Введите размеры поля: ");
- scanf("%d %d", &n, &m);
- printf("Введите координаты первой клетки: ");
- scanf("%d %d", &x1, &y1);
- printf("Введите координаты второй клетки: ");
- scanf("%d %d", &x2, &y2);
- // Обнуляем массив
- for (int i = 0; i < n; ++i)
- for (int j = 0; j < m; ++j)
- field[i][j] = 0;
- // Находим путь по такому принципу: смотрим разницу между x и y координатами
- // Одним из кратчайших путей будет сначала проход по диагонали пока одна из координат (или сразу обе) не станут равны
- // А затем по прямой до самой точки
- // Определим в какую сторону двигаться
- int stepX = x2 - x1 > 0? 1 : -1;
- int stepY = y2 - y1 > 0? 1 : -1;
- // Пройдем по диагонали до нужной точки пока не останется пройти по прямой
- while ((x2 - x1 != 0) && (y2 - y1 != 0))
- {
- x1 += stepX;
- y1 += stepY;
- printf("x=%d y=%d\n", x1, y1);
- }
- // И дальше пройдем по прямой до нужной точки. Выполнится только один из циклов ниже
- while (x1 != x2)
- {
- x1 += stepX;
- printf("x=%d y=%d\n", x1, y1);
- }
- while (y1 != y2)
- {
- y1 += stepY;
- printf("x=%d y=%d\n", x1, y1);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement