Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.11.2019, 17:47   #1
dimavfox
Новичок
Джуниор
 
Регистрация: 24.11.2019
Сообщений: 1
По умолчанию Как исправить эту ошибку при обходе матрицы? C++

Код:
#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;
}
На первой фото, направление обхода, у меня это работает правильно, обходит по такому же направлению.
Но когда номер столбца слишком большой (j>y, j>x), то происходит неправильный вывод ( второе фото).
Как исправить?
Размер поля 80х24 ( 80 столбцов, 24 строки )
Изображения
Тип файла: png 213223.png (12.2 Кб, 24 просмотров)
Тип файла: jpg photo_2019-11-23_20-13-20.jpg (71.0 Кб, 22 просмотров)
dimavfox вне форума Ответить с цитированием
Старый 25.11.2019, 08:16   #2
Алексей1153
фрилансер
Форумчанин
 
Регистрация: 11.10.2019
Сообщений: 980
По умолчанию

Цитата:
Сообщение от dimavfox Посмотреть сообщение
Как исправить?
1) для начала избавиться от всех магических констант. Пусть будет общий вид
2) в консоль вывести координаты всего пути прохождения (вместо вывода циферок)
3) определить, где путь "ломается"
4) отладчик в руки - и с момента перелома разбираться
Алексей1153 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Delphi] нужно исправить ошибку. задача заключается в том, чтобы найти наименьший и наибольший элемент матрицы. bulgar Фриланс 5 28.05.2019 12:36
Исправить ошибку в программе на С++ (удаление строки и столбца из матрицы по условию) Ultran Помощь студентам 0 06.01.2013 21:47
как исправить ошибку Katrina* Паскаль, Turbo Pascal, PascalABC.NET 9 21.12.2011 00:17
построить вектор по количеству элементов в i-й строке матрицы А (Delphi7 исправить ошибку) Анастасья Помощь студентам 3 04.04.2011 19:09