Найти и распечатать произведение максимальной и минимальной компонент файла - Pascal

Узнай цену своей работы

Формулировка задачи:

Сформировать файл F целого типа. Найти и распечатать произведение максимальной и минимальной компонент файла. Произведением заменить все нулевые компоненты первой половины файла. Если нулевых компонент в первой половине нет, то удалить из него максимум. Исходный и файл после замены распечатать. Я понимаю что именно от меня требуется, но написать это на Pascal не могу... не понимаю как и куда впихнуть файл...

Решение задачи: «Найти и распечатать произведение максимальной и минимальной компонент файла»

textual
Листинг программы
var f:file of integer;
    a,b,i,min,max,imax,p,z:integer;
begin
//создадим исходный файл например из 20 чисел
assign(f,'file');
rewrite(f);
randomize;
for i:=1 to 20 do
 begin
  a:=-6+random(13);
  write(f,a);
 end;
writeln('Содержание исходного файла');
reset(f);
//читаем файл, ищем ноли, минимум, максимум и его индекс
z:=0;//есть ли 0 в первой половине файла
for i:=0 to filesize(f)-1 do
 begin
  read(f,a);
  write(a:4);
  if(a=0)and(i<filesize(f)div 2) then z:=1;
  if i=0 then
   begin
    min:=a;
    max:=a;
    imax:=0;
   end
 else
  begin
   if a<min then min:=a
   else if a>max then
    begin
     max:=a;
     imax:=i;
    end;
  end;
 end;
writeln;
p:=min*max;
writeln('Минимальный элемент=',min);
writeln('Максимальный элемент=',max,' его номер=',imax+1,' (индекс=',imax,')');
writeln('Их произведение=',p);
//изменяем файл по результатам поиска нолей
reset(f);
if z=1 then
 begin
  writeln('В первой половине файла есть ноли, замена их на значение произведения');
  for i:=0 to filesize(f) div 2-1 do
   begin
    seek(f,i);
    read(f,a);
    if a=0 then
     begin
      seek(f,i);
      write(f,p);
     end;
   end;
 end
else
 begin
  writeln('В первой половине файла нет нолей, удаление максимального компонента');
  for i:=imax to filesize(f)-2 do
   begin
    seek(f,i+1);
    read(f,a);
    seek(f,i);
    write(f,a);
   end;
  seek(f,filesize(f)-1);
  truncate(f);
 end;
reset(f);
writeln;
writeln('Измененный файл');
while not eof(f) do
 begin
  read(f,a);
  write(a:4);
 end;
close(f);
end.

Объяснение кода листинга программы

  1. Объявлены переменные:
    • f: файл целых чисел;
    • a, b, i, min, max, imax, p, z: целые числа.
  2. Создается файл из 20 чисел от -6 до 6 с шагом 1.
  3. Выводится содержимое файла.
  4. Считывается файл, ищется ноль, минимум, максимум и его индекс.
  5. Если в первой половине файла есть ноль, то его заменяют на произведение минимума и максимума.
  6. Если в первой половине файла нет ноля, то удаляется максимум.
  7. Выводится измененный файл.
  8. Файл закрывается.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.273 из 5
Похожие ответы