Форум программистов, компьютерный форум, киберфорум
Free Pascal
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
1 / 1 / 2
Регистрация: 06.02.2012
Сообщений: 24

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

01.04.2012, 12:03. Показов 2634. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru