Клуб погромистов

  1. Оффлайн

    Kerbiter

    Модераторы

    Сообщений: 2912

    Усё о программировании и связанным - сюда. Если понадобится - заведём отдельные темы для языков.

    Тащемта щас пилю некое подобие шахматок на С - просто для тренировки. Вопросец - как сделать динамическую матрицу и потом обработать её функцией (передать ссылкой)? Все мои попытки либо не компилятся, либо выдают ошибку Segmentation Fault.

    Код в подписи на Гитхабе.

    И да, буду рад любым правкам в моём коде на ГитХабе, ссылка в подписи :)
    Сообщение отредактировал Kerbiter 28 февраля 2016 - 22:24

    GitHub
    Неактивен на сайте. Связаться со мной можно через Discord (Kerbiter#3128) и Telegram (@Kerbiter).

    28 февраля 2016 - 22:23 / #1
  2. Оффлайн

    Lynx

    Модераторы

    Сообщений: 2844

    Кербитер, так а покажи попытки и что хочешь сделать, а то секас по телепатору будет
    28 февраля 2016 - 22:30 / #2
  3. Оффлайн

    Kerbiter

    Модераторы

    Сообщений: 2912

    Lynx, ща

    ////////////////////////////////////////////////////////////////////////////////

    void make_board (const &side, char **board)
    {
    board[0][0] = 0x20; //ошибка выполнения
    for (i = 1; i <= side; i )
    board[i][0] = 0x30 i; //циферки
    for (i = 1; i <= side; i )
    {
    board[0][i] = 0x40 i; //буковки
    for (j = 1; j <= side; j )
    board[i][j] = (i j)%2 == 0 ? black : white; //определяем цвет клетки
    }
    }


    ////////////////////////////////////////////////////////////////////////////////


    int main()
    {
    cin >> side;

    char** board = new char*[side];
    for (i = 0; i < side; i)
    board[i] = new char[side];

    if (side < 10 && side > 0)
    {
    make_board(side, board);
    print_board(side, board);
    }
    else
    cout << "Incorrect input!";

    for (i = 0; i < side; i)
    delete [] board[i];
    delete [] board;

    getchar(); //pause after drawing
    }

    Сообщение отредактировал Kerbiter 28 февраля 2016 - 23:50

    GitHub
    Неактивен на сайте. Связаться со мной можно через Discord (Kerbiter#3128) и Telegram (@Kerbiter).

    28 февраля 2016 - 23:31 / #3
  4. Оффлайн

    Lynx

    Модераторы

    Сообщений: 2844

    Нафига ты вообще шестнадцатеричное представление символов используешь?

    char c = `a`;
    cout << c << endl << `a` << "
    No difference!";


    Замени название side на SideLength или что-то такое, а то не прозрачно
    Сообщение отредактировал Lynx 28 февраля 2016 - 23:39
    28 февраля 2016 - 23:40 / #4
  5. Оффлайн

    Kerbiter

    Модераторы

    Сообщений: 2912

    Lynx, а разве можно написать
    char c = `a`   1 //= `b`?

    Сообщение отредактировал Kerbiter 28 февраля 2016 - 23:44

    GitHub
    Неактивен на сайте. Связаться со мной можно через Discord (Kerbiter#3128) и Telegram (@Kerbiter).

    28 февраля 2016 - 23:43 / #5
  6. Оффлайн

    Lynx

    Модераторы

    Сообщений: 2844

    Фиг его знает что там такое, но с сылками явно что-то не то и до завтра я с этим не разберусь.
    А почему ты в прототипе пишешь
    void make_board (const &side, char **board)
    а потом передаешь один параметр
    make_board(side)
    ??? Может неплохо бы еще и массив в функцию передать?

    Кербитер писал:
    а разве можно написать
    1
    char c = `a` 1 //= `b`?


    Можно даже написать

    char b;
    b = 100;
    cout << b;

    28 февраля 2016 - 23:47 / #6
  7. Оффлайн

    Kerbiter

    Модераторы

    Сообщений: 2912

    Lynx, это я на скорую руку обновил код с гитхаба, актуальная версия на другом компе, щас просто забыл дописать

    GitHub
    Неактивен на сайте. Связаться со мной можно через Discord (Kerbiter#3128) и Telegram (@Kerbiter).

    28 февраля 2016 - 23:48 / #7
  8. Оффлайн

    Lynx

    Модераторы

    Сообщений: 2844

    зацени ;)

    int main()
    {
    char c;
    for (int i = 0; i <= 255; i ) {
    if (i == 26) i ;
    c = i;
    cout << c << endl;
    }

    Сообщение отредактировал Lynx 2 марта 2016 - 01:22
    28 февраля 2016 - 23:54 / #8
  9. Оффлайн

    Vorlon

    Посетители

    Сообщений: 28

    Ты указываешь аргументом функции указатель char **board, а потом пытаешься работать как с массивом, параметры которого не определенны. Как интересно компилятор поймёт размерности массива?
    28 февраля 2016 - 23:55 / #9
  10. Оффлайн

    Lynx

    Модераторы

    Сообщений: 2844

    Vorlon, точно, кроме указателя на первый элемент нужно еще размерность массива передавать!
    28 февраля 2016 - 23:58 / #10
  11. Оффлайн

    Vorlon

    Посетители

    Сообщений: 28

    Выглядит не очень, но должно работать:


    void make_board (const &side, char *board, int rownum)
    {

    *board = 0x20;

    for (int i = 1; i <= side; i )
    *(board i*rownum) = 0x30 i;

    for (i = 1; i <= side; i )
    {
    *(board i) = 0x40 i;
    for (int j = 1; j <= side; j )
    *(board i*rownum j) = (i j)%2 == 0 ? black : white;
    }
    }



    Сообщение отредактировал Vorlon 29 февраля 2016 - 00:21
    29 февраля 2016 - 00:20 / #11
  12. Оффлайн

    Kerbiter

    Модераторы

    Сообщений: 2912

    Lynx, Vorlon, а как? яжучусь токмо :)

    Vorlon, что-то не совсем я код понял, мне ж надо через матрицу, чтоб потом её редактировать
    Сообщение отредактировал Kerbiter 29 февраля 2016 - 00:50

    GitHub
    Неактивен на сайте. Связаться со мной можно через Discord (Kerbiter#3128) и Telegram (@Kerbiter).

    29 февраля 2016 - 00:52 / #12
  13. Оффлайн

    Lynx

    Модераторы

    Сообщений: 2844

    Кербитер, ну тогда в плане обучения расскажи что такое указатель :)
    29 февраля 2016 - 00:57 / #13
  14. Оффлайн

    Kerbiter

    Модераторы

    Сообщений: 2912

    Lynx, указатель - переменная, содержащая адрес другой переменной в памяти
    Сообщение отредактировал Kerbiter 29 февраля 2016 - 01:09

    GitHub
    Неактивен на сайте. Связаться со мной можно через Discord (Kerbiter#3128) и Telegram (@Kerbiter).

    29 февраля 2016 - 01:08 / #14
  15. Оффлайн

    Lynx

    Модераторы

    Сообщений: 2844

    Кербитер, а указатель на массив?
    29 февраля 2016 - 01:12 / #15
  16. Оффлайн

    Kerbiter

    Модераторы

    Сообщений: 2912

    Lynx, содержащая указатель на первый элемент массива (а[0] например)

    GitHub
    Неактивен на сайте. Связаться со мной можно через Discord (Kerbiter#3128) и Telegram (@Kerbiter).

    29 февраля 2016 - 01:17 / #16
  17. Оффлайн

    Lynx

    Модераторы

    Сообщений: 2844

    Кербитер, а как получить указатель на последний элемент?
    29 февраля 2016 - 01:18 / #17
  18. Оффлайн

    Kerbiter

    Модераторы

    Сообщений: 2912

    Lynx, перемножить координаты последнего элемента и добавить к адресу первого?
    Сообщение отредактировал Kerbiter 29 февраля 2016 - 01:21

    GitHub
    Неактивен на сайте. Связаться со мной можно через Discord (Kerbiter#3128) и Telegram (@Kerbiter).

    29 февраля 2016 - 01:20 / #18
  19. Оффлайн

    Lynx

    Модераторы

    Сообщений: 2844

    Кербитер, Э Это в смысле для многомерного массива? Ну ок, а в общем случае чему равны эти координаты?

    Я собственно к тому, что без "координат" последнего элемента которые и есть размерность массива, одним указателем на первый элемент массив описать нельзя, поэтому передавать в функцию надо не только указатель на первый элемент, но и количество этих элементов. Просто вот числом передавать.
    funk(const int *array, int NumRows, int NumCols)
    29 февраля 2016 - 01:32 / #19
  20. Оффлайн

    Kerbiter

    Модераторы

    Сообщений: 2912

    Кербитер писал:
    const &side
    Lynx, я что здесь указываю?

    GitHub
    Неактивен на сайте. Связаться со мной можно через Discord (Kerbiter#3128) и Telegram (@Kerbiter).

    29 февраля 2016 - 17:56 / #20

Статистика форума, пользователей онлайн: 0 (за последние 10 минут)

---

Администраторы | Модераторы | Хорошие люди | Посетители | Новичок

Создано тем1934 Всего сообщений158044 Пользователей19234 Новый участникGilia
Последние сообщения с форума
Loading...

Нашли ошибку?
Вы можете сообщить об этом администрации.
Выделив текст нажмите Ctrl+Alt