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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.05.2016, 10:56   #1
Василий15
Пользователь
 
Регистрация: 07.05.2016
Сообщений: 27
По умолчанию Указатель на одномерный динамический массив

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

Ребят, помогите. Хоть скелет набросайте.
Василий15 вне форума Ответить с цитированием
Старый 18.05.2016, 11:23   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Василий,
два вопроса:
1) какой именно у Вас компилятор Паскаля?
2) если набросать Вам некий простой пример (аля "скелет"-"рыба", Вы сможете его показать преподавателю и получить его одобрение (или замечания)?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.05.2016, 11:56   #3
Василий15
Пользователь
 
Регистрация: 07.05.2016
Сообщений: 27
По умолчанию

1) ПаскальАБС;
2) думаю да.
Василий15 вне форума Ответить с цитированием
Старый 18.05.2016, 13:45   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

тогда, для затравки, попробуйте пропихнуть такой концептуал:
Код:
type
  type_of_array_element = real; {элементы,на которые показывают указатели - вещественные числа.
                                   если изменять тип, нужно изменить заполнение - сейчас заполняется
                                   случайными вещественными (дробными) числами}
  parr = ^arr;
  pelement = ^type_of_array_element;
  arr = array[0..10000] of pelement;

procedure FreeArray(var p:parr; var ArraySize : integer);
var i : integer;
begin
  for i:=0 to ArraySize-1 do begin
    Dispose(p^[i]); {освободим память, выделенную под элементы массива, по указателям в массиве }
    p^[i] := nil; {необязательно, но помимо освобождения памяти, обнулим и сами указатели}
  end;
  FreeMem(p);
  ArraySize := 0; {обнулим }
end;

procedure PrinArray(p:parr; ArraySize : integer);
var i : integer;
begin
  WriteLn('Содержание массива (на что показывают указатели в динамическом массиве):');
  for i:=0 to ArraySize-1 do
    if (p^[i]<>nil) then  Write(p^[i]^,' ');
  WriteLn;
end;

{заполнить массив указателями на случайные величины}
procedure FillRandom(var p:parr; ArraySize : integer);
var i : integer;
begin
  for i:=0 to ArraySize-1 do begin
     New(p^[i]);
     p^[i]^ := 10*Random(); {числа от нуля до 9.999999}
     p^[i]^ := Round(100*p^[i]^)/100; {округлим до сотых}
  end;
end;


var
  p:parr;
  n:integer;
  el:type_of_array_element;
begin
  WriteLn('Введите размерность массива: ');
  ReadLn(n);
  
  GetMem(p, n*sizeof(type_of_array_element)); {выделить память под динамический массив указателей}
  FillRandom(p, n);
  
  PrinArray(p, n);
  
  FreeArray(p,n);
end.
Внимание! Пример очень простой, но, прежде чем идти с ним к преподу, разберите внимательно и тщательно каждую строчку кода.
Если есть вопросы - лучше задайте мне.
Для Вас этот код должен быть абсолютно прозрачен, понятен и очевиден.
Причины, надеюсь, объяснять не надо?!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.05.2016, 16:18   #5
Василий15
Пользователь
 
Регистрация: 07.05.2016
Сообщений: 27
По умолчанию

Огромное спасибо.
Василий15 вне форума Ответить с цитированием
Старый 18.05.2016, 16:27   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

за что спасибо?! Это же не решение вашей задачи. Это просто "скелет".
Рабочий прототип, как можно создать динамический массив, каждый элемент которого - это ссылка (указатель) на область памяти, где находится некое значение (в данном прототипе - это просто переменные вещественного типа == тип "real").

Это, конечно, базис вашей будущей программы, но это далеко не готовое решение.
Кроме того, нужно ещё подтверждение от преподавателя, что это то, что Вам нужно.

Кстати, в любом случае, не сочтите за труд отписаться, как прошло собеседование/сдача работы.

Успехов!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Одномерный динамический массив dkii Общие вопросы C/C++ 1 22.02.2014 00:46
Динамический массив и указатель\ссылка Fanyuus Общие вопросы C/C++ 11 28.12.2012 12:57
Динамический одномерный массив Seferus Паскаль, Turbo Pascal, PascalABC.NET 6 29.06.2012 11:31
Одномерный динамический массив. Кристинка- Общие вопросы Delphi 1 12.05.2012 08:20
Одномерный динамический массив anybkarnak Общие вопросы C/C++ 5 11.12.2009 20:18