Сап, двач, сорри за говнокод, я только учусь, но почему эта хуита всё равно выводит всё ячейки, вместо доступных?https://ideone.com/GvA0Hiпик - функция, в которой вся соль
бамп
вот так работает программасначала выбираем режим
потом через рандом выбирается очередь хода
потом идет сама игра, и там нужно вводить название ячейки, я их перечислил через цикл с проверкой(потом запилю, чтобы комп тоже расставлял крестики-нолики)
и вот тут происходит сама хуйняя ввел эту ячейку, но ее снова вывелохотя на втором пике она никак не могло пройти проверку
че не так-то блятья уже час думаюпиздос
Погоди, кое-чего переделаю и залью. Попробую. Минут 5.
>>165687305жду
алсо, так даже понятнее
bump
Прости конечно, но я не понимаю чего ты там нагородил. Куча каких-то ненужных символов, массивов.
Я Ща свой вариант залью, минутку.
>>165687290Они такие няши. В код не умею.
>>165687615могу комментарии написатьты этот >>165687305 анончик?
>>165687202 (OP)Разбор ошибок.1. Если можно передать ссылку на массив в функцию - передавай ее. Глобальные переменные почти запрещены.Что за pos[] и что за poz[] - это один массив и ты ошибся или два массива? Опять же symbol не принадлежит этой функции и не передается в параметрах. Это методическая ошибка.
>>165687202 (OP)> ++xИли я не понял твой код, или ты один из тех, кто ++х и х++ считает стилем программиста.
>>165687671Да. Тебе нужен всего один массив, типа int. Если клеточка занята ставим 1, если нет 0.
>>165687699Сюмбол глобальный у него.
>>165687397что за symbol? и у тебя там есть poz[] и pos[], аре ю долбаёб ? хотя бы кулстори о них
Опять же открывающаяся скобка находится не над закрывающейся, что снижает читабельность кода. Но для Си-педерастов это норма.
>>165687725> Но для Си-педерастов это норма.У тебя нетбинс загрузился, пидор.
Я даже в PHP ставлю скобки нормально. И они подсвечиваются нормально. Нетбинс пользуются пидоры, так как он написан на педерастичной java и загружается с SSD за 3 минуты.
>>165687701кстати да, лол, X++ пиши, очевидно, а то проебёшь элемент массивы
>>165687699>>165687723pos[] содержит переменные типа чара poz[] содержит строчки типа string>>165687725я вообще с java перекатился, мне так удобнее>>165687699>Если можно передать ссылку на массив в функцию - передавай ее.сейчас займусь
1) F4 в Total Commander никто не отменял.2) Всегда пиши комментарии.3) Лучше остановись и попляши на асфальте.
>>165687754у меня изначально было x++, просто решил проверить, вдруг из-за этого такая хуита происходит
>>165687766>F4 в Total Commanderу меня нет его> комментариия не планировал кому-то показывать код, поэтому и не делал их
>>165687754Ничего он не проебёт
>>165687780Хуита происходит из куча символов и данных.
>>165687709то есть, сделать массив из 9 переменных, то есть 9 клеточек, потом проверять, если клеточка заполнена не пробелом, то 1, а если пробелом, то 0?так у меня почти тоже самое
>>165687780Да, ты наверно совсем новичок, раз такую хуйню делаешь, включаешь дэбагер и идёшь по шагам, смотришь где и что проёбывается, методом тыка можно недель сидеть и ломать голову
>>165687880неделю занимаюсь, как по шагам ходить?
>>165687901Что за IDE?
>>16568774515 секунд с жесткого диска 7200, але
>>165687909визуал студио
Убери переменные a1 a2 a3 b1... и используй вместо них массив pos напрямую.
>>165687956https://www.youtube.com/watch?v=F5yh1linL_cТут посмотри, всё поймёшь. Научишься делать отладку(дэбаг) и больше таких вопросов не возникнет
>>165687962это идет оптимизация, на мою проблему никак не повлияет
Ты немного не понимаешь. Изменяя а1 а2 и т.д ты не меняешь значения в массиве pos а проверка идет по нему.
>>165688019в функции ChoosePos ты закидываешь symbol в чар переменные, а проверка идет по массиву
>>165688056>>165688059блятьсейчас проверю
>>165688096удачи с прогой, анонче
Просто смени в ChoosePos a1 = symbol на pos[1] = symbol
пиздец, вот это я тупойне доучил
спасибо, анончикии за отладку спасибо, буду юзать
>>165687202 (OP)> c++
>>165688183>ру текст>название переменных вроде x вместо каноничной i
>>165688224я учился по другой книжке, там был x в циклах
>>165687202 (OP)Слушай, а у тебя если symbol, скажем, "х". То у тебя будут выводиться все клетки, которые не заняты "x", то есть внимания на "о" ты не обращаешь и на то, ввёл ли я ту клетку, которую уже до меня заняли или она свободна?
>>165687202 (OP)Будь человеком, напиши класс доски. Напиши людские методы: getEmptyCells(), drawBoard() и прочие. Сам увидишь как все станет проще и понятнее.
>>165688304Он неделю назад вкатился. Вероятно он ещё не знает про классы ничего.
Хуле ты двумерную матрицу не сделаешь? Переделывай давай
>>165688339зачем мне использовать трактор, если я могу сделать это с помощью палки и камня?
>>165688266ну на самом деле это не принципиально, но обычно такие ебалы i и если у тебя например какой-нибудь двумерный массив i и j хреначишь. Гораздо проще потом чужие писульки разбирать когда все более-менее стандартизованно Алсо двачую выше анона, напиши нормальный класс доски со всеми приблудами и методами
>>165688290я еще не сделал второго игрока, но должно прийти все к тому, как ты скахал
>>165688376я в душе не ебу, что это за классыу меня же есть отдельная функция для карты
Кст проблема была в указателях. Когда ты пишешь a1 в массив то передается само значение а не ссылка на значение. Поэтому эти переменные оказываются не связанными. Либо организуй массив из ссылок либо ввобще ссылки не юзай. А так советую прочитать про концепцию ссылок и указателей.
>>165688395собственно классы это и есть вся суть, чтобы не городи хероту что у тебя на 1м пике. Грубо говоря вместо того, чтобы каждый раз в гараже на коленке собирать повозку машину, ты пишешь описание машиный твоей мечты, что она делать умеет а затем в программе просто создаешь экземпляры классов (позвонил на завод и они тебе привезли машину по описаниям) и не вникая как там работает движек двери и прочая ерунда просто делаешь действия нужные (например доехать из дома до магазина)алсо плюсы для первого языка маленько заебные
>>165688494оке, анончик, но мне это еще учить нужноя пока попробую в одном классе всё сделать
>>165688527собственно по мне это самое первое, что надо изучать - ООП, понимая основные принципы как оно делается уже вкатываешься в конкретный язык и там просто все сводится к тому, чтобы знать синтаксис + некоторые фичи\болезни языка и нужны библиотекиалсо одномерный масив для крестиков-ноликов парашка какая-то, как ты там проверяешь победу?
>>165688618пропишу все возможные варианты победытипа if ((pos[0] == symbol) && (pos[1] == symbol) && (pos[2] == symbol)) { gameOver = true; cout << "Победил игрок!"; }
>>165688395Смари, ебана.К примеру у тебя есть задача описать чайник. Он умеет греть воду, показывать текущую температуру, наполняться и опустошаться.Ты можешь, конечно, нагородить в основном коде кучу переменных, проверять значения, ручками все значения ставить. А еще надо проверять как эти переменные будут относиться с имеющейся программой. А еще надо проследить, чтобы случайно никакие значение не проебались.Сложно? Конечно сложно.А можно написать класс чайника, в котором ты опишешь все переменные связанные с чайником (свойства), все функции чайника (методы). Этот класс ничего не должен знать про остальную программу, а программа не должна знать про чайник ничего, кроме его методов. Вот тут и проявляется пролесть ООП: надо нагреть воду в чайнике - вызвал метод нагревания, надо долить в него воды - вызвал метод доливки, надо получить время, за которое вскипит вода - метод получения времени. И чайник сам уже внутри как-то решает как ему выполнять методы, а остальная программа об этих решениях даже не подозревает.
>>165688690А мог просто сделать двойной цикл, который будет выполнятся 6 раз, и 2 ручные проверкиПеределывай, блять, говорю
>>165688702но мне все равно надо научить чайник нагреваться, то есть внутри функции нагрева как-то оформить нагрев?
>>165688744Даже 3 раза можно
>>165688690и лепишь говнокод vs мог бы сделать двумерный массив с циклом, который обходит сначала по столбцу\строкам и смотрит где 3 символа и потом по диагонали. Та если нужен пердолинг с памятью наверняка есть готовые еще более быстрые алгоритмы
>>165688744двойной цикл и двумерный массив?
>>165688789так я учусь, анончикесли смогу это сделать с минимумом, то смогу и с более быстрыми алгоритмами
>>165688792Ну да, очевидно же, что поле для крестиков ноликов это матрица.Возможно, даже 2 раза будет выполнятся, но тут подумать уже надо. Можешь подумать и решить эту задачку
>>165688830вызов принят, анончик
>>165688824дак сделай изначально по нормальному, чтобы потом не переделывать 100500 раз. сделай двумерный массив и через него уже все остальное
>>165688339Собственно я бы сделал хэш-функцию видаint calcHash(std::string in_str) { if (in_str.length() != 2) return -1; for (auto & c : in_str) c = tolower(c); int fst_part = in_str[0] - 'a'; int snd_part = in_str[1] - '1'; if (fst_part > 2 || fst_part < 0) return -1; if (snd_part > 2 || snd_part < 0) return -1; int hash = fst_part * 3 + snd_part; return hash;}для облегчения доступа к элементам массива.
>>165687701++x прпавильн, x++ пишут дегенераты.
>>165688938Нихуя ты выдумал
>>165688938Слишком сложна
>>165688963Толсто.
>>165688963Это верно для старых компиляторов без оптимизации, думаю.Ну и не для класса инта же.
>>165688938делаем велосипед для прогулок по выходным@прихерачиваем туда атомный реактор @прихреначиваем туда автопилот и двигатель уровня теслы
>>165689098делаем велосипедаиз маленьких велосипедов
>>165689098@чтобы велосипед мог передвигаться, приделываем палку-прыгалку с джет-паком
сделал с двумерным массивом, а как проверять еще не придумал
>>165688938Ты вообще знаешь, что такое хэш, довн?
>>165689173@заказчику не нравится, что колеса в таком случае не крутятся@приделаем к ним лопасти, чтобы крутились от ветра
>>165688618>, как ты там проверяешь победу?int sum;for (int i = 0; i != 2) { sum = 0; sum = arr + arr[i + 3] + arr[i + 6]; if (sum == 6) return 1; if (sum == 3) return 2; sum = arr[i 3] + arr[i 3 + 1] + arr[i * 3 + 2]; if (sum == 6) return 1; if (sum == 3) return 2;}sum = arr[0] + arr[4] + arr[8];if (sum == 6) return 1;if (sum == 3) return 2;sum = arr[2] + arr[4] + arr[6];if (sum == 6) return 1;if (sum == 3) return 2;return 0;
>>165689276На вход функции свёртки - сообщение произвольной длины. На выход - фиксированной. Что не так?
>>165689060>>165689085Лано, чуваки. Вы победили....
>>165689497пробежав глазами мужик в целом говорит очевидные вещи. У тебя должно быть представление как это сделать без привязки к конкретному языку, а дальше ты просто пилишь это в конкретном.Как я выше написал, твою проверку можно в разы элегантнее сделать. 2 мерный массив, пробегаешь по всему массиву ища 3 в ряд совпадающих элемента, либо по последнему действию проверяешь относящиеся к заполненной клетке диагонали\ряд\столбецмимо убегаю через час качусь снова если тред не откинется
>>165689469> сообщение произвольной длины> строка из двух символовТы еблан?
>>165689497Не, ты конечно классный парень, спору нет. При постинкременте создаётся копия переменной. При преинкременте - нет. Но компилятор мелкософта стандартные циклы умеет оптимизировать так что у тебя не будет различий ни по памяти, ни по скорости в рантайме.
>>165689681Не не. Символов в строке сколько хочешь может быть, какие проблемы?
>>165689776Ты всегда подаешь строку из двух символов, ебанат. И у тебя вообще всего 9 элементов массива. Ты блять прочитай, зачем нужно хеширование.
так, анончики, чет я совсем не понял, как через двойной цикл проверить двумерный массив, чтобы можно было выиграть игру?
>>165689984Просто проверяешь, что в одной из 2 диагоналей или 3 строках, или 3 столбцов, одинаковые символы + что это за символ. Если все клетки заполнены, но никто не выиграл, то ничья.
>>165689980Подаёт тот, кто захочет вызвать функцию. А подать он может хуиту какую-либо. Хеширование нужно в том числе для быстрого доступа к объектам в памяти.
>>165690146просто я понимаюкак через двойной цикл это сделать?я могу, конечно, просто через 8 else if сделать, но это ебля
>>165690239> Хеширование нужно в том числе для быстрого доступа к объектам в памяти.Это сука кэширование, довн.Хэширование нужно, когда ты не можешь все данные хранить в массиве с прямым доступом за константу. Нахуй это нужно, когда у тебя 9 строк из 2 символов?
>>165687397Чувачёк, тебе надо 2 массива, один с названиями ячеек, другой со значениями. Про проходе циклом выводи названия ячеек если значение пустое. Всё.
>>165690438Чёт типаfor(i = 0; i < 9; i++)if(value == 0)printf(", %s ", name);
>>165690438уже сделали, там в другом проблема была
хули нам погромистам
>>165690555Нахуя тебе двойные массивы...
>>165690577>>165688830>>>165688876
>>165687290>я больше никогда>через 15 секунд показывает еще раз
>>165688376Из математики же пошла вся индексациякак и все программирование в целом
>>165687202 (OP)а разве можно чары сравнивать через ==? давно уже не обмазывался крестами
>>165688329Учитывая, что он перекатывался с джавы, то некий опыт быдлокодинга есть, а освоить классы дело 10-30 минут на уровне какой игры.
>>165688290Там нужно просто проверку на пробел делать по факту, надеюсь он догадается и не будет лепить чего-то типоif (symbol == 'o' || symbol == 'x')
>>165690400Массивы у тебя в памяти хранятся. Например ты пожелаешь посчитать как часто на двачах встречаются слова. Скорее всего ты после того как получишь достаточное тебе количество слов пропустишь их через Портера, потом захэшируешь и уж не знаю: кинешь ли в дерево эти данные или выделишь достаточно большой массив и по полученному числу будешь обращаться к нужному тебе участку памяти. Так и так либо за константу, либо за logn ты получишь выполнение операций. Что будет существенно быстрее, чем если бы ты сохранял явно словечки и потом бегал foreach-ем чтобы добавить счётчику искомого единичку. Конкретно в этом случае у нас просто упрощается процесс работы с массивом. Ну и убирает ненужный массив и тьму ненужных переменных, ифов и прочего говна.
>>165688483Это называется передача переменной по значению.В таком случае создаётся локальная копия переменной в функции и использовать такое с массивом не удобно хотя бы потому что не напасешься памятис другой стороны ты не изгадишь свои данные, но если ты не совсем дегрод, то ты и так не изгадишь
>>165690840по человечески это вообще надо делать не символами, а создать двухмерный массив клеток и работать с численными значениями, типа 0 пусто, 1 крестик, 2 нолик
>>165688690Блядь, что за костыли, пиздец.Лучше действительно сделать двумерный массив, с ним хоть легче будет, раз не хочешь класс создавать.
>>165690918Через енумератор.
>>165690749если только ты сравниваешь 2 чара
>>165690958еще раз>>165690253я тупой, сорри
>>165690918Да почему вы так топите за двумерный массив? Вроде памяти больше, а работать едва ли удобней.
>>165690918Нолик бы я сделал больше трёх, разве что. Чтобы сумму столбца\ряда можно было бы однозначно сравнить с 12\3
>>165690889Ты такой тупой, откуда ты вообще узнал про хэширование?У тебя двумерный массив из 9 элементов и строки вида "a1", "a2", ..., "c3", по которым тебе надо получить элемент массива. Какие нахуй хэши ты тут придумал, где тут что убирает, ебанат, ты только лишнюю функцию высираешь. Ты можешь просто найти i0 = s[0] - 'a', j0 = s[1] - '1' и получить элемент массива.> Массивы у тебя в памяти хранятся. Например ты пожелаешь посчитать как часто на двачах встречаются слова.Ты видишь разницу между твоим примером и этой микрозадачей?
>>165691205Да не особо больше, можно и через два места одномерных сделать.Просто в двумерном удобнее цикл по столбцу/строке писать, моет поэтому.
>>165691304Да забей, может потом получить з щеку как-нибудь и одумается такой хуйней заниматься, ещё бы при подсчёте суммы элементов статичного массива длиной 5 хэш использовал
>>165691304>просто найти i0 = s[0] - 'a', j0 = s[1] - '1'По сути ты так и делаешь, нет?
>>165691304>где тут что убирает, ебанат, ты только лишнюю функцию высираешь10,12,17-35 строки - точно.
>>165691654Если ты про оповский говнокод, там можно вообще почти всё убрать без всяких кэш функций.
>>165687671>могу комментарии написатьЕсли код нужно комментировать, то это хуёвый код.
>>165691205потому что поле это плоскость с двумя координатами, двухмерный массив тут сам собой напрашивается. вот ты берешь элемент arr[1][2] и сразу понимаешь где это
>>165691746сильное заявление
>>165691718Разумеется если была бы необходимость написать эту игру, возможно стоило бы убрать многое из написанного и практически заново написать всё. Я старался предложить путь оптимизации читаемости кода без необходимости переписывать всё.Что такое кэш функция?
>>165688216Язык богов же.
>>165691973> кэш функцияНет такого.