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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.12.2011, 00:03   #1
Leshii
Форумчанин
 
Регистрация: 26.07.2011
Сообщений: 376
По умолчанию Динамическая структура данних

Доброго времени суток. Прошу помочь с решением задачи.

Суть задания:
1.Создать типизированный файл с n вещественных чисел. Переписать содержимое файла в массив, разместив его в динамической памяти.
1.1Поменять местами максимальный элемент и первый.

пункт 1.1 реализовал так

Код:
Program dinam;
Uses crt;
type
  Massiv = array [1..100] of real;
{end;
  file_massiv: file of massiv;}
  var
   {t: file_massiv
    p: pointer;}
   a: Massiv;
   i, n, index: integer;
   max, q: real;
begin
   clrscr;
{write('Vvedit nazvanie:');
   readln(name);
   Assign (t, name);
   rewrite(t);}
   write('Vvedite razmernost massiva: ');
   readln(n);
   for i:=1 to n do begin
      write('a[',i,']:= ');
      readln(a[i]);
   end;
   max:=a[1];
   index:=1;
    for i:=1 to n do
      if a[i]>max then begin
         max:=a[i];
         index:=i;
      end;
   q:=a[1];
   a[1]:=max;
   a[index]:=q;
   writeln;
   for i:=1 to n do begin write(a[i]:3:2,' '); end;
readln;
end.
касательно реализации первого пункта 1 то он в комментариях.
По сути я пытаюсь записать числа в динамическую память ( в даном случает просто запись, но не в динамическую), а после переписать их в массив.Ну и дальше по пункту 1.1 доделать задачу( реализовано ).
Собственно вопрос, как же теперь это сделать используя динамическую структуру.
Люблю на ты.Я человек простой

Последний раз редактировалось Leshii; 05.12.2011 в 00:06.
Leshii вне форума Ответить с цитированием
Старый 09.12.2011, 21:10   #2
Leshii
Форумчанин
 
Регистрация: 26.07.2011
Сообщений: 376
По умолчанию

Доброго времени суток.


Задание ( переписал для того чтобы не скролить выше )
1.Создать типизированный файл с n вещественных чисел. Переписать содержимое файла в массив, разместив его в динамической памяти.( сделал частично, а именно создал и забил в файл ).

1.1Поменять местами максимальный элемент и первый.( реализовал, но пока забил в комментарий ).


Собственно нужна помощь .
Вопрос:
Как записать данные из файла в динамический массив. ( знаю что для сего нужен ещё один цикл, скажем
Код:
for i:=1 to n do new(a[i])
ну и после dispose(...).

Спрашивал преподавателя касательно getmem ( для динам. массивов ) сказал что лучше использовать через функции описанные выше.

Ну или же хотя бы пояснить как это сделать. Мысль думаю рожу .

Заранее благодарен.

Да и если несложно ткнуть пальцами на ошибки. Или может где чего по другом надо сделать.

Код:
Uses crt;
type
   Massiv = array [1..100] of real;

var
   a: ^Massiv;
   n, i: integer;
   t: file of real;
   name: string;
   b: real;
begin
clrscr;
 write('Vvedite nazvanie: ');
 readln(name);
 assign(t, name);
 rewrite(t);
 write('Vvedite razmernost:');
 readln(n);
 writeln('Vvedite 4isla: ');
  for i:=1 to n do begin
      readln(b);
      write(t, b);
   end;
close(t);
reset(t);
for i:=1 to n do begin
     read(t, b);
     writeln(b:3:2,' ');
end;

close(t);
   {max:=a[1];
   index:=1;
   for i:=1 to n do
      if a[i]>max then
      begin
         max:=a[i];
         index:=i;
      end;
   q:=a[1];
   a[1]:=max;
   a[index]:=q;
   writeln;}
   {for i:=1 to n do begin
      write(a[i]:3:2,' ');
   end;}
readln;
end.
Люблю на ты.Я человек простой
Leshii вне форума Ответить с цитированием
Старый 18.12.2011, 14:11   #3
Leshii
Форумчанин
 
Регистрация: 26.07.2011
Сообщений: 376
По умолчанию

Кому интересно. Вот то что получилось.


Код:
Uses crt;
Type
  MyType= Word;
  tr = file of word;
Type
  MyArray=Array[1..1] of MyType;  
  MyArrayPtr=^MyArray; 
var
   DynamicArray: MyArrayPtr;   
   i, Count, Size, b, q, max: word;
   t: tr;
   name: string;
   index: integer;

begin
clrscr;
 write('Vvedite nazvanie: ');
 readln(name);
 assign(t, name);
 rewrite(t);
 write('Vvedite 4islo elementov massiva');
 ReadLn(Count);
 randomize;
  for i:=1 to Count do begin
      B:=random(10);
      write(t, b);
  end;
close(t);
reset(t);
while not eof(t) do begin

   read(t, b);
   write(b:2,' ');

end;

close(t);

reset(t);
writeln;
writeln('Zapoln9em massiv');
Size:=Count*SizeOf(MyType);
GetMem(DynamicArray,Size);
for i:=1 to Count do DynamicArray^[I]:=I;

for i:=1 to Count do begin
    read(t, DynamicArray^[i]);
    write('Mas[',i,']:=',DynamicArray^[I]:2,' ');
end;
writeln;
max:=DynamicArray^[1]; index:=1;
 for i:=1 to Count do
  if DynamicArray^[i]>max then begin
     max:=DynamicArray^[i];
     index:=i;
  end;
writeln;
writeln('maks elemet Mas[',index,']:=',max:2);
   q:=DynamicArray^[1];
   DynamicArray^[1]:=max;
   DynamicArray^[index]:=q;
   writeln;
writeln('perestanovka [max] elementa s [1] elementom massiva');
 for i:=1 to Count do begin
   writeln('Mas[',i,']:=',DynamicArray^[i]:2);
 end;
FreeMem(DynamicArray,Size);
readln;
close(t);
end.
Люблю на ты.Я человек простой
Leshii вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
динамическая структура Тимурка Помощь студентам 0 20.04.2011 17:37
Динамическая структура данных tanjusha Паскаль, Turbo Pascal, PascalABC.NET 2 01.07.2010 18:46
Динамическая структура. triasoft Фриланс 5 02.06.2010 01:47
Динамическая структура Nitriyc Помощь студентам 0 18.12.2009 17:51
динамическая структура o4arova6ka90 Помощь студентам 0 17.10.2009 14:05