SaveText.Ru

Pz5
  1. const N=11;//ограничение по размеру ГЕНЕРИРУЕМОГО массива
  2. type type1 = array [1..n] of integer;//тип массива
  3. var m1,m2: type1;//основной массив и временный(промежуточный) массив
  4.     index,len:integer;//индекс элемента массива, которым мы собираемся оперировать и текущая длина массива
  5.     symvol: char;//символ для выбора операции
  6.     bool: boolean;//логическая переменная для определения правильного ответа пользователя
  7.     otvet:string;//ответ пользоватееля
  8. procedure pr1(x,y,z:integer;var l: type1);//рандомизатор массива
  9.   var g:integer;
  10.   begin
  11.     for g:=1 to z do
  12.       l[g]:=Random((y-x)+1)+x;
  13.   end;
  14. procedure pr2(l:type1;z:integer);//подпрограмма для вывода таблицы с элементами массива и их индексами(ввод массива и кол-ва его элеметов, вывод таблицы)
  15.   var g:integer;//счетчик
  16.   begin
  17.     writeln('Индекс (i)','Значение M1в[i]':20);//подзаголовки таблицы
  18.     for g:=1 to z do
  19.       writeln(g:4,l[g]:21);//вывод данных таблицы            
  20.   end;
  21. procedure pr3(l:type1;z:integer;var ind:integer; var sym:char);//вывод индекса выбранного элемента, а также проверка на его существование, выбор действия пользователем над этим элементом
  22.   begin
  23.       writeln('Какой элемент массивы вы хотите вывести?(введите индекс элемента)');
  24.       readln(ind);//ввод индекса, на которым будет производится операция
  25.       if ind >= 1
  26.         then
  27.           if ind <= z
  28.             then
  29.               begin
  30.                 writeln('Элемент массива М1 с индексом ',ind,' имеет значение ',l[ind]);
  31.                 writeln('Выберете действие, которое хотите выполнить с данным элементом(введите соответсвующий символ с клавиатуры):');
  32.                 writeln('а) удалить');
  33.                 writeln('б) удалить и заменить');
  34.                 writeln('в) ничего не делать');
  35.                 readln(sym);//вывод ответа пользователя
  36.               end
  37.             else
  38.               writeln('Данного элемента не существует')
  39.       else
  40.         writeln('Данного элемента не существует');
  41.   end;
  42. procedure pr4(ind,x,y,z:integer;l:type1;var l1:type1;var nova:integer);//процедура удаления элемента и обновление массива через временный массив
  43. var s:string;
  44.     g:integer;
  45.   begin
  46.     if z-1>=1 then
  47.       begin
  48.         writeln('Вы хотите удалить элемент с индексом ',ind,' и значением ',l[ind],'?');
  49.         writeln('Сохранить изменение?(введите "да" или "нет")');
  50.         readln(s);
  51.         case s of
  52.           'да':
  53.             begin
  54.               for g:=ind to z-1 do
  55.                 l[g]:=l[g+1];
  56.               nova:=z-1;
  57.               for g:=1 to z-1 do
  58.                 l1[g]:=l[g];
  59.             end;
  60.           'нет':
  61.           begin
  62.             for g:=1 to z do
  63.               l1[g]:=l[g];
  64.           end;
  65.           else
  66.             writeln('Неверный ответ');
  67.         end;
  68.       end
  69.     else
  70.       writeln('Удалить элемент невозможно, тк остался всего 1 элемент');
  71.   end;
  72. procedure pr5(ind,x,y,z:integer;l:type1;var l1:type1);//процедура замены элемента и обновление массива через временный массив
  73. var s:string;
  74.     el,g:integer;
  75.   begin
  76.     writeln('Введите новое значение элемента в диапазоне [',x,';',y,'] с клавиатуры');
  77.     readln(el);
  78.         if el>=x
  79.           then
  80.             if el<=y
  81.               then
  82.                 begin
  83.                   writeln('Вы хотите присвоить элементу с индексом ',ind,' новое значение ',el,'?(старое значение ',l[ind],')');
  84.                   writeln('Сохранить изменение?(введите "да" или "нет")');
  85.                   readln(s);
  86.                   case s of
  87.                     'да': l[ind]:=el
  88.                     else
  89.                       if s <> 'нет' then
  90.                         writeln('Неверный ответ');
  91.                   end;
  92.                   for g:=1 to z do
  93.                     l1[g]:=l[g];
  94.                 end
  95.         else
  96.           writeln('Элемент не попадает в диапазон');
  97.   end;
  98. procedure pr6(z:integer;l:type1;var l1:type1);//процедура замены старых значений элемента массива на обновлеменные через временный массив
  99. var g:integer;
  100.   begin
  101.     if z>=1
  102.       then
  103.         for g:=1 to z do
  104.           l1[g]:=l[g];
  105.   end;
  106. //основная программа
  107. begin
  108.   a:=1;
  109.   b:=a;
  110.   while a=b do
  111.     begin
  112.       writeln('Введите границы вашего массива');
  113.       readln(a,b);//верхняя и нижняя граница массива
  114.         if a>b
  115.           then
  116.             begin
  117.               d:=a;
  118.               a:=b;
  119.               b:=d;
  120.             end;
  121.         if a=b
  122.           then
  123.             writeln('Границы не могут быть одним и тем же числом');
  124.     end;
  125.   len:=n;
  126.   pr1(a,b,len,m1);//создания массива со случайным набором значений элементов
  127.   pr6(len,m1,m2);//резервное копирование массива
  128.   writeln('Существует массив М1 со следующими элементами: ');//вывод исходного массива
  129.   pr2(m1,len);
  130.   otvet:='да';
  131.   while otvet = 'да' do//цикл будет продолжаться до тех пор, пока пользователь не введет "да" после завершения операции над элементом
  132.     begin
  133.       pr6(len,m2,m1);
  134.       pr3(m1,len,index,symvol);
  135.       case symvol of//при выборе варианта операции пользователем выполняется соответсвующая процедура либо программа бездействует
  136.         'а':pr4(index,a,b,len,m1,m2,len);//удаление элемента
  137.         'б':pr5(index,a,b,len,m1,m2);//замена элемента
  138.         'в':writeln('')
  139.         else writeln('Неизвестный символ');//при выборе неправильного ответа программа пропускает данный этап
  140.       end;
  141.       symvol:='x';
  142.       pr6(len,m2,m1);//обновление массива
  143.       bool:=false;
  144.       writeln('Теперь существует массив М1 со следующими элементами: ');//вывод значений обновленного массива
  145.       pr2(m1,len);
  146.       while bool = false do//цикл будет продолжаться до тех пор, пока пользователь не введет "да" или "нет" для продожения/остановки программы
  147.         begin
  148.           writeln('Продолжить?(введите "да" или "нет")');
  149.           readln(otvet);
  150.           case otvet of
  151.             'да':
  152.               bool:=true;
  153.             'нет':
  154.               begin
  155.                 bool:=true;
  156.               end;
  157.             else
  158.               begin
  159.                 writeln('Вы неверно ввели ответ, попробуйте снова');
  160.                 bool:=false;
  161.               end;
  162.           end;
  163.         end;
  164.     end;
  165. end.
  166.  

Share with your friends:

Print