Quantcast
Channel: Форум программистов и сисадминов Киберфорум
Viewing all articles
Browse latest Browse all 514864

Представить каждую из 2 программ в виде отдельных процедур - Pascal (Паскаль)

$
0
0
Программа №1. Ее условие: "В файле хранятся строки. Преобразовать строку, заменяя каждую цифру соответствующим ей числом пробелов" (желательно также для каждой процедуры сделать отдельную блок-схему).

:

Program 1;
uses crt;
var f,g:text;
fname,k:string;
n,u,y:integer;
m:char;
begin
clrscr;
//открытие файла
writeln('Введите имя файла для чтения');
readln(fname);
assign(f,fname);
{$I-}
reset(f);
{$I+}
  if IOResult<> 0 then
  begin
  writeln('Файл не найден');
  readln;
  exit;
  end;
writeln('Введите имя файла для записи');
readln(fname);
assign(g,fname);
rewrite(g);
//чтение файла и преобразование строк
  while not eof(f) do
  begin
  readln(f,k);
      for u:=length(k) downto 1 do
      if k[u] in ['0'..'9'] then
      begin
      for y:=1 to ord(k[u])-ord('0') do
      insert(' ',k,u+1);
      delete(k,u,1);
      end;
  writeln(k);
  writeln(g,k);
  end;
close(f);
close(g);
readln;
end.

_________________________________________________________________

Программа №2. Её условие: "Дан файл, элементами которого являются n-мерные векторы. Векторы с наибольшим модулем перенести в конец файла" (желательно также для каждой процедуры сделать отдельную блок-схему).

:

uses crt;
const n=5; mmax=20;
type mas=array[1..n] of integer;
fail=file of mas;
  function max(x:mas):integer;
  var i,mx:integer;
  begin
  mx:=abs(x[1]);
  for i:=2 to n do
  if abs(x[i])>mx then
  mx:=abs(x[i]);
  max:=mx
  end;
var f:fail;
x,y:mas;
m,i,j,k,mx:integer;
begin
clrscr;
randomize;
assign(f,'filef');
rewrite(f);
repeat
write('ведите количество компонет до',mmax,' m=');
readln(m);
until m in [1..mmax];
  for i:=1 to m do
  begin
  for j:=1 to n do
  x[j]:=random(101);
  write(f,x);
  end;
writeln('Содержание исходного файла:');
writeln('Макс. модуль':n*5+12);
reset(f);
mx:=-maxint-1;
  while not eof(f) do
  begin
  read(f,x);
      for i:=1 to n do
      begin
      write(x[i]:5);
      if max(x)>mx then
      mx:=max(x);
      end;
  writeln(max(x):7);
  end;
writeln('Максимальный модуль=',mx);
seek(f,0);
k:=0;{количество компонент с макс. модулем}
i:=0;
  while i<filesize(f)-k do
  begin
  seek(f,i);
  read(f,x);
      if max(x)=mx then
      begin
      k:=k+1;
        for j:=i to filesize(f)-k-1 do
        begin
        seek(f,j+1);
        read(f,y);
        seek(f,j);
        write(f,y);
        end;
      seek(f,filesize(f)-k);
      write(f,x);
      end;
  i:=i+1;
  end;
writeln('Компоненты с макс. модулем в конец:');
writeln('Макс. модуль':n*5+12);
seek(f,0);
  while not eof(f) do
  begin
  read(f,x);
  for i:=1 to n do
  write(x[i]:5);
  writeln(max(x):7);
  end;
close(f);
readln
end.


Изображения
Тип файла: jpg 1.jpg (87.2 Кб)
Тип файла: jpg 2.jpg (173.4 Кб)

Viewing all articles
Browse latest Browse all 514864

Trending Articles