Форум программистов и сисадминов CyberForum.ru
Вернуться   Форум программистов и сисадминов CyberForum.ru > Форум Форум программистов > Форум C++ > Форум С++ для начинающих
Восстановить пароль Регистрация

Ответ Создать новую тему
 
Старый 21.04.2013, 17:59   #1
stopanko
Новичок
 
Регистрация: 10.05.2012
Сообщений: 13
Репутация: 1 (1)
Представление матрицы в виде векторов Айлиффа / С++ для начинающих

Нужно реализовать представление матрицы методом Айлиффа. С принципом ознакомился но как реализовать не знаю
http://samoucka.ru/document24926.html
Хелп плис. Если можно маленький пример с матрицей 2 на 2 или 4 на 4 на c# или на с++.
Старый 22.04.2013, 01:00   #2
lemegeton
Форумчанин
 
Аватар для lemegeton
 
Регистрация: 29.11.2010
Сообщений: 2,465
Репутация: 2671 (1196)
Лучшие ответы: 42
Представление матрицы в виде векторов Айлиффа

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

Код C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// указатель на указатели на интеджер
int **matrix;
 
// Создание и заполнение случайными числами
// создание первого массива
matrix = new int*[10];
for (int i = 0; i < 10; ++i) {
  // создание вложенных массивов
  matrix[i] = new int[10];
  // заполнение значений случайными числами 
  for (int j = 0; j < 10; ++j) {
    matrix[i][j] = rand() % 10;
  }
}
 
// обычное обращение
std::cout << matrix[2][2] << std::endl;
 
// удаление
for (int i = 0; i < 10; ++i) {
  delete [] matrix[i];
}
delete [] matrix;
Другие темы раздела Форум начинающих программистов C++. Вопросы начинающих программистов по С++. Помощь студентам и школьникам в решении задач.
C++ нужно чтоб нашлась страна и все данные об этой стране вывелись в таблицу...
Помогите с поиском по файлу ну не как не получается его сделать.... В файле записано: Страна Столица Валюта ну вот так ... ... ...
C++ Работа с матрицей
Здравствуйте товарищи (вернее сказать "Вечер добрый" (это если по Москве)) Сегодня решил сделать пару задачек на тему квадратных матриц. При реализации задач возникли некоторые вопросы и трудности (поясню ниже кода). Собственно, вот и код: #include <iostream> #include <math.h> #include...
Старый 22.04.2013, 22:59  [ТС]   #3
stopanko
Новичок
 
Регистрация: 10.05.2012
Сообщений: 13
Репутация: 1 (1)
Представление матрицы в виде векторов Айлиффа

Есть ли разница в скорости обращения с матрицей в таком виде?
Старый 23.04.2013, 08:50   #4
lemegeton
Форумчанин
 
Аватар для lemegeton
 
Регистрация: 29.11.2010
Сообщений: 2,465
Репутация: 2671 (1196)
Лучшие ответы: 42
Представление матрицы в виде векторов Айлиффа

Цитата Сообщение от stopanko Посмотреть сообщение
Есть ли разница в скорости обращения с матрицей в таком виде?
Сравнивая с чем? С обычной int[H][W]? Как-то не замерял, но должна быть. Замерьте и расскажите.
Старый 24.04.2013, 13:13  [ТС]   #5
stopanko
Новичок
 
Регистрация: 10.05.2012
Сообщений: 13
Репутация: 1 (1)
Представление матрицы в виде векторов Айлиффа / С++ для начинающих

Замерял время - разница очень маленькая. Увеличить размерность нельзя 254 - максимум 260 - уже ошибка
(First chance exception at $75A8812F. Exception class EStackOverflow with message 'Stack overflow'. Process Allif.exe (904))
Error




Есть ли более точные методы для вычисления времени работы кода или как увеличить размерность?

Code

Код 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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
int _tmain(int argc, _TCHAR* argv[])
{
 
DWORD start; // дпочаткове запамят часу
DWORD d1, d2;// різниця в часі
int n = 254;
int m = 254;
int Rmas1[254][254];// масив результатів 1
int Rmas2[254][254];// масив результатів 2
int mas1[254][254];// масив для операцій перший
int mas2[254][254];// масив для операцій друугий
int **matrix1; //головний масив 1
int **matrix2; //головний масив 2
 
  /////////////
 
  for (int i = 0; i < n; i++) {
           for (int j = 0; j < m; j++) {
           mas1[i][j] = random(n);
           mas1[i][j] = random(m);
           }
 
       }
 
 
      matrix1 = new int*[n];
       for (int i = 0; i < n; i++) {
           matrix1[i] = new int[m];
           for (int j = 0; j < m; j++) {
                matrix1[i][j] = random(m);
                //cout<<matrix1[i][j]<<" ";
 
           }
           cout<<"\n";
       }
 
       matrix2 = new int*[n];
       for (int i = 0; i < n; i++) {
           matrix2[i] = new int[m];
           for (int j = 0; j < m; j++) {
                matrix2[i][j] = random(m);
                //cout<<matrix2[i][j]<<" ";
 
           }
           cout<<"\n";
       }
 
 
 
       start = GetTickCount(); //Старт
       for (int i = 0; i < n; i++) {
           for (int j = 0; j < m; j++) {
           Rmas1[i][j] = mas1[i][j] + mas2[i][j];
           //cout<<Rmas1[i][j]<<" ";
           }
           cout<<"\n";
       }
       d1 = (GetTickCount()-start);
  ////////////////
 
  start = GetTickCount();
       for (int i = 0; i < n; i++) {
           for (int j = 0; j < m; j++) {
           Rmas2[i][j] = matrix1[i][j] + matrix2[i][j];
            //cout<<Rmas2[i][j]<<" ";
            }
            cout<<"\n";
       }
       d2 = (GetTickCount()-start);
 
 
//d1 = (GetTickCount()-start);
/*for (int i = 0; i < n; i++)
{
  delete[] matrix1[i];
  delete[] matrix2[i];
}*/
//Ob.init(int &mas1, 10, 10);
    cout<<"d1= "<<d1<<" d2= "<<d2;
getch();
}
Миниатюры
Представление матрицы в виде векторов Айлиффа  
Старый 24.04.2013, 13:13
Yandex
Объявления
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать новую тему

Похожие темы
Тема Автор
С++ для начинающих Представление кода в виде функции
Столкнулся с проблемой, сделал код в виде функций, все запускается и вроде бы работает, но как введу значения жму Enter и программа просто виснет. В чем может быть проблема? Компилятор все норм компилит. Исходный: //--------------------------------------------------------------------------- ...
samarcs
Delphi для начинающих Из Visual Basic в Delphi Задача представление графов в виде матрицы смежности
Помогите пожалуста, перевести программу из Visual Basic в Делфи 1 4 1 2
nic-nic
С++ для начинающих Представление графа через вектор векторов
Есть граф, нужно записать его список смежности в вектор векторов, на практике в ВУЗе был дан алгоритм, но есть проблема программа считывает только первую строку а адальше все проскакивает, собственно вот код #include<fstream> #include<sstream> #include<iostream> #include<string> #include...
MsHassium
Lisp Представление дерева в виде списка
Здравствуйте. Так и не могу понять, каким образом представляются деревья в виде списков! Можно пример?
RUSya82
C для начинающих Представление двухмерной матрицы в виде одномерного массива
Здравствуйте, учюсь в институте и дали мне задачу не обьяснив толком сути вещей. По условию задачи необходимо для разряженной матрицы целых чисел в соответствии с индивидуальным заданием создать модуль доступа к ней, у котором обеспечить экономию памяти при размещении данных. . Мне выпал вариант с...
s.t.o.k.a.t.o
Опции темы

Текущее время: 23:59. Часовой пояс GMT +4.

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.7 PL3
Copyright ©2000 - 2014, vBulletin Solutions, Inc.