1

Тема: Як виправити таку помилку при обході циклами?

#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <windows.h>
 
 
void gotoxy(int x, int y)
{
    COORD coord;
    coord.X = x;
    coord.Y = y;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
 
int main()
{
    int i, j, k;
    printf("Input start: ");
    scanf_s("Input start: ");
 
    for (i = 0; i < 100; i++)
    {
        int x = 1;
        int y = 24;
        if (i % 2 == 0) {
            x += i;
            for (j = 0;j <= i;j++) {
                if (j >= 48) {
                    gotoxy(x - j%24, y - j%24);
                    printf("1");
                    Sleep(10);
                }
                else {
                    gotoxy(x - j, y - j);
                    printf("1");
                    Sleep(20);
                }
            }
        }
        else {
            y -= i;
            for (j = 0;j <= i;j++) {
                if (j >= 48) {
                    gotoxy(x + j%24, y + j%24);
                    printf("0");
                    Sleep(10);
                }
                else {
                    gotoxy(x + j, y + j);
                    printf("0");
                    Sleep(20);
                }
            }
        }
    }
 
    getch();
    return 0;
}

На першому фото напрямок обходу, в мене він працює правильно, але коли і дуже велике, то воно починає неправильно працювати. ( друге фото )
Розмір поля: 80х24
Як це виправити?
https://replace.org.ua/uploads/images/9663/8c2551635c5d848c990f71ecca3a1670.jpg

2

Re: Як виправити таку помилку при обході циклами?

Звідкіля ми знаємо що ви хочете від програми, опишіть критерії за якими можна визначити правильно вона працює чи ні.

Подякували: pluszz, 221VOLT, koala3

3

Re: Як виправити таку помилку при обході циклами?

0xDADA11C7 написав:

Звідкіля ми знаємо що ви хочете від програми, опишіть критерії за якими можна визначити правильно вона працює чи ні.

Вона повинна заповнити усе поле розміром 80х24 за вказаним напрямком,а в мене з'являється зайва полоса, яку я виділив червоним.

4

Re: Як виправити таку помилку при обході циклами?

dimavfox написав:

Вона повинна заповнити усе поле розміром 80х24 за вказаним напрямком,а в мене з'являється зайва полоса, яку я виділив червоним.

Чекайте, але ж там ще велика купа місця незаповнена. А в умові чітко сказано - "заповнити УСЕ поле". І поле у вас 80х24, а єдиний цикл до числа - від 0 до 100. Вам тут взагалі не потрібні ніякі розрахунки, системні виклики і переведення рядків, просто виводьте 'X' 80*24 рази.

5

Re: Як виправити таку помилку при обході циклами?

koala написав:

просто виводьте 'X' 80*24 рази.

Sunny!  — раз-раз-раз... (з анекдота про Boney-M, поламаний ревербератор і ремонт радянським спецом)