a b c d e=r (здесь 0<a,b,c,d,e,r=<100) вместо пробелов надо подставить знаки операций +,-,* скобок нету поэтому все решение идет по приоритету сперва * а потом все остальное . задание напишите функцию которая подобрала знаки операции чтобы пример былбы правильный, если можно пару вариантов то достаточно найти один вариант, а если ненашли нечего то тогда результат (невозможно). алгоритм долженбыть описан в функции которая запись
function sprendimas(a, b, c, d, e, r: integer): string;
начальные данные a = 1 b = 2 c = 3 d = 4 e = 5 r = 27 результат 1+2*3+4*5=27
все так ясно понятно но я столкнулся с проблемами немогу цифру в формат string зделать точнене незнаю как сделать и потом чтобы тип данных k:char; k:='+'; чтобы записать как простой плюс 5k6=11
немогу цифру в формат string зделать точнене незнаю как сделать и потом чтобы тип данных k:char; k:='+'; чтобы записать как простой плюс 5k6=11
Ничего не понял, но по-моему, то, что ты хочешь сделать не получится, Паскаль все-таки компилятор, а не интерпретатор. Придется делать по-другому. Меня сейчас больше интересует, чем то решение, которое было приведено по ссылке (для тебя же, заметь) тебе не подходит?
andriano
27.12.2009 21:47
Число переводится в строку процедурой str. Дальше - тоже не понял, что тебе нужно.
Если мои телепатические способности восстановились, то, вероятно:
const op : string = '+-*/'; ... writeln(a,op[k],b,'=',r);
Здесь операциям приписаны коды: + 1 - 2 * 3 / 4
maksimla
28.12.2009 18:21
а да точно а я и забыл о том задании уже чего то. а как сделать это все обратным методом?
program Bevarde0; var a, b, c, d, e, r:integer;
function sprendimas(a, b, c, d, e, r: integer): string; const nPar=5; nOper=3; Opers: array[0..nOper-1]of string=('+','-','*');
var Par,Par0: array[0..nPar-1]of Integer; Oper,Oper0: array[0..nPar]of integer; r0,t,i,m: Integer; s:string;
begin Par0[0] := a; Par0[1] := b; Par0[2] := c; Par0[3] := d; Par0[4] := e; r0:=r; for i:=0 to nPar do Oper0[i]:=0; repeat Par:=Par0; Oper:=Oper0;
for i:=1 to nPar-1 do case Oper[i] of 2: begin Par[i]:=Par[i-1] * Par[i]; Par[i-1]:=0; Oper[i]:=Oper[i-1] end; end; r:=Par[0]; for i:=1 to nPar-1 do case Oper[i] of 0: r:=r+Par[i]; 1: r:=r-Par[i] end; if r=r0 then begin str(Par0[0],s); sprendimas:=s; for i:=1 to nPar-1 do begin sprendimas:=sprendimas+Opers[Oper0[i]]; str(Par0[i],s); sprendimas:=sprendimas+s; end; str(r,s); sprendimas:=sprendimas+'='+s; end; t:=1; for i:=1 to nPar do begin t:=Oper0[i]+t; Oper0[i]:=t mod nOper; t:=t div nOper; end until Oper0[nPar]=1; if sprendimas='' then sprendimas:='nevozmozen'; end;
Ты все-таки напиши условие задачи, ибо по неправильно написанной программе можно лишь установить, что она делает, но никак не что она далала бы, если бы была написана правильно.
maksimla
29.12.2009 16:08
эта все задачка вводим чисел 5 и одно число это ответ и мы должны найти знаки + - и * чтобы подставить между 5 числами эта программка работает правильно но надо обратным методом написать( возвратным методом может так) это метод когда идешь в перед и попал в тупик неправильное решение то тогда возвращаешься на один шаг назад и идешь дальше
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.