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

Работа с двухмерным динамеческим массивом через указатель - C++

Восстановить пароль Регистрация
 
 
jake09
 Аватар для jake09
0 / 0 / 0
Регистрация: 20.11.2014
Сообщений: 20
20.11.2014, 23:07     Работа с двухмерным динамеческим массивом через указатель #1
Натупил здесь наверное сильно, подскажите ребят, а то долго уже сиджу над этим... Где ошибки? Программу компилирует, но потом выбивает.

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <math.h>
 int main()
 {
    srand(time(NULL));
    const int size_x = 4, size_y = 5, m = 20;
    int **matrix, i, j, d, n[4] = {1,2,3,4}, s;
    matrix = malloc(m*sizeof(int**));
    for (i = 0; i < size_x; i++)
    {
        for (j = 0; j < size_y; j++)
        {
            matrix[i][j] = (rand() % 20)-10;
            d = fabs(matrix[i][j]);
            if((j+1)==d)
            {
                   s++;
            }
        }
        printf("For line %d number of elements that matched is = %d\n", n[i],s);
        free(matrix);
    }
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.11.2014, 23:07     Работа с двухмерным динамеческим массивом через указатель
Посмотрите здесь:

Доработать программу с массивом двухмерным C++
Работа с двухмерным массивом C++
C++ Управление двухмерным массивом из функции
C++ Развлечения с массивом через указатель
C++ В С++ может ли argv быть двухмерным массивом?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TheCalligrapher
С чаем беда...
Эксперт С++
 Аватар для TheCalligrapher
2785 / 1431 / 393
Регистрация: 18.10.2014
Сообщений: 2,629
21.11.2014, 05:47     Работа с двухмерным динамеческим массивом через указатель #21
Цитата Сообщение от true_bugmaker Посмотреть сообщение
До сих пор неясно когда же ты явишь нам чудо, выделив и удалив динамический массив без циклов.
Я смотрю, пошло верчение хвостом... Ну-ка и я попробую "Динамический" в терминологии С++ означает - выделенный в динамической памяти. Примеры я уже привел

А теперь серьезнее: ни о каких "динамических массивах" речь не шла. С чего это вдруг? Тема массивов динамического размера была закрыта моей ссылочкой в сообщении #4. Там по ссылочке вы найдете и циклы, и массивы указателей...

А разговор здесь шел о многомерных языковых массивах. Ничего "динамического". Вы же мне сами цитату из стандарта в нос тыкали. Вы ведь понимаете, надеюсь, что в стандарте пишут именно о языковых массивах, а не о ваших доморощенных массивах указателей? Сообщение #8 посмотрите. Где там слово "динамический"?

Цитата Сообщение от true_bugmaker Посмотреть сообщение
А во втором, использовать расширение, не толстовато ли? Почему сразу не либу какую-нибудь?
Ну, ну, ну, опять верчение хвостом пошло... Да, могу и либу! В чем проблема-то? Какое это имеет значение, расширение это или нет, либа это или нет?

Вопрос не в том "либа" ли это, "расширение" ли это, а в том, используют ли они "циклы"TM и "массивы указателей"TM. Вы нам тут распинались, что невозможно создать массив динамического размера без "циклов" и "массивов указателей". Так а как же это удается нашему "расширению"? Это что какое-то волшебное расширение, искажающее саму ткань реальности и делающее невозможное возможным? Или вы считаете, что там в этом "расширении" где-то спрятаны эти "циклы" и "массивы указателей"? Если так, то покажите же нам, где они спрятаны.

P.S. В языке С VLA являются не "расширением", а опциональной фичей, и то опциональной только в компиляторах языка С11. В языке С99 VLA обязательны. В любом случае, это к делу не относится и заниматься дешевым переводом стрелок на посторонние темы я запрещаю.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
true_bugmaker
28 / 5 / 1
Регистрация: 18.11.2014
Сообщений: 68
21.11.2014, 06:26     Работа с двухмерным динамеческим массивом через указатель #22
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
А теперь серьезнее: ни о каких "динамических массивах" речь не шла. С чего это вдруг?
С того что обсуждение началось с этого комментария, почему бы и нет?

двумерный динамический массив размерностью (size_x, size_y) следует выделять так, потому что по факту в сях нету двумерных массивов, создаётся одномерный массив из int*, указателей на одномерные массивы int:
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Вы же мне сами цитату из стандарта в нос тыкали. Вы ведь понимаете, надеюсь, что в стандарте пишут именно о языковых массивах, а не о ваших доморощенных массивах указателей? Сообщение #8 посмотрите. Где там слово "динамический"?
Речь шла о том, что массивы в с++ ведут себя иначе, чем просто многомерные массивы, и что динамическое их выделение - одна из особенностей, по которой это заметно. Ты же стал утверждать, в какой-то конкретной или нескольких реализациях для некоторых частных случаев, например для статических многомерных массивов, указатели в явном виде в памяти не располагаются потому что массивы в с++ многомерны, а не потому что в этом частном случае нет никакой надобности располагать в памяти эти указатели, раз уж все адреса извесны на этапе компиляции, неизменяемы и все обращения к ним в этом частнном случае можно заменить на прямые адреса, верно? Или цитат с перовй страницы понадёргать?

Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Какое это имеет значение, расширение это или нет, либа это или нет?
Такое, что оно умышленно скрывает обсуждаемые нами понятия при помощи "синтаксического сахара".

Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Так а как же это удается нашему "расширению"?
Точно так же как удаётся создавать статические на этапе компиляции, тоже без циклов.

Цитата Сообщение от TheCalligrapher Посмотреть сообщение
В любом случае, это к делу не относится и заниматься дешевым переводом стрелок на посторонние темы я запрещаю.
Есть ли у тебя власть запрещать мне что-либо?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.11.2014, 15:47     Работа с двухмерным динамеческим массивом через указатель
Еще ссылки по теме:

C++ как сделать эту задачу с двухмерным массивом задание в теме
C++ Ошибка с двухмерным массивом
C++ Работа с массивом с через strcpy_s()

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
jake09
 Аватар для jake09
0 / 0 / 0
Регистрация: 20.11.2014
Сообщений: 20
22.11.2014, 15:47  [ТС]     Работа с двухмерным динамеческим массивом через указатель #23
Спасибо ребят, все получилось
Yandex
Объявления
22.11.2014, 15:47     Работа с двухмерным динамеческим массивом через указатель
Ответ Создать тему
Опции темы

Текущее время: 12:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru