Странно работает функция C++

166
09 мая 2019, 15:40

В программе пишутся координаты и длина линии. почему-то не работает х6 y3 длина 3

#include <iostream>
using namespace std;
const int S = 10;
char MAP[S][S];
//выводит карту на экран
void display()
{
    system("cls");
    for (int i = 0; i < S; i++)
    {
        for (int j = 0; j < S; j++)
        {
            cout << MAP[i][j] << " ";
        }
        cout << endl;
    }
    cout << endl << endl;
}
//закрашивает пиксель
void fillP(int x, int y)
{
    MAP[y - 1][x - 1] = '#';
}
//закрашивает несколько пикселей
void fillP(int x, int y, int counter)
{
    for (int i = x; i <= counter; i++)
    {
        MAP[y - 1][i - 1] = '#';
    }
}
int main()
{
    fillP(6, 3, 3);
    fillP(2,7,8);

    display();
    system("pause");
    return 0;
}
Answer 1

Так у вас в цикле условие странное/бессмысленное

for (int i = x; i <= counter; i++)

Как же это будет работать, если изначально x равно 6, а counter равно 3? Вы сравниваете координату с количеством. Это примерно как сравнивать километры с литрами.

Вы уж определитесь, как именно вы хотите реализовать этот цикл. Либо цикл реализуется в единицах количества

for (int i = 0; i < counter; i++)
  MAP[y - 1][x + i - 1] = '#';

либо в единицах координат

for (int i = x; i < x + counter; i++)
  MAP[y - 1][i - 1] = '#';

А у вас получился какой-то бессмысленный "гибрид" из этих двух вариантов.

READ ALSO
C++. Keyboard Input. Отлов нажатия

C++. Keyboard Input. Отлов нажатия

Всем доброго времени сутокВозможно, дубликат, но пока действенной инфы(кроме либы SDL и std::cin) не увидел

142
&hellip; в параметрах шаблонной функции

… в параметрах шаблонной функции

В чём разница между следующими объявлениями? Как правильно вызывать оба варианта?

149