Андрей68456532367
08.01.2021 18:03

Вот есть составить калькулятор с любым направлением в паскале, но при этом сделать так что бы он выдавал ошибку при делении на ноль, а так же мог перезапускаться не выключая программы (цикл) и вот у меня проблема с тем что он не принимает ошибки с делением на ноль, я ошибки не вижу вот код паскаля var first,second,falls: real; stop,z: byte; begin falls: =0; stop: =0; writeln('введите первую переменную'); readln(first); while stop=0 do begin writeln ('выберете знак уравнения? '); writeln (' '); writeln ('[ ]'); writeln ('[ ]'); writeln (''); writeln ('[ 1-плюс ]'); writeln ('[ 2-минус ]'); writeln ('[ 3-умножить ]'); writeln ('[ 4-делить ]'); writeln (''); readln (z); writeln('введите вторую переменную.'); readln (second); if z=1 then first: =first+second else if z=2 then first: =first-second else if z=3 then first: =first*second; if z=4 then if second=0 then falls: =1 else first: =first/second; if falls=1 then stop: =1 else writeln ('ответ'); writeln (first); writeln ('хотите остановится? '); writeln ('0-нет, любые другие-да'); readln (stop); falls: =0-1 end; if falls=1 then writeln('просим прощения, но вы допустили ошибку, вы поделили на ноль,просим вас пересмотреть пример и попытаться занова, приносим свои изменения') else writeln ('ваш окончательный ответ'); writeln (first); end.

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
Superstylegir
21.02.2023 20:20
1. "Традиционный" вариант
//PascalABC.Net 3.0, сборка 1052
function NOD(a, b: longint): longint;
begin
  while a <> b do if a > b then a := a - b else b := b - a;
  NOD := a
end;

var
  f: Text;
  tNOD: longint;

begin
  Assign(f, 'input.txt'); Reset(f);
  if not Eof(f) then Readln(f, tNOD);
  var n: longint := 1;
  while (not Eof(f)) and (n > 0) and (tNOD > 1) do
  begin
    Readln(f, n);
    if n <> 0 then tNOD := NOD(tNOD, n)
  end;
  Close(f);
  Assign(f, 'output.txt'); Rewrite(f);
  Writeln(f,tNOD);
  Close(f)
end.

2. "Современный" вариант
//PascalABC.Net 3.0, сборка 1052
function NOD(a, b: integer): integer;
begin
  while a <> b do if a > b then a -= b else b -= a;
  Result := a
end;

var
  tNOD: integer := 0;
  n: integer;

begin
  foreach var sn in Readlines('input.txt') do
  begin
    n := StrToInt(sn);
    if tNOD = 0 then tNOD := n
    else
    if n = 0 then break else tNOD := NOD(tNOD, n);
  end;
  WriteAllText('output.txt', IntToSTR(tNOD));
end.

Пример файла input.txt находится во вложении, контрольный результат 4096
0,0(0 оценок)
Ответ:
seva0311
03.05.2021 12:36

const

 AOper: array [0..3] of string = ('+', '-', '*', '/');

var

 a, b, Oper: Integer;

 r: Real;

begin

 Randomize;    // инициализация датчика случайных чисел

 a := Random (1001);

 b := Random (1001);

 Oper := Random (4);

 case Oper of

 0: r := a + b;

 1: r := a - b;

 2: r := a * b;

 3:if b <> 0 then begin

     r := a / b;

   end else begin

     WriteLn ('Произошла ошибка при делении на ноль');

     Exit;

   end

 else r := -1;

 end;

 WriteLn (a);

 WriteLn (b);

 WriteLn (Aoper [Oper]);

 if (r >= 0) and (r - Trunc (r) = 0) then begin   // если в результате получилось положительное целое число

   WriteLn ('yes');

   WriteLn (r :6 :0);

 end else

   WriteLn (' no');

 ReadLn;

end.

Объяснение:

r - Trunc (r) // это выделение дробной части числа

0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота