Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> В массив В записать K<L наибольших элементов 
V
    Опции темы
Studeht
Дата 5.6.2009, 01:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 6.4.2009
Где: Тула

Репутация: нет
Всего: нет



Доброго времени суток Господа эксперты. Прошу помощи в решении следующей задачи: В массив В записать K<L наибольших элементов массива X(L) Данные должны считываться и выводиться в файл, используйте динамические массивы. Понимаю, что задача сложная, но помогите пожалуйста!!!
PM MAIL   Вверх
Studeht
Дата 7.6.2009, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 6.4.2009
Где: Тула

Репутация: нет
Всего: нет



Помогите пожалуйста очень нужно smile  smile  smile  Вот мой получившийся код, но программа слетает почему то...
Код


{$R-}
type TMas=array[1..1] of integer;
     PMas=^TMas;

     TMas1=array[1..1] of integer;
     PMas1=^TMas1;

procedure OpenFileIn(NameFile:string; var FileIn:text);
begin
  writeln('Введите имя входного файла ');
  readln(NameFile);
  assign(FileIn,NameFile);
  {$I-}
  reset(FileIn);
  {$I+}
  if IOResult<>0 then
    begin
      writeln('Ошибка!!! Файл ',NameFile,' не найден');
      readln;
      halt;
    end;
end;

procedure ReadDimensionOfMas(var FileIn:text; var Line:integer);
begin
  read(FileIn,Line);
end;

procedure AllocationOfMemoryToMas(Line:integer; var Mas:PMas);
begin
  GetMem(MaS,Line*SizeOf(integer));
end;

procedure ReadMatrix(Line:integer; Mas:PMas; var FileIn:text);
var i:integer;
begin
  for i:=1 to Line do
    read(FileIn,Mas^[i]);
end;

procedure ReadMasFromFileToPMas(var Mas:PMas; var Line:integer);
var FileIn:text;
    NameFile:string;
begin
  OpenFileIn(NameFile,FileIn);
  ReadDimensionOfMas(FileIn,Line);
  AllocationOfMemoryToMas(Line,Mas);
  ReadMatrix(Line,Mas,FileIn);
  Close(FileIn);
end;

procedure PrintMas(Line:integer; Mas:PMas);
var i:integer;
begin
  for i:=1 to Line do
    write(Mas^[i],' ');
    writeln;
end;

procedure inp(Line:integer; var k:integer);
begin
  writeln('Введите размерность искомого массива непревышающего размерность исходного');
  readln(k);
  if (k>Line) or (Line<=0) then begin
    while (Line<=0) or (k>Line) do begin
      writeln('Ошибка при вводе!(Неправильные данные,введите снова)');
      readln(k);
    end;
    writeln('Данные введены верно');
    end;
end;

procedure Din(k:integer; Mas1:PMas1);
begin
  GetMem(Mas1,k*SizeOf(integer));
end;

procedure Find(Mas:PMas;var Mas1:PMas1; Line,k:integer);
var i,j,t:integer;
begin
  for j:= 0 to Line do
    for i:= 0 to Line-1 do
      if Mas^[i] < Mas^[i+1] then
        begin
          t:= Mas^[i];
          Mas^[i]:= Mas^[i+1];
          Mas^[i+1]:= t;
        end;
        for i:= 0 to k-1 do
          Mas1^[i]:= Mas^[i];
          writeln('Искомые элементы массива');
          for i:= 0 to k-1 do
            writeln(Mas1^[i]:6);
            readln;
end;

procedure OpenFileOut(NameFile:string; var FileOut:text);
begin
  writeln('Введите имя выходного файла ');
  readln(NameFile);
  assign(FileOut,NameFile);
  rewrite(FileOut);
end;

procedure OutputMas1ToFile(k:integer; var FileOut:text; var Mas1:PMas1);
var i,j:integer;
begin
  for i:=1 to k do
    write(FileOut,Mas1^[i],' ');
    writeln(FileOut);
        end;
        for i:= 0 to k-1 do
          Mas1^[i]:= Mas^[i];
          writeln('Искомые элементы массива');
          for i:= 0 to k-1 do
            writeln(Mas1^[i]:6);
            readln;
end;

procedure OpenFileOut(NameFile:string; var FileOut:text);
begin
  writeln('Введите имя выходного файла ');
  readln(NameFile);
  assign(FileOut,NameFile);
  rewrite(FileOut);
end;

procedure DeleteDinamicMasAndMas1(Line,k:integer; Mas:PMas;Mas1:PMas1);
begin
  FreeMem(Mas,Line*SizeOf(integer));
  FreeMem(Mas1,k*SizeOf(integer));
end;

procedure WriteMas1ToFile(k:integer; Mas1:PMas1);
var FileOut:text;
    NameFile:string;
begin
  OpenFileOut(NameFile,FileOut);
  OutputMas1ToFile(k,FileOut,Mas1);
  Close(FileOut);
end;

var Mas:PMas;
    Mas1:PMas1;
    Line,k:integer;
begin
  ReadMasFromFileToPMas(Mas,Line);
  writeln('Исходный массив имеет следующий вид:');
  PrintMas(Line,Mas);
  inp(Line,k);
  Din(k,Mas1);
  Find(Mas,Mas1,Line,k);
  WriteMas1ToFile(k,Mas1);
  DeleteDinamicMasAndMas1(Line,k,Mas,Mas1);
end.


Это сообщение отредактировал(а) Studeht - 7.6.2009, 21:06
PM MAIL   Вверх
volvo877
Дата 7.6.2009, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



Цитата(Studeht @  7.6.2009,  20:10 Найти цитируемый пост)
программа слетает почему то...
Программа даже не компилируется. Что у тебя в OutputMas1ToFile намудрено?
PM MAIL   Вверх
Studeht
Дата 7.6.2009, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 6.4.2009
Где: Тула

Репутация: нет
Всего: нет



Цитата

Программа даже не компилируется

Не знаю... У меня программа компилируется, и даже запускается. При вводе числа k она слетает на процедуре DeleteDinamicMasAndMas1 Выскакивает 204 ошибка...
Цитата

Что у тебя в OutputMas1ToFile намудрено

Что-то не то... Возможно вот так?:
Код

for i:= 0 to k-1 do
  write(FileOut,Mas1^[i],' ');
writeln(FileOut); 

Или цикл здесь совсем не нужен?

Это сообщение отредактировал(а) Studeht - 7.6.2009, 21:03
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0869 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.