Описать переменную «адрес», содержащую: название города, название улицы, номер дома, корпус, номер квартиры. Создать массив адресов. Поменять местами номер дома в N-ом адресе и номер квар-тиры в M-ом адресе — Pascal(Паскаль)

program laba4_5;
uses crt;
type adress_type=record
                  gorod,ylica   : string;
                  dom,korp,kvar : integer;
                 end;
     massiv_adres=array [1..1000] of ^adress_type;
     massiv_adres_din=^massiv_adres;
var massiv : massiv_adres_din;
    n,m    : integer;
 
procedure zapolnenie(var adress : adress_type; n : integer);
begin
 with adress do
  begin
   write('Введите название города, адреса №',n,' :');
   readln(gorod);
   write('Введите название улицы, адреса №',n,' :');
   readln(ylica);
   write('Введите номер дома, адреса №',n,' :');
   readln(dom);
   while dom<=0 do
    begin
     textcolor(5);
     writeln('ОШИБКА : Номер дома должен быть положительным!');
     textcolor(15);
     write('Повторите ввод : ');
     readln(dom);
    end;
   write('Введите номер корпуса, адреса №',n,' :');
   readln(korp);
   while korp<=0 do
    begin
     textcolor(5);
     writeln('ОШИБКА : Номер корпуса должен быть положительным!');
     textcolor(15);
     write('Повторите ввод : ');
     readln(korp);
    end;
   write('Введите номер квартиры, адреса №',n,' :');
   readln(kvar);
   while kvar<=0 do
    begin
     textcolor(5);
     writeln('ОШИБКА : Номер квартиры должен быть положительным!');
     textcolor(15);
     write('Повторите ввод : ');
     readln(kvar);
    end;
  end;
end;
 
procedure input(var massiv : massiv_adres_din; var n,m : integer);
var i,j : integer;
begin
 clrscr;
 write('Введите количество элементов массива N(1<=N<=1000) : ');
 readln(i);
 while (i<1) or (i>1000) do
  begin
   textcolor(5);
   writeln('ОШИБКА : Введено неверное количество элементов массива!');
   textcolor(15);
   write('Повторите ввод (1<=N<=1000) : ');
   readln(i);
   clrscr;
  end;
 clrscr;
 for j:=1 to i do
  zapolnenie(massiv^[j]^,j);
 write('Введите номер N первого из изменяемых адресов : ');
 readln(n);
 while (n<=0) or (n>i) do
  begin
   textcolor(5);
   writeln('ОШИБКА : Номер должен быть больше 0 и меньше ',i,' !');
   textcolor(15);
   write('Повторите ввод : ');
   readln(n);
  end;
 write('Введите номер M второго из изменяемых адресов : ');
 readln(m);
 while (m<=0) or (m>i) do
  begin
   textcolor(5);
   writeln('ОШИБКА : Номер должен быть больше 0 и меньше ',i,' !');
   textcolor(15);
   write('Повторите ввод : ');
   readln(m);
  end;
end;
 
procedure zamena(var adress1,adress2 : adress_type);
var buf : integer;
begin
 buf:=adress1.dom;
 adress1.dom:=adress2.kvar;
 adress2.kvar:=buf;
end;
 
procedure output(massiv : massiv_adres_din; n,m : integer);
begin
 clrscr;
 zamena(massiv^[n]^,massiv^[m]^);
 with massiv^[n]^ do
  begin
   writeln('Первый измененный адресс :');
   writeln('Город ',gorod,' улица ',ylica,' дом ',dom,' корпус ',korp,' квартира ',kvar);
  end;
 with massiv^[m]^ do
  begin
   writeln('Второй измененный адресс :');
   writeln('Город ',gorod,' улица ',ylica,' дом ',dom,' корпус ',korp,' квартира ',kvar);
  end;
 readkey;
end;
 
begin
 new(massiv);
 input(massiv,n,m);
 output(massiv,n,m);
 dispose(massiv);
end.

Leave a Comment

13 − = 10