Уравнение - 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.
Объяснение кода листинга программы
- В первой части кода открывается файл input.txt для чтения, считывается строка и сохраняется в переменной s.
- Затем вторая часть кода проверяет, является ли строка пустой. Если нет, то с помощью функции pos определяется позиция первого пробела в строке, и с помощью функции copy из строки s в массив a записывается подстрока до первого пробела. Затем с помощью функции delete удаляется подстрока из строки s до первого пробела, и увеличивается индекс i. Этот процесс повторяется до тех пор, пока строка s не станет пустой.
- Если строка s пустая, то в третьей части кода проверяется, является ли первая подстрока равной второй или третьей подстроке. Если да, то в переменную s записывается соответствующий оператор.
- Если первая подстрока равна второй или третьей подстроке, то в четвертой части кода проверяется, является ли третья подстрока равной нулю. Если нет, то в пятой части кода проверяется, является ли первая подстрока равной третьей подстроке, деленной на вторую. Если да, то в переменную s записывается оператор деления.
- Если первая подстрока равна второй или третьей подстроке, то в шестой части кода проверяется, является ли третья подстрока равной нулю. Если нет, то в седьмой части кода проверяется, является ли первая подстрока равной третьей подстроке, деленной на вторую. Если да, то в переменную s записывается оператор деления.
- Если первая подстрока не равна второй или третьей подстроке, то в восьмой части кода проверяется, является ли третья подстрока равной нулю. Если нет, то в девятой части кода проверяется, является ли первая подстрока равной третьей подстроке, деленной на вторую. Если да, то в переменную s записывается оператор деления.
- Если первая подстрока не равна второй или третьей подстроке, то в десятой части кода проверяется, является ли третья подстрока равной нулю. Если нет, то в одиннадцатой части кода проверяется, является ли первая подстрока равной третьей подстроке, деленной на вторую. Если да, то в переменную s записывается оператор деления.
- В двенадцатой части кода проверяется, является ли i равным 1. Если да, то в тринадцатой части кода в переменную t добавляется оператор равенства, а в четырнадцатой части кода в переменную t добавляется знак пробела. Затем в пятнадцатой части кода в переменную t добавляется значение переменной s, а в шестнадцатой части кода в переменную t добавляется знак пробела.
- Если i не равно 1, то в семнадцатой части кода в переменную t добавляется оператор равенства, а в восемнадцатой части кода в переменную t добавляется знак пробела. Затем в девятнадцатой части кода в переменную t добавляется значение переменной s, а в двадцатой части кода в переменную t добавляется знак пробела.
- В последней части кода открывается файл output.txt для записи, и в него записывается значение переменной t. Затем файл закрывается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д