Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.05.2009, 23:31   #21
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Ну разве у меня не проще?))
Меньше - не значит проще )
Вам, чтобы обратиться к элементу, нужно заполнять массив. А у меня просто обращаетесь: A[1,2,1]
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 07.05.2009, 23:35   #22
Парсифаль
Форумчанин
 
Аватар для Парсифаль
 
Регистрация: 28.04.2009
Сообщений: 186
По умолчанию

Ну хорошо, Сазари - объявляю Вас Рыцарем Храмовником и Агнца. Отныне от Вас никогда не отвернется двуликий Бафомет. Наказываю охранять Гроб Господень и секрет местоположения Святого Грааля.

Кота тоже объявлю, когда заявится в теме.
А так буду думать над новой задачей.
Ruft ihm es zu durch alle Land', Der durch dies Wunder Gnade fand!
Hoch uber aller Welt ist Gott, Und Sein Erbarmen ist kein Spott
Парсифаль вне форума Ответить с цитированием
Старый 07.05.2009, 23:39   #23
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от Парсифаль
Ну хорошо, Сазари - объявляю Вас Рыцарем Храмовником и Агнца. Отныне от Вас никогда не отвернется двуликий Бафомет. Наказываю охранять Гроб Господень и секрет местоположения Святого Грааля.

Собственно, тут у нас у всех похоже, идея одна и та же.
Разница в реализации. Думаю, каждому удобнее свое )

Задачка заинтересовала.. Спасибо )
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 08.05.2009, 00:16   #24
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Да, интересная задачка. Вот вариант на C#. Принцип тот-же

Код:
    public class NArray<T>
    {
        public NArray(int N)
        {
            range = N;
            int k = 1;
            while (N > 0) { k *= range; N--; };
            array = new List<T>(k);
            while (k > 0) { array.Add(default(T)); k--; }
        }

        public NArray(NArray<T> a, int N, int M)
        {
            range = N;
            array = a.array;
            indexes = new List<int>();
            for (int i = 0; i < a.indexes.Count; i++) indexes.Add(a.indexes[i]);
            indexes.Add(M);
        }

        public T this[params int[] x]
        {
            get { return array[getIndex(x)]; }
            set { array[getIndex(x)] = value; }
        }

        public NArray<T> this[int x]
        {
            get { return new NArray<T>(this, range, x); }
        }

        public T Element
        {
            get { return this[new int[0]]; }
            set { this[new int[0]] = value; }
        }

        private int range;
        private List<int> indexes = new List<int>();
        private List<T> array;

        private int getIndex(int[] x)
        {
            int k = 1;
            int index = 0;
            for (int i = 0; i < indexes.Count; i++)
            {
                index += k * indexes[i];
                k *= range;
            }
            for (int i = 0; i < x.Length; i++)
            {
                index += k * x[i];
                k *= range;
            }
            return index; 
        }
    }

    class Example
    {
        static void Main()
        {
            int N = 3;
            NArray<int> a = new NArray<int>(N);

            a[1, 1, 1] = 123456;
            Console.WriteLine(a[1, 1, 1]);

            int n = a[new []{ 1, 2, 1}] = 789123;
            Console.WriteLine(n);

            a[0][1][2].Element = 456789;
            Console.WriteLine(a[0][1][2].Element);
alexBlack вне форума Ответить с цитированием
Старый 08.05.2009, 00:25   #25
Парсифаль
Форумчанин
 
Аватар для Парсифаль
 
Регистрация: 28.04.2009
Сообщений: 186
По умолчанию

alexBlack, в программе заранее не должно быть известно, какова размерность. А Вы ее задаете равной 3. Это должен делать пользователь программы.
Ruft ihm es zu durch alle Land', Der durch dies Wunder Gnade fand!
Hoch uber aller Welt ist Gott, Und Sein Erbarmen ist kein Spott
Парсифаль вне форума Ответить с цитированием
Старый 08.05.2009, 00:34   #26
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Парсифаль, так ведь это для примера. Тут тоже можно задать любую размерность )
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 08.05.2009, 01:23   #27
Парсифаль
Форумчанин
 
Аватар для Парсифаль
 
Регистрация: 28.04.2009
Сообщений: 186
По умолчанию

Да нет же. Размерность должен задать не программист. А пользователь должен ввести с клавиатуры. Она не должна быть явно в коде указана.
Ruft ihm es zu durch alle Land', Der durch dies Wunder Gnade fand!
Hoch uber aller Welt ist Gott, Und Sein Erbarmen ist kein Spott
Парсифаль вне форума Ответить с цитированием
Старый 08.05.2009, 01:33   #28
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от Парсифаль
Размерность должен задать не программист. А пользователь должен ввести с клавиатуры. Она не должна быть явно в коде указана.
Так она и так может вводиться пользователем )
И будет что-то вроде:
Код:
int N = Convert.ToInt32(Console.ReadLine());
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 08.05.2009, 01:36   #29
Парсифаль
Форумчанин
 
Аватар для Парсифаль
 
Регистрация: 28.04.2009
Сообщений: 186
По умолчанию

Ну а как он будет ссылаться на какой-то элемент, если в этом листинге он явно указал 3 пары квадратных скобок?
А может быть сколько угодно
Ruft ihm es zu durch alle Land', Der durch dies Wunder Gnade fand!
Hoch uber aller Welt ist Gott, Und Sein Erbarmen ist kein Spott
Парсифаль вне форума Ответить с цитированием
Старый 08.05.2009, 01:41   #30
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

А, вот оно что вы имеете в виду.
Ну тогда, наверное, действительно нужно передавать функции массив индексов ) Как в вашем варианте.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
2-х мерные массивы (С++) TheWanderer Помощь студентам 5 05.12.2008 14:35
Помогите кто может (Массивы 2-х мерные) raccooni Общие вопросы C/C++ 15 25.11.2008 23:55
помогите в QBasic'е 2-мерные массивы Sergmodern Помощь студентам 1 05.06.2007 08:39
конкурс программистов ! (первый конкурс) Alar Свободное общение 129 18.03.2007 00:50