Уравнение - Pascal (248551)

Узнай цену своей работы

Формулировка задачи:

Помогите задания с областной олимпиады! -------------------------------------------------------------------------------------------------------------------------------- Леди написала в свою электронный тетрадь по математике уравнение, содержащее три целых числа, знак равенства и одну из четырех основных арифметических операций (сложение, вычитание, умножение и деление) .К сожалению, вирус уничтожил знак равенства и операции с ноутбука Леди.Помогите леди , восстановить уравнение из трех целых чисел. --------------------------------------------------------------------------------------------------------------------------------

Входные данные

В первой строке входного файла находится три целых неотъемлемых числа, меньших 100.Гарантируют, что решение всегда будет существовать.

Выходные данные

Выведите найденное уравнения в файл output.Если есть несколько решений,выведите любое из них.

пример

(equation.in) [equation.out]

(5 3 8) | [5+3=8] (5 15 3)| [5=15/3]

Решение задачи: «Уравнение»

textual
Листинг программы
var
 f: text;
 a: array[1..3] of word;
 i: byte;
 s, t: string;
 
begin
 assign(f,'input.txt');
 reset(f);
 readln(f,s);
 close(f);
 t:=s;
 s:=s+' ';
 i:=1;
 while s<>'' do
  begin
   val(copy(s,1,pos(' ',s)-1),a[i]);
   delete(s,1,pos(' ',s));
   inc(i);
  end;
 s:='';
 i:=1;
  if a[1]+a[2]=a[3] then s:='+' else
   if a[1]-a[2]=a[3] then s:='-' else
    if a[1]*a[2]=a[3] then s:='*' else
     if a[2]<>0 then
      if a[1]/a[2]=a[3] then s:='/';
 if s='' then
  begin
  i:=2;
   if a[1]=a[2]+a[3] then s:='+' else
    if a[1]=a[2]-a[3] then s:='-' else
     if a[1]=a[2]*a[3] then s:='*' else
      if a[3]<>0 then
       if a[1]=a[2]/a[3] then s:='/';
  end;
  if i=1 then
   begin
    insert(s,t,pos(' ',t));
    delete(t,pos(' ',t),1);
    insert('=',t,pos(' ',t));
    delete(t,pos(' ',t),1);
   end else
   begin
    insert('=',t,pos(' ',t));
    delete(t,pos(' ',t),1);
    insert(s,t,pos(' ',t));
    delete(t,pos(' ',t),1);
   end;
 assign(f,'output.txt');
 rewrite(f);
 write(f,t);
 close(f);
end.

Объяснение кода листинга программы

  1. В первой части кода открывается файл input.txt для чтения, считывается строка и сохраняется в переменной s.
  2. Затем вторая часть кода проверяет, является ли строка пустой. Если нет, то с помощью функции pos определяется позиция первого пробела в строке, и с помощью функции copy из строки s в массив a записывается подстрока до первого пробела. Затем с помощью функции delete удаляется подстрока из строки s до первого пробела, и увеличивается индекс i. Этот процесс повторяется до тех пор, пока строка s не станет пустой.
  3. Если строка s пустая, то в третьей части кода проверяется, является ли первая подстрока равной второй или третьей подстроке. Если да, то в переменную s записывается соответствующий оператор.
  4. Если первая подстрока равна второй или третьей подстроке, то в четвертой части кода проверяется, является ли третья подстрока равной нулю. Если нет, то в пятой части кода проверяется, является ли первая подстрока равной третьей подстроке, деленной на вторую. Если да, то в переменную s записывается оператор деления.
  5. Если первая подстрока равна второй или третьей подстроке, то в шестой части кода проверяется, является ли третья подстрока равной нулю. Если нет, то в седьмой части кода проверяется, является ли первая подстрока равной третьей подстроке, деленной на вторую. Если да, то в переменную s записывается оператор деления.
  6. Если первая подстрока не равна второй или третьей подстроке, то в восьмой части кода проверяется, является ли третья подстрока равной нулю. Если нет, то в девятой части кода проверяется, является ли первая подстрока равной третьей подстроке, деленной на вторую. Если да, то в переменную s записывается оператор деления.
  7. Если первая подстрока не равна второй или третьей подстроке, то в десятой части кода проверяется, является ли третья подстрока равной нулю. Если нет, то в одиннадцатой части кода проверяется, является ли первая подстрока равной третьей подстроке, деленной на вторую. Если да, то в переменную s записывается оператор деления.
  8. В двенадцатой части кода проверяется, является ли i равным 1. Если да, то в тринадцатой части кода в переменную t добавляется оператор равенства, а в четырнадцатой части кода в переменную t добавляется знак пробела. Затем в пятнадцатой части кода в переменную t добавляется значение переменной s, а в шестнадцатой части кода в переменную t добавляется знак пробела.
  9. Если i не равно 1, то в семнадцатой части кода в переменную t добавляется оператор равенства, а в восемнадцатой части кода в переменную t добавляется знак пробела. Затем в девятнадцатой части кода в переменную t добавляется значение переменной s, а в двадцатой части кода в переменную t добавляется знак пробела.
  10. В последней части кода открывается файл output.txt для записи, и в него записывается значение переменной t. Затем файл закрывается.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4 из 5
Похожие ответы