1 / 1 / 2
Регистрация: 06.02.2012
Сообщений: 24

Задача: создать копию массива в динамической памяти

01.04.2012, 12:03. Показов 2638. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Для выполнения работы нужно создать класс "Матрица", в котором будут использованы следующие методы:
1. Создание массива.
2. Создание копии массива.
3. Удаление массива.

Часть кода сделал, то есть с созданием проблем не возникло. Вопрос как создать копию?

Вот код, который мне удалось написать. Буду благодарен за замечания и предложения.

Pascal
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
unit matrix;
interface
uses crt;
type
   TELint=longint;
   TElem = double;
   TLine = array[1..maxint div sizeof(TElem)] of TElem;
   PLine = ^TLine;
   TCol = array[1..maxint div sizeof(PLine)] of PLine;
   PCol = ^TCol;
   PCmatr=^Cmatr;
   Cmatr=object
   private
     Fstr:word;
     Fstc:word;
     procedure F(err:word);
   public
   constructor Create(n,m:word);
   destructor done();
   constructor Copy(matr:PCmatr);
   destructor destroy();
   end;
 
implementation
   procedure Cmatr.F(err:word);
   begin
 
   end;
   constructor Cmatr.Create(n,m:word);
   var i,j:TELint;
       matrica:PCol;
       error:boolean=true;
   begin
   getmem(matrica,n*sizeof(PLine));    //выделяем память под строки
   if matrica<>NIL then
   begin
      for j:=1 to m do
      begin
         getmem(matrica^[j],m*sizeof(TElem));//выделяем память под столбцы
         if matrica^[j]=NIL then   //если памяти недостаточно, то аварийный выход из цикла
         begin
            error:=false;
            break;
         end;
      end;
      if not(error) then for j:=j-1 downto 1 do freemem(matrica^[j],m*sizeof(TElem));
//освобождаем память
   end
   else
   begin
     freemem(matrica,n*sizeof(PLine));
     error:=false;
   end;
   end;
   destructor Cmatr.done();
   begin
   end;
   constructor Cmatr.copy(matr:PCmatr);
   begin
    //здесь должен быть код
   end;
   destructor Cmatr.destroy();
   begin
   end;
end.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.04.2012, 12:03
Ответы с готовыми решениями:

Создать массив в динамической памяти
Мне надо создать массив в динамической памяти (на Си) из n элементов: char *x = (char *) malloc(n * sizeof(char)); Вопрос...

Создать в динамической памяти одномерный массив
Всем добрый день! Помогите с решением задачи. ...

Как создать объект класса в динамической памяти?
привет. я так понял, можно создать объект в динамической области памяти. либо просто создать объект обычным способом, но чтобы его...

1
11 / 11 / 4
Регистрация: 11.03.2011
Сообщений: 30
06.04.2012, 01:19
Чтобы создать копии дин. массива нельзя написать просто M2:=M1, т.к. в этом случае массив будет один. На него будет просто 2 ссылки. Нужно создать новый массив и перекинуть в него элементы:
Pascal
1
2
3
4
5
6
7
 Getmem(M1,n*sizeof(integer));
  for k:=1 to n do
    M1^[k]:=Random(100);
 
  Getmem(M2,n*sizeof(integer));
  for k:=1 to n do
    M2^[k]:=M1^[k];
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.04.2012, 01:19
Помогаю со студенческими работами здесь

Создать в динамической памяти двухсвязный линейный список из 3n элементов
1.Создать в динамической памяти двухсвязный линейный список из 3n элементов (число n і 1 задается пользователем с клавиатуры). Заполнить...

В динамической памяти создать двусвязный список из четных чисел
1) в динамической памяти создать односвязный список типа &quot;очередь&quot; из случайных символов предусмотрев &quot;буферный элемент&quot;....

Создать в динамической памяти двумерный массив целых чисел.
Народ выручайте, по уши в долгах. Решить задачу на C++ Условие: Создать в динамической памяти двумерный массив целых чисел. ...

Создать в динамической памяти одномерный массив целых чисел
Создать в динамической памяти одномерный массив целых чисел. вычислить сумму четных отрицательных элементов

Индексация массива в динамической памяти
Всем привет! Вроде очень простой вопрос, но я не смог найти на него ответа. Вот код: #include &lt;iostream&gt; using namespace...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru