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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.07.2011, 18:51   #1
Vladislava-smile
Пользователь
 
Регистрация: 29.07.2011
Сообщений: 10
По умолчанию Подкиньте идею - работа с 1296 матрицами

Народ, помогите кто может, я просто не понимаю что использовать. Задача: Мне нужно где-то сохранить 1296 матриц размерностью 4 на 4, чтобы потом была возможность работать с числами в каждой из этих матриц (там надо считать сумму в каждой строке и столбце). Эти матрицы - все магические квадраты. Как-то так. Мне желательно идею и ссылки где можно про это прочитать (желательно с примерами)
Vladislava-smile вне форума Ответить с цитированием
Старый 29.07.2011, 19:23   #2
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

смотря как надо. можно выделить в памяти массив, размером 1296 * 4 * 4 * sizeof(int) и смещениями обращаться к своим матрицам. памяти займет всего 81 кб, работать будет очень быстро. т.к ты знаешь кол-во матриц, другие атд нет смысла предлагать.
не хочешь гемора - напиши свой мини класс QuadMatrix и запихни в вектор, предварительно зарезервировав память под вектор (reserve метод)
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 29.07.2011, 21:59   #3
Vladislava-smile
Пользователь
 
Регистрация: 29.07.2011
Сообщений: 10
По умолчанию

А можно про второй способ по подробнее, а то не совсем понятно все. Я никогда не работала с классами до этого, но очень интересно. Заранее спасибо. =)
Vladislava-smile вне форума Ответить с цитированием
Старый 29.07.2011, 22:38   #4
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2Vladislava-smile
ну я не собираюсь тебе класс матрицы реализовывать. если с классами не работала, тогда пиши на си. первый способ идеальный. я бы так и делал
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 29.07.2011, 22:51   #5
Vladislava-smile
Пользователь
 
Регистрация: 29.07.2011
Сообщений: 10
По умолчанию

Окей, так и сделаю, только ты еще не мог бы подсказать кроме того как вручную заполнять эти матрицы данными, может есть какой другой способ? Я про то что если вручную - это сколько строк он компилить будет?

Может как-то в другой программе все заполнять, а потом ссылаться на нее?

Последний раз редактировалось Stilet; 30.07.2011 в 12:48.
Vladislava-smile вне форума Ответить с цитированием
Старый 29.07.2011, 23:02   #6
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2Vladislava-smile
никто вручную такой объем заполнять не будет. обычно эти данные грузятся из какого-либо сгенерированного файла. смотря что за данные, откуда ты их получаешь. не из космоса же

Цитата:
Я про то что если вручную - это сколько строк он компилить будет?
не распарсил. при чем тут кол-во строк от метода ввода данных?
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 29.07.2011, 23:12   #7
Vladislava-smile
Пользователь
 
Регистрация: 29.07.2011
Сообщений: 10
По умолчанию

Я имела в виду, что если заполнять в самом коде, как статический массив. А с какого документа проще всего грузить, с txt наверно? И возможно это вообще? Или с экселя?
Vladislava-smile вне форума Ответить с цитированием
Старый 29.07.2011, 23:23   #8
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2Vladislava-smile
ну можно статически забить, если входящие данные всегда одни и те же. грузить можно из любого файла, зная его структуру. простейшая структура файла для твоей задачи - набор чисел через разделитель. т.е первые 4 числа - первая матрица (x1, x2, y1, y2), следующие 4 числа - вторая матрица. и тд. в памяти соответственно так же расположить одним массивом, просто через вспомогательные функции обращаться к конкретным элементам конкретной матрицы. а можно и трехмерный массив сделать на стеке. в общем, смотря как тебе удобнее

если генерить, то будет выглядеть как то так

Код:
#include <stdio.h>

#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))

static int arr[][2][2] = {
    {
        { 0, 0 },
        { 1, 1 }
    },
    {
        { 1, 1 },
        { 2, 2 }
    },
    {
        { 2, 2 },
        { 3, 3 }
    },
};

int main()
{
    int i;

    for (i = 0; i < ARRAY_SIZE(arr); i++) {
        printf("%d %d\n%d %d",
            arr[i][0][0], arr[i][0][1], arr[i][1][0], arr[i][1][1]);
        printf("\n-----------------------------\n");
    }

    return 0;
}
пс. даже вот так лучше (пофиксил)
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance

Последний раз редактировалось pproger; 30.07.2011 в 00:03.
pproger вне форума Ответить с цитированием
Старый 30.07.2011, 06:30   #9
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от pproger Посмотреть сообщение
первые 4 числа - первая матрица (x1, x2, y1, y2),
Не суть важно, но у ТС матрица 4 * 4, т.е 16-ть элементов.
Но пример 2 * 2 более нагляден.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 30.07.2011 в 06:37.
Smitt&Wesson вне форума Ответить с цитированием
Старый 30.07.2011, 07:38   #10
An1ka
C++,DirectX/OpenGL
Форумчанин
 
Регистрация: 09.01.2011
Сообщений: 422
По умолчанию

Можно еще структуру сделать:
Код:
struct matrix4x4
{
  int m[4][4];
};

matrix4x4 matrix_array[1296];
An1ka вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подкиньте идею ilsen Помощь студентам 3 15.11.2010 16:52
подкиньте идею ronny137 Помощь студентам 4 03.05.2010 00:22
Подкиньте идею... Egik_net Microsoft Office Access 9 18.10.2009 01:08
Подкиньте идею, пожайлуста frankk Общие вопросы C/C++ 2 08.06.2008 19:15