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

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

Войти
Регистрация
Восстановить пароль
 
 
jake09
 Аватар для jake09
0 / 0 / 0
Регистрация: 20.11.2014
Сообщений: 20
#1

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

20.11.2014, 23:07. Просмотров 828. Ответов 22
Метки нет (Все метки)

Натупил здесь наверное сильно, подскажите ребят, а то долго уже сиджу над этим... Где ошибки? Программу компилирует, но потом выбивает.

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++
C++ В С++ может ли argv быть двухмерным массивом?
Степень вывести через указатель,a десятичный логарифм через функцию рекуренционную C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
3365 / 1687 / 448
Регистрация: 18.10.2014
Сообщений: 3,095
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()
C++ Не могу разобраться как сделать указатель функции с динамич. массивом

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

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

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