Составить процедуру вставки или удаления символов в строке не более M символов с N-го места (на N-ое место) данной строки — Pascal(Паскаль)

После каждой вставки или удаления выводить обновленную строку. Режим ввода или удаления задается в диалоге клавишами I или D, а вводимый символ определяется нажатием соответствующей клавиши.

Program PascalGuru;

uses crt;

label 1;

var
  M: integer;
  s: string;

  { ------------------------------------------------------------------- }
Procedure InsertDelete;
label 1;
var
  n: integer;
  option: char;
  c: char;
begin
1:
  clrscr;

  writeln('Redaktiruem stroky "', s, '" ; M=', M);
  writeln;
  writeln;
  writeln('[I]) Vstaviti simvol');
  writeln('[D]) Udaliti simvol');
  writeln;
  writeln('[E]) exit');
  option := Readkey;
  if (Ord(option) = 101) or (Ord(option) = 69) then
    exit;

  if (Ord(option) = 105) or (Ord(option) = 73) then
  begin
    clrscr;
    if length(s) >= M then
    begin
      writeln('Vstavka zaprescena (>M)');
      readln;
      goto 1;
    end;
    write('Vstavka v N-oe mesto. N= ');
    readln(n);
    write('Simvol= ');
    readln(c);
    insert(c, s, n);
    goto 1;
  end;

  if (Ord(option) = 100) or (Ord(option) = 68) then
  begin
    clrscr;
    if length(s) <= 1 then
    begin
      writeln('Udalenie zapresceno (slovo imeet 1 simvol)');
      readln;
      goto 1;
    end;
    write('Udalenie s N-ogo mesta. N= ');
    readln(n);
    delete(s, n, 1);
    goto 1;
  end;

  goto 1;
end;

{ ------------------------------------------------------------------- }
begin
  write('M= ');
  readln(M);
1:
  clrscr;
  write('Vvedite stroky (ne bolee ', M, ' sivolov): ');
  readln(s);
  if length(s) > M then
  begin
    writeln('Vvedennaya stroka soderjit bolee ', M, ' sivolov!');
    readln;
    goto 1;
  end;

  InsertDelete;

end.

Leave a Comment

38 − = 30