Паскаль!! помогите надо сделать типо введите кнопку y это завершение программы а если...

0 голосов
54 просмотров

Паскаль!!
помогите надо сделать типо введите кнопку y это завершение программы а если ввели z то продолжение, как сделать вот пример
readln (c);
until c in ['Z','z','Y','y'];
if c in ['Y','y'] then halt; //остановка программы
как мне написать слово продолжить где halt


Информатика (206 баллов) | 54 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

//Данная программа вычисляет детерминант матрицы
//PascalABC.NET 3.2 сборка 1318


    Var
  c:char;
  Reci:array of integer;
  ma:array of array of integer;
  n,nc,ip:integer;
  resf:real;

  function minor(ip,i,n:integer; var reci:array of integer):real;
  Var
    ic,j,c,ipp,icc:integer;
    res:real;
    b:boolean;
    arf:array[1..4] of integer;
  begin
  b:=true;
  c:=0;
  reci[ip]:=i;
  ipp:=ip+1;
  if ipp=nc-1 then
  begin
    for ic:=1 to n do
      begin
        for j:=1 to ip do
          if ic=reci[j] then
  b:=false;
          if b=true then
           begin
            inc(c);
            arf[c]:=ma[ipp,ic];
           end;
         b:=true;
        end;
       inc(ipp);
       for ic:=1 to n do
      begin
        for j:=1 to ip do
          if ic=reci[j] then
  b:=false;
          if b=true then
           begin
            inc(c);
            arf[c]:=ma[ipp,ic];
           end;
         b:=true;
        end;
       minor:=arf[1]*arf[4]-arf[2]*arf[3];
      end
      else
  begin
      for ic:=1 to n do
      begin
        for j:=1 to ip do
          if ic=reci[j] then b:=false;
         if b=true then
            res+=ma[ipp,ic]*power(-1,ipp+i)*minor(ipp,ic,n,reci);
           b:=true;
         end;
    minor:=res;
   end;
end;

procedure start();
Var
  i,j:integer;
begin
  write('Введите количество строк и столбцов:');
  readln(n);
  ip:=1;
  nc:=n;
  setlength(Reci,n+1);
  setlength(ma,n+1);
  for i:=1 to n do
  setlength(ma[i],n+1);
  writeln('Введите матрицу:');
  for i:=1 to n do
    for j:=1 to n do
      readln(ma[i][j]);
  for i:=1 to n do
    resf+=ma[ip][i]*power(-1,ip+i)*minor(ip,i,n,reci);
  writeln('Res:',resf);
end;

begin
repeat
readln(c);
until c in ['Z','z','Y','y'];
if c in ['Y','y'] then halt else start();
end.

Пример работы программы:
3 //введено ни z, ни y, повторяем ввод
z //продолжаем программу
Введите количество строк и столбцов:3
Введите матрицу:
9
1
2
8
3
7
4
6
5
Res:-183

(38.6k баллов)
0

я разобрался, балы ваши но можно сделать было проще гораздо

0

Рад за Вас. Я лишь добавил свою задачу к Вашей. А что касается продолжения работы программы, так это было сделано установкой ветки "иначе" к Вашему условному оператору. На мой взгляд, совсем не сложно.

0

я понял там смотри у меня была проблема с continue а так всё супер пупер

0

помоги пж мне надо чтобы прога посчитала пример типо a+2 и сохранила ответ и не выводила типо сохранила в переменную b

0

а всё

0

понял

0

вот помоги просто ты хорош http://znanija.com/task/20532182