Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
mr_mczakenberg
65 / 65 / 31
Регистрация: 10.04.2015
Сообщений: 281
#1

Не хотите ли немного магии? [адресация char] (обращение к масиву через элемент соседнего массива) - C++

20.07.2015, 08:41. Просмотров 246. Ответов 5

Небезызвестные крестики-нолики.
Со вчера у меня Компьютер решил изменить свой алгоритм работы и вдруг поставил нолик там, где я его не ждал вовсе.
Где он не мог его поставить вообще, т.к. если нет 100% варианта победы/проигрыша - он ничего не ставит.

Имеем
C++
1
char pole [pole_size_x][pole_size_y]; //собственно наше поле размером X на Y
в данном случае x=y=3
и код на коленке.

Т.к. автор(плохой я человек) не догадался везде тыкнуть проверки на выход за пределы поля 3х3(пока что),
C++
1
left+1 == 3 //с выходом за пределы поля (0,1,2)
и
C++
1
top-1 == -1 //с выходом за пределы в минус
оказалось действительным.

Вот только выхода за пределы не было...
top = -1 успешно проверялось без вылета ,
а вышеуказанная клетка pole[0][3] и вовсе успешно обработалась для вставки туда значения для победы..
SetResult в дебаге мне и правда сказал что функция ставит значение в клетку [0][3] что "порадовало".

Вот только клетка почему-то влепилась в [1][0], т.е. в следующую клетку массива, после [0][2].

Умный С++ решил избавиться от ошибок и сделать вид что он умный?
Миниатюры
Не хотите  ли немного магии? [адресация char] (обращение к масиву через элемент соседнего массива)  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.07.2015, 08:41     Не хотите ли немного магии? [адресация char] (обращение к масиву через элемент соседнего массива)
Посмотрите здесь:

Обращение к элементу массива через адрес - C++
#include "a.h" #include <iostream> #include<stdio.h> using namespace std; void vvod(float mas,int n); void calc(float...

Обращение к элементам динамического массива через указатели - C++
Само задание написано внизу в коментарии! Заранее спасибо! #include <conio.h> #include <stdio.h> #include <iostream> using...

копировать элемент массива String в массив char - C++
Приветствую Вас, дорогие форумчане, помогите кто может в следующем вопросе, имеется массив String с одним элементом, размером более 800...

Обращение к элементам массива через биты некоторого числа - C++
Пусть есть массив Mass из 10 элементов и число А = 510 = 0...0 01012. Мне надо обратиться к 0 и 2 элементам (или к 7 и 9 - это как...

Функция: вернуть максимальный элемент массива типа char - C++
Разработать функцию в которую передается массив типа char, который возвращает максимальный элемент этого массиа

Задача Таблица. За одно обращение к каждому элементу массива необходимо каждый элемент заменить ближайшим большим следующим за ним - C++
Не могу решить задачу( В массиве А размера n за одно обращение к каждому элементу массива необходимо каждый элемент заменить ближайшим ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Evg
Эксперт CАвтор FAQ
17536 / 5774 / 370
Регистрация: 30.03.2009
Сообщений: 15,891
Записей в блоге: 26
20.07.2015, 08:50     Не хотите ли немного магии? [адресация char] (обращение к масиву через элемент соседнего массива) #2
Открой любую книжку по Си и почитай раздел про массивы. И запомни враз и навсегда. Если что-то работает не так - ищи ошибки у себя, а не у других

http://codepad.org/36vkht6q
Max Dark
шКодер самоучка
1813 / 1614 / 588
Регистрация: 09.10.2013
Сообщений: 3,618
Записей в блоге: 6
Завершенные тесты: 2
20.07.2015, 08:50     Не хотите ли немного магии? [адресация char] (обращение к масиву через элемент соседнего массива) #3
mr_mczakenberg, никакой магии...
Ваш массив по сути представляется сплошным куском памяти
C++
1
2
3
// pole[0]  pole[1]  pole[2]     pole[sz-1]
// [=======][=======][=======]...[=======]
//   ^pole[0][1]        ^pole[2][2]
Вылет при выходе за границы будет при попытке прочитать/записать вне принадлежащей программе памяти
Но, как вы понимаете, выход за границы является логической ошибкой.
Ilot
Модератор
Эксперт С++
1807 / 1164 / 226
Регистрация: 16.05.2013
Сообщений: 3,060
Записей в блоге: 5
Завершенные тесты: 1
20.07.2015, 08:51     Не хотите ли немного магии? [адресация char] (обращение к масиву через элемент соседнего массива) #4
Двумерные массивы храняться в памяти как одномерные. Так, что все логично.
mr_mczakenberg
65 / 65 / 31
Регистрация: 10.04.2015
Сообщений: 281
20.07.2015, 08:52  [ТС]     Не хотите ли немного магии? [адресация char] (обращение к масиву через элемент соседнего массива) #5
Всем спасибо.
Как оказалось все намного проще и никакой магии.

Можно закрывать.
SatanaXIII
20.07.2015, 11:07     Не хотите ли немного магии? [адресация char] (обращение к масиву через элемент соседнего массива)
  #6

Не по теме:

mr_mczakenberg, если вас спросят "умеете ли вы стрелять себе в ногу", то можете теперь с гордостью отвечать "да".

Yandex
Объявления
20.07.2015, 11:07     Не хотите ли немного магии? [адресация char] (обращение к масиву через элемент соседнего массива)
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru