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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Ввести x,y и в зависимости от того что введено - вывести 0 , 1 , или 2 http://www.cyberforum.ru/cpp-beginners/thread819289.html
Помогите сделать задачку...в зависимости какой будет х и y выводится на екран число. Я думал мб вот так, но не получается, выводит постоянно 1 и 2: #include <iostream.h> #include <conio.h> int main() { int x,y,c; cout<<"X: "; cin>>x;
C++ Создание дерева Возникли трудности при создании дерева. Ниже предоставил свои наработки, но как доделать не могу понять. Помогите разобраться. #include <stdio.h> #include <Windows.h> #include <time.h> /*Моя структура*/ struct tree { http://www.cyberforum.ru/cpp-beginners/thread819287.html
C++ Список. Дописать в начало элементы, которые входят в L1, но не входят в L2...
Cформировать список L из элементов, которые входят одновременно в списки L1 и L2. Дописать в начало элементы, которые входят в L1, но не входят в L2, а в конец - элементы, которые входят в L2, но не входят в L1
Открытие файлов через консоль C++
возможно ли открыть через консоль текстовый файл в формате док чтобы его содержимое не на консоль вывело а через ворд обычно открыло??
C++ загрузить в програму изображения формата jpg и получить доступ к каждому пискселю http://www.cyberforum.ru/cpp-beginners/thread819278.html
Весь вопрос в заголовке темы) надеюсь что подскажеет в какую сторну копать)
C++ ошибка в преобразованиях двумерного массива (для решения слау) Пишу прогу которая решает уравнение методом простых итераций,не дойдя собственно до самого метода обнаружил ошибку, при преобразовании матрицы по диагонали должны нули быть,но их почему то нет,в чем ошибка не могу понять,вроде формулы преобразования правильно записал,помогите пожалуйста,Прошу прощения за быдлокод #include <iostream> #include <conio.h> #define N 3 using namespace std; void... подробнее

Показать сообщение отдельно
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"
 
Текущее время: 18:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru