Форум программистов, компьютерный форум, киберфорум
Наши страницы

Массив: каким образом можно изменить размер многомерного массива - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Ввести x,y и в зависимости от того что введено - вывести 0 , 1 , или 2 http://www.cyberforum.ru/cpp-beginners/thread819289.html
Помогите сделать задачку...в зависимости какой будет х и y выводится на екран число. Я думал мб вот так, но не получается, выводит постоянно 1 и 2: #include <iostream.h> #include <conio.h> ...
C++ Создание дерева Возникли трудности при создании дерева. Ниже предоставил свои наработки, но как доделать не могу понять. Помогите разобраться. #include <stdio.h> #include <Windows.h> #include <time.h> ... http://www.cyberforum.ru/cpp-beginners/thread819287.html
C++ Список. Дописать в начало элементы, которые входят в L1, но не входят в L2...
Cформировать список L из элементов, которые входят одновременно в списки L1 и L2. Дописать в начало элементы, которые входят в L1, но не входят в L2, а в конец - элементы, которые входят в L2, но не...
Открытие файлов через консоль C++
возможно ли открыть через консоль текстовый файл в формате док чтобы его содержимое не на консоль вывело а через ворд обычно открыло??
C++ загрузить в програму изображения формата jpg и получить доступ к каждому пискселю http://www.cyberforum.ru/cpp-beginners/thread819278.html
Весь вопрос в заголовке темы) надеюсь что подскажеет в какую сторну копать)
C++ Ошибка в преобразованиях двумерного массива (для решения СЛАУ) Пишу прогу которая решает уравнение методом простых итераций,не дойдя собственно до самого метода обнаружил ошибку, при преобразовании матрицы по диагонали должны нули быть,но их почему то нет,в чем... подробнее

Показать сообщение отдельно
Shaman163
4 / 4 / 0
Регистрация: 22.12.2011
Сообщений: 134
28.03.2013, 14:50  [ТС]
Блин, ребят не могу уже, помогите вернуть массив из библиотеки.
Немного подумав пришёл к выводу что на весь класс нужно использовать 1 глобальный массив "result"
который в итоге я и буду вытаскивать из библиотеки.
на данный момент код выглядит вот так:
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
// .h файл
    public class SquareMatrix
    {
        public:
        void CellularNoiseMap(int Size, int pointNum, int seed);
        Byte result[8192][8192];
           }
//.cpp собственно сам класс
    void SquareMatrix::CellularNoiseMap(int Size, int pointNum, int seed)
    {
        Random rnd(seed);
        int cellSize = Size / pointNum;
        int xBuffer = 0;
        int yBuffer = 0;
        Point* ptArray = new Point[size_t(pointNum)];
 
        for (int x = 0, step = 0; x != pointNum * pointNum; x++)
        {
            ptArray[x] = Point(rnd.Next(xBuffer, xBuffer + cellSize), rnd.Next(yBuffer, yBuffer + cellSize));
            xBuffer += cellSize;
            step++;
            if (step == pointNum)
            {
                yBuffer += cellSize;
                xBuffer = 0;
                step = 0;
            }
        }
 
        for(int x=0;x!=Size;x++)
            for(int y=0;y!=Size;y++)
            {
                    int minDist = INT_MAX;
                    for (int xx = 0; xx != pointNum * pointNum; xx++)
                    {
                        int dist = (int)sqrt(pow((float)ptArray[xx].X - x, 2) + pow((float)ptArray[xx].Y - y, 2));
                        int dist2;
 
                        int dx = abs(x - ptArray[xx].X);
                        int dy = abs(y - ptArray[xx].Y);
                        if (dx > Size / 2)
                            dx = Size - dx;
                        if (dy > Size / 2)
                            dy = Size - dy;
 
                        dist2 = (int)sqrt((float)(dx * dx + dy * dy));
 
                        if (minDist > dist)
                            minDist = dist;
                        if (minDist > dist2)
                            minDist = dist2;
                    }
 
                    int tmp = (int)((float)minDist / cellSize * 255);
                    if (tmp > 255)
                        tmp = 255;
                    result[x][y] = (Byte)tmp;
            }
    }
Но! как можно догадаться ни метод, ни массив невидимы снаружи библиотеки.
Проблема решается использованием модификатора ref, но в таком случае студия начинает ругаться на массив.
Говоря что то вроде - "использование стандартных массивов в управляемом классе невозможно".
Как итог - я в безвылазном тупике..
PS:
я использую фиксированную длинну массива в 8192, но это не совсем то что мне нужно.
По логике вещей, при вызове длинна массива должна изменятся на размерность "int Size"
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru