С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

Вот нашол такой код - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Работа с файлами http://www.cyberforum.ru/cpp-beginners/thread451093.html
Создайте файл.Каталог файлов.Выберите и занесите в отдельный файл сведения о файлах,размер которых превышает заданное число блоков. 4.4 Написание сообщений латиницей следует применять, только если...
C++ Сравнение срок 2х-мерного массива Доброго времени суток, стоит задача: В метании молота состязается n спортcменов. Каждый из них сделал m бросков. Победителем считается тот спортсмен, у которого сумма результатов по всем броскам... http://www.cyberforum.ru/cpp-beginners/thread451092.html
Указатели в С++ и Java. C++
Добрый вечер! Сейчас изучаю джаву и как оказалось, я все это время и С++ не знала. В литературе иногда встречатеся, что в С++ в функции передаются сами указатели, а в джаве значения указателей. Вот...
C++ многомерный массив
помогите сделать задачу через указатели Сформировать массив типа char размером в 7х5х8 элементов. Проинициализировать его случайными символами от A до Z. Вывести строки, в которых встретилась...
C++ Найдите ошибку... http://www.cyberforum.ru/cpp-beginners/thread451076.html
C++ изучать начал недавно. Вот написал программу и столкнулся с проблемой. #include <iostream.h> class Employee { public: void SetAge(int Age) { Age = itsAge; } ...
C++ Определить самое встречающееся число в массиве Определить, какое абсолютное значение встречается в массиве чаще чем другие. диапазон значений -50 - 50, размерность массива 200. То, что я сделала, это задала рандом массив значениями от -50 -... подробнее

Показать сообщение отдельно
DU
1484 / 1130 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
22.02.2012, 22:46
написал же что перед изменением координаты нужно проверить, не является ли она координатой стенки. прочитайте еще раз внимательно.

char map[15][20]; - в памяти все символы размещены последовательно.
поэтому map[2][20] эквивалентно map[3][0]; т.е. несмотря на выход за пределы ширины матрицы все сходит с рук. пока не подберетесь к самому краю массива (правый нижний угол).
еще вы перепутали x c y;

C++
1
2
3
4
5
6
7
8
9
10
//Вот как работает в вашей ситуации
// тут x == 19
map[y][19] = ' ';
map[y][18] = ' '; // ок. стерли буквы
 
x++; // после этого x == 20, т.е. выход за пределы ширины матрицы, но прога пока еще не падает.
// map[y][20] = 'Т'; // из-за выхода за пределы ширины матрицы это эквивалентно map[y+1][0] = 'T';
// поэтому выполняется такой код:
map[y+1][0] = 'Т';
map[y][19] = 'Т';
Еще раз:
Чтобы такого не было, перед выполнением стирания и записи сделайте проверку
C++
1
2
3
4
if (x < 19) // 20 - 1, где 20 - ширина матрицы.
{
   // тут манипуляции с матрицей.
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.